Ansible을 이용한 스크립트 실행 방법

여러 서버에서 동일한 스크립트를 실행해야하는 상황에서 Ansible을 이용하여 간단하게 진행하는 방법을 설명하려고 합니다.

  1. Ansible 설치
    간단하게 apt install로 설치
sudo apt install ansible

  1. 접근하고자 하는 서버의 정보를 hosts 파일에 ip또는 host를 등록

  2. 호스트 서버에 접근을 위한 설정
    3-1. public key 생성
    아래 명령어로 퍼블릭키를 생성하고 ./ssh 경로에 생성된 id_rsa의 값을 접근하고자 하는 호스트 서버의 authorized_keys에 등록한다

ssh-keygen -t rsa

3-2. private key 지정
AWS의 EC2접근을 위해 패스워드 설정을 하는 경우도 있지만 보안상 pem키를 이용하는 경우가 많음
그럴때는 ansible_ssh_private_key_file 을 이용해서 경로를 지정함

[testsvr:vars]
ansible_ssh_private_key_file = ~/test.pem

[testsvr]
10.10.6.144
  1. playbook 작성
    로컬에 존재하는 스크립트파일을 리모트 서버로 가져가서 실행하는 playbook을 yaml 파일로 작성
--- 
- name: "Script Start" 
  hosts: all
  become: yes 
  become_method: sudo 
  vars: 
     local_path: /home/ubuntu
     remote_path: /home/ubuntu
  tasks: 
    - name: "Script Send" 
      copy: 
        src: "{{ local_path }}/script.sh" 
        dest: "{{ remote_path }}/script.sh" 
        owner: ubuntu
        group: ubuntu
        mode: '0755' 
    - name: "Script run" 
      ignore_errors: yes 
      shell: 
        cmd: | 
          {{ remote_path }}/script.sh 
  1. playbook 실행
ansible-playbook -i <hosts 경로> <playbook 파일>

위와 같이 작성하고 실행하면 여러서버에서 한번에 스크립트를 실행 시킬 수 있습니다.

좋은 웹페이지 즐겨찾기