본문 바로가기
IT Knowledge/IaC

Ansible Playbook(플레이북) 설명 및 예시

by Seok. 2021. 7. 26.
반응형

앤서블의 진정한 능력은 스크립팅 능력에 있다.

앤서블에서 스크립트를 플레이북 이라고 부르는데, YAML 파일에서 표현된다.

(앤서블은 표준 YAML파서를 사용한다)

 

플레이북(playbook) = 플레이(play) 들의 모음

 

모든 플레이 = 호스트(Host) + 테스크(Task)

(누구(Host)에게 무슨 작업(Task) 할것인가!)

 

 

플레이북은 크게 3개의 부분으로 나뉜다.

  • 타깃 부분 : 실행 장비, 어떤사용자
  • 변수 부분 : 사용 가능한 변수 정의
  • 태스크 부분 : 실행하고 싶은 액션

 

[타깃 부분]

줄의 처음은 대시( - ) 시작해야 한다.

플레이가 실행될 장비는 hosts 값으로 설정

앤시블 플레이북에 장비에 연결할 사용자가 누구인지 알린다.

 

[변수 부분]

전체 플레이에 적용할 변수를 정의 하는 부분.

이후 유지보수를 쉽게 있도록 변수를 설정할 있다.

인벤토리에서 설정한 팩트가 override 있다.

vars_files 지시자를 사용해서 외부 YAML 파일에서도 읽어들일 있다.

Ex) vars_files:

/conf/data-SYD.yml

/conf/cluster-sql.yml

 

대화형으로 사용자에게 변수의 값을 입력받을 수도 있다.

Ex) vars_prompt:

- name: 'https_passphrase'

  prompt: 'Key Passphrase'

  private: yes

 

Http_passpharse 입력된 데이터가 저장될 .

사용자는 key passphrase 입력할 .

Private: yes 사용자가 입력할 암호값을 스크린으로 출력하지 않는다.

 

 

내장변수

플레이북에서 항상 사용 가능한 일부 변수를 정의한다.

매개변수 설명
Hostvars : 호스트이름 / : 변수이름
Inventory_hostname 현재 호스트의 전체 도메인 이름(ex. Myhost.example.com)
Inventory_hostname_short 도메인이 없는 호스트 이름(ex. Myhost)
Group_name 현재 호스트가 구성원으로 있는 모든 그룹 리스트
Group 그룹의 구성원인 호스트 리스트
{"all" : […], "web" : […], "group1" : […]}
Ansible_check_mode 체크모드에서 실행중일때 true
Ansible_play_batch 일괄 배치중인 인벤토리 호스트 이름 리스트
Ansible_play_host 현재 플레이에서 동작중인 모든 인벤토리 호스트 이름 리스트
Ansible_version 앤서블 버전 정보

 

[태스크 부분]

원하는 순서대로 수행할 액션 목록을 포함하는 부분이다.

 

Name : 어떤 플레이 인지 설명(제목 or 설명 으로 보면 된다.)

Become : true 인경우, 루트(root) 사용자가 되어 작업을 실행한다.

 

* 모듈

 앤서블에 의해 패키징된 액션

 (앤서블에는 2000 이상의 모듈이 포함되어 있다. )

Apt / shell / register / msg / copy / file / service / template …

 


 

플레이북 실행하기

$ansible-playbook example.yaml

 

 

플레이북 실행 결과.

Task : [example] ***********************************

Change : [testserver]

Ok : [testserver]

 

Change 호스트 값의 상태와 매개변수의 차이가 있으니, 변경 적용하는 액션을 했다!

OK 호스트 값과 매개변수의 상태가 동일하다. 따라서 아무 액션도 하지 않는다!

 


[플레이북 예시]

 

(ex. OS 버전 확인)

(Ex. Become 정말 root 실행되는가? 확인. )

결과 확인

반응형

'IT Knowledge > IaC' 카테고리의 다른 글

Ansible Playbook Handler 사용법 유의사항  (1) 2021.07.26
Ansible Playbook YAML 작성방법  (0) 2021.07.26
Ansible 설정 파일(Hosts, ansible.cfg)  (0) 2021.07.22
Ansible-Vault 사용하기  (0) 2021.04.27
Ansible 사용법(모듈)  (0) 2021.04.25

댓글