# ansible 설치(맥 brew 기준)
brew install ansible
# ansible 은 내부적으로 ssh 로 사용하고 있어 ssh-keygen 을 생성해서 등록해 둔다.
# 관련 내용은 https://ysoftman.blogspot.kr/2009/04/linux-ssh.html 포스트 참고
# 접속할 대상 서버 호스트를 명시한 inventory 라는 파일을 작성한다.
# 디폴트로 /usr/local/etc/ansible/hosts 파일을 참고 하지만 -i 로 inventory 를 지정할 수 있다.
vi host
[testhost1]
192.168.0.1
192.168.0.2
192.168.0.2
[testhost2]
192.168.0.3
# 설치하면 ansible 과 ansible-playbook 을 사용할 수 있다.
# ansible 은 ad hoc(설정을 저장하지 않고 즉석에서 명령어 옵션으로 처리) 방식
# 대상 호스트에 command 모듈로 쉘 명령 실행하기
ansible -i host testhost1 -u ysoftman -m command -a "ls -ahl"
# 소스 https://github.com/ysoftman/test_code/tree/master/ansible
ansible -i host testhost1 -u ysoftman -m command -a "ls -ahl"
# 소스 https://github.com/ysoftman/test_code/tree/master/ansible
# ansible-playbook 은 .yml 설정을 이용한는 방식
# .yml(playbook)에 어떤 서버에서 어떤 계정으로 어떤 작업을 할것인지 등을 명시한다.
# 자세한 내용은 http://docs.ansible.com/ansible/playbooks_best_practices.html
vi myplaybook.yml
- name: hello world by ansible# inventory 에 명시된 호스트그룹, inventory 의 모든 호스그룹이라면 all 로 명시
hosts: testhost1
# 작업을 수행하는 계정
user: ysoftman
# 대상 서버에서 수행할 작업들 명시
tasks:
- name: print hello world
shell: echo "hello world" > helloworld.txt
tags: [ helloworld, myname ]
- name: current path
shell: pwd > pwd.txt
tags: mylocation
- name: who am i
shell: whoami > whoami.txt
tags: myname
- name: clear all files
shell: rm -fv helloworld.txt pwd.txt whoami.txt
tags: clearall
# 작업 수행하기
# 옵션 참고
# -v ~ -vvv 는 단계에 따라 많은 verbose
# -C 를 사용하면 변경부분은 적용하지 않고 체크만 수행한다.
# 서버 2곳에 "hellow world" 내용의 helloworld.txt 파일이 생성
ansible-playbook -i host myplaybook.yml -t helloworld -vv
# 서버 2곳에 whoami 출력결과 내용의 whoami.txt 파일이 생성
ansible-playbook -i host myplaybook.yml -t myname -vv
ansible-playbook -i host myplaybook.yml -t helloworld -vv
ansible-playbook -i host myplaybook.yml -t myname -vv
# 참고
http://docs.ansible.com/ansible/intro_adhoc.html
http://docs.ansible.com/ansible/YAMLSyntax.html
https://github.com/ansible/ansible-examples
https://ko.wikipedia.org/wiki/YAML