앤서블 플레이북 작성 및 실습

728x90
반응형

출처 : 앤서블로 시작하는 인프라 자동화, https://www.youtube.com/watch?v=NKVhB7yiDVw

 

 

첫 번째 플레이북 작성하기

  • 플레이북은 YAML 포맷으로 작성된 텍스트 파일이며, 일반적으로 .yml 이라는 확장자를 사용하여 저장된다.
  • 플레이북은 대상 호스트나 호스트 집합에 수행할 작업을 정의하고 이를 실행한다. 이때, 특정 작업 단위를 수행하기 위해 모듈을 적용한다.

 

플레이북 작성하기

cd my-ansible

 

프로젝트 디렉토리로 이동한다.

 

vi first-playbook.yml

---
- hosts: all
  tasks:
    - name: Print message
      debug:
        msg: Hello Ansible World!

 

첫 번째 플레이북을 작성한다. vi 에디터를 이용해 first-playbook.yml 파일을 만들고 위 내용을 작성한다.

이 플레이북은 debug 모듈을 사용하여 Hello Ansible World! 라는 문자열을 출력한다.

도커와 쿠버네티스를 만들 때에도 설명했지만 YAML은 들여쓰기를 통해 구분하므로 탭 문자는 쓰지 않는 것이 좋다.

 

cp first-playbook.yml error.yml

 

앤서블은 플레이북 실행 시 자체적으로 제공하는 모듈을 사용했는지 그리고 공백은 잘 들여쓰기가 되었는지 확인하기 위해 문법을 체크할 수 있는 옵션을 제공한다.

에러가 발생하는 경우를 확인하기 위해 error.yml 이라는 복사본을 하나 생성하고 vi 에디터로 들여쓰기를 한 군데 일부러 틀리게 만들어두자.

 

ansible-playbook --syntax-check first-playbook.yml
ansible-playbook --syntax-check error.yml

 

ansible-playbook 명령어에 --syntax-check 옵션을 추가한 다음 실행할 플레이북 yml 파일명을 입력하면 문법체크를 수행한다.

 

특별한 오류가 없다면 위 그림의 first-playbook.yml 처럼 나오지만, 만약 오류가 있으면 붉은색 글씨로 어떤 작업에 문법 오류가 있는지 위치를 보여준다.

 

 

첫 번째 플레이북 실행하기

  • 작성한 플레이북을 실행해본다.
  • 플레이북을 실행할 때는 ansible-playbook 명령어를 사용한다.
  • 환경 설정 파일(ansible.cfg)가 존재하는 프로젝트 디렉토리 내에서 실행할 경우, ansible-playbook 명령어와 함께 실행하고자 하는 플레이북 파일명을 입력하면 된다.

 

 

플레이북 실행하기

ansible-playbook first-playbook.yml

 

프로젝트 디렉토리에서 ansible-playbook 명령어와 실행하려는 yml 파일명을 입력하면 플레이북을 실행하게 된다.

 

실행해보면 모든 관리 노드(tnode1, tnode2, tnode3)가 Hello Ansible World! 를 출력하는 것을 확인할 수 있다.

 

 

플레이북 실행 점검하기

  • --check 옵션을 사용해 플레이북을 실행하기 전에 플레이북의 실행 상태를 미리 점검할 수 있다.
  • 이 옵션을 사용하면 앤서블에서 플레이북을 실행해도 관리 대상 호스트는 실제로 변경되지 않고 어떤 내요이 변경될지만 미리 알 수 있다.

 

vi restart-service.yml

---
- hosts: all
  tasks:
    - name: Restart sshd service
      ansible.builtin.service:
        name: sshd
        state: restarted

 

vi 에디터를 사용해 sshd 서비스를 재시작하는 restart-service.yml이라는 파일을 생성한다.

 

해당 플레이북은 서비스의 상태를 관리하는 데 사용되는 ansible.builtin.service 모듈을 이용하여 서비스를 재시작한다.

 

ansible-playbook --syntax-check restart-service.yml

 

문법 체크를 수행한다.

 

ansible-playbook --check restart-service.yml

 

--check 옵션을 사용해 플레이북을 실행하기 전에 제대로 실행될지 미리 점검한다.

--check 옵션을 사용하면 앤서블이 플레이북을 실행해도 관리 대상 호스트는 실제로 변경되지 않고 어떤 내용이 변경될지만 미리 알 수 있다.

 

실행해보면 ssh 서비스가 재시작되어 서비스 상태가 변경될 예정이므로 Restart sshd service 태스크에서 changed 라는 문구를 확인할 수 있다.

 

ansible-playbook restart-service.yml

 

--check 옵션을 제거하고 ansible-playbook을 실행한다.

 

ssh root@192.168.100.5 -p 22
cat /var/log/messages

 

tnode1-centos 서버에 접속해서 /var/log/messages 를 출력해 실제로 sshd 서비스가 재시작되었는지 확인한다.

 

 

앤서블 로그를 확인할 수 있으며 앤서블 로그와 함께 OpenSSH 서비스가 재시작된 것을 확인할 수 있다.

 

 

728x90
반응형