loop 키워드를 사용해서 동일한 모듈을 사용하는 작업을 구현할 수 있어. 예시를 보면서 천천히 알아보자.
- name: mail server check
service:
name: postfix
state: started
- name: mail server check2
service:
name: dovecot
state: started
위 처럼 service 모듈을 두 번 사용하는 play 를 아래처럼 바꿔줄 수 있어
- name: mail server check
service:
name: "{{ item }}"
state: started
loop:
- postfix
- dovecot
loop 자체에도 변수를 넣을 수 있어
vars:
mail_services:
- postfix
- dovecot
tasks:
- name: mail server check
service:
name: "{{ item }}"
state: started
loop: "{{ mail_services }}"
또 각 항목을 Dictionary 형태로 구성할 수도 있어
- user:
name: "{{ item['name'] }}"
state: present
groups: "{{ item['groups'] }}"
loop:
- name: user01
groups: wheel
- name: user02
groups: root
반복 실행되는 작업의 출력을 register 키워드를 사용해서 캡쳐할 수 있어.
- hosts: server1
tasks:
- name: user create
yum:
name: httpd
state: present
register: user_result
- name: output
debug:
var: user_result
위 playbook 파일을 실행시키면 아래 출력을 볼 수 있어