레이블이 adhoc인 게시물을 표시합니다. 모든 게시물 표시
레이블이 adhoc인 게시물을 표시합니다. 모든 게시물 표시

ansible 사용하기

# ansible 은 시스템 설정이나 배포등과 같은 관리 작업을 편리하게 해주는 자동화 툴정도로 생각할 수 있다.
# 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

[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-playbook 은 .yml 설정을 이용한는 방식
# .yml(playbook)에 어떤 서버에서 어떤 계정으로 어떤 작업을 할것인지 등을 명시한다.
# 대상 서버에 hello world 출력하는 플레이북 작성(들여쓰기시 2칸 공백을 사용해야 한다.)
# 자세한 내용은 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


# 참고
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