본문 바로가기

네트워크/네트워크 자동화

[5] Ansible 활용하기 - 작업을 단계별로 검증하여 실행하기(playbook 활용)

playbook : 사용자가 원하는 내용을 정리해둔 파일

- 사전적 의미 : 작전, 계획

 

playbook의 특성 : 멱등성(연산을 여러 번 실행해도 똑같은 결과를 가져옴)

<example>

[root@AnsibleServer ~]# echo -e "[lauren]\n192.168.35.13" >> /etc/ansible/hosts

echo -e : "" 안의 특수 문자를 이해하기 위함(\n 같은 것)

[root@AnsibleServer ~]# vi /etc/ansible/hosts
[nginx]
192.168.35.11
192.168.35.12
192.168.35.13
[lauren]
192.168.35.13

가장 아래에 추가됨을 알 수 있음

 

위를 한 번 더 실행하면..?

[nginx]
192.168.35.11
192.168.35.12
192.168.35.13
[lauren]
192.168.35.13
[lauren]
192.168.35.13

밑에 똑같이 한 줄 더 생김

 

YAML 파일을 만들어보자

[root@AnsibleServer ~]# vi lauren.yml


- name: Ansible_vim
  hosts: localhost

  tasks:
    - name : Add ansible hosts
      blockinfile:
          path: /etc/ansible/hosts
          block: |
             [lauren]
             192.168.35.13

아래에 추가 설명할 예정!!

YAML 파일을 실행해보자!!

root@AnsibleServer ~]# ansible-playbook lauren.yml

PLAY [Ansible_vim] *************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Add ansible hosts] *******************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
[root@AnsibleServer ~]# vi /etc/ansible/hosts

## db-[99:101]-node.example.com
[nginx]
192.168.35.11
192.168.35.12
192.168.35.13
# BEGIN ANSIBLE MANAGED BLOCK
[lauren]
192.168.35.13
# END ANSIBLE MANAGED BLOCK

가장 아래부분에 추가 된 것을 확인 할 수 있음!!!

 

만약, 한 번 더 실행한다면??? 또 밑에 추가될까???

 

정답은 NO!!!

[root@AnsibleServer ~]# ansible-playbook lauren.yml

 

PLAY [Ansible_vim] *************************************************************

 

TASK [Gathering Facts] *********************************************************

ok: [localhost]

 

TASK [Add ansible hosts] *******************************************************

ok: [localhost]

 

PLAY RECAP *********************************************************************

localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

바뀐게 없다고 나옴!!!

 

[root@AnsibleServer ~]# vi /etc/ansible/hosts

여기 들어가서 확인해봐도 바뀐게 없음!! 이게 바로 멱등성이다. 아무리 여러 번 실행해도 결과가 항상 똑같은 것!!

 

 

 

YAML이란?

mark up 언어 처럼 모듈 등을 쉽게 작성해서 사용할 수 있음

예제

name : 파일의 이름

hosts : 실행될 곳

tasks : 작업하는 내용

name : task의 이름

bloackinfile : 모듈의 이름

block을 시작하는 시작 포인트 " | ", 끝은 정하지 않음