여러 서버에서 동일한 스크립트를 실행해야하는 상황에서 Ansible을 이용하여 간단하게 진행하는 방법을 설명하려고 합니다.
sudo apt install ansible
접근하고자 하는 서버의 정보를 hosts 파일에 ip또는 host를 등록
호스트 서버에 접근을 위한 설정
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
---
- 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
ansible-playbook -i <hosts 경로> <playbook 파일>
위와 같이 작성하고 실행하면 여러서버에서 한번에 스크립트를 실행 시킬 수 있습니다.