이번 포스팅의 주제는 ansible-playbook의 사용법에 대한 내용이다.
Ansible playbook은 반복, 재사용 가능하며 구성 관리 및 다중 머신의 설정, 배포 시스템을 제공하는 언어다.
YAML 형식으로 되어있다.
이전 포스팅에서 정리했듯이 본래 앤서블로 실현하고 싶은 것은 다음의 3가지다.
- 환경 설정 및 구축 절차를 통일된 형식으로 기술할 수 있음
- 매개 변수 등 환경의 차이를 관리할 수 있음
- 실행 전에 변경되는 부분을 파악할 수 있음
위의 내용들을 예제를 통해 확인해보도록 한다.
1. Git 설치
$ sudo yum -y install git
2. ansible-playbook-sample 다운로드
$ git clone https://github.com/devops-book/ansible-playbook-sample.git
3. paybook을 실행하여 nginx를 실행
$ cd ansible-playbook-sample # Clone 한 디렉토리로 이동
$ ansible-playbook -i development site.yml
이 샘플에서는 nginx 설치와 index.html을 갱신하고 있다.
결과를 보면 ok, changed 등과같은 TASK에 대한 결과가 나온다.
TASK에 명시된 상태들에 대해서 설명하자면 다음과 같다.
TASK 상태
표시 | 의미 |
ok | 결과가 이미 예상했던되로 된 경우를 의미함. (아무것도 할 필요가 없었기 때문에 실행하지 않음) |
skipped | 명시적인 조건에 의해 Task 자체가 Skip 되었음. 예를들어 Task1이 성공적으로 수행되었을 경우 Task2는 수행하지 않음 |
changed | Task 실행에 의해 예상했던 대로 변경되었음 |
unreachable | 원래의 실행 대상 호스트에 통신이 도달하지 않았음 |
failed | 실행 대상 호스트에 도달했지만, 조작이 어떤 이유로 실패함 |
즉, 위의 결과에서 의미하는 바는
Gathering Facts 작업, install epel 작업, install nginx 작업은 이미 조건을 만족했기 때문에 수행하지 않고 넘어간 것이고,
nginx replace 작업, nginx start 작업은 site.yml에서 명시한 내용이 반영이 된 것이다.
다음으로 -i 옵션은 운영환경을 기본 설정 정보를 쓰지않고, 별도의 정보를 사용하는 옵션이다.
ansible-playbook 명령어의 호스트는 기본적으로 /etc/ansible/hosts에 정의되어있는데, 이것을 사용하지 않고 inventory file에서 지정한 그룹을 사용하기위해 -i 옵션을 사용한다.
여기서 inventory file은 호스트 정보를 관리할 수 있게 재료 보관함 역할을 하는 파일이다.
위와 같이 ansible-playbook-sample 폴더 구성요소를 살펴 보면 development라는 파일이있고, 이 파일은 아래와 같이 webservers에 localhost라는 정보를 저장하고 있다.
(webservers는 development-webservers정보를 상속 받고 있음)
4. index.html 을 이용하여 상태 확인
$ curl localhost
실행결과를 살펴보면 현재 nginx가 웹사이트를 잘 동작시키고 있는것을 확인할 수 있다.
5. ansible-playbook-sample / site.yml 살펴보기
$ cat site.yml
hosts
webservers는 별도 정의되어 있는 Inventory File 내부에서 webservers의 Host Group에 대한 처리를 실행한다는 의미이다. Inventory File이란 서버들에 대한 접속정보를 모은 파일이다.
become
대상 호스트에 root 사용자로 작업을 수행하도록 지정
connection
대상 호스트가 ssh대신 local 연결을 하는 것을 의미함
roles
common과 nginx 처리 수행을 지정함
site.yml의 내용을 살펴본 결과, 과정 3에서 실행했던 ansible-playbook 명령어가 동작하며 남긴 로그와 동일한 내용이 실행된 것을 확인할 수 있다.
다음 포스팅에서는 dry-run모드에 대해서 살펴보도록 한다.
참고자료
[1] IT 운용 체제 변화를 위한 데브옵스 | 2019 | 키와무라 세이고 ... | 링크
'클라우드 컴퓨팅 & NoSQL > Ansible' 카테고리의 다른 글
[앤서블(Ansible)] Serverspec 사용법 (0) | 2021.04.15 |
---|---|
[앤서블(Ansible)] ansible-playbook dry-run 모드 (0) | 2021.04.15 |
[앤서블(Ansible)] Ansible의 기본적인 사용법 (nginx) (0) | 2021.04.13 |