[K8S Deploy Study by Gasida] - Ansible 기초 - 반복문
[K8S Deploy Study by Gasida] - Ansible 기초 - 반복문
ansible.builtin.service
단순 반복문
- loop 키워드를 작업에 추가하면 작업을 반복해야 하는 항목의 목록을 값으로 사용.
- 해당하는 값을 사용하려면 item 변수를 이용할 수 있다.
1
2
3
4
5
6
7
8
9
10
---
- hosts: all
tasks:
- name: Check sshd and rsyslog state
ansible.builtin.service:
name: ""
state: started
loop:
- vboxadd-service # ssh
- rsyslog
실행 하기
1
ansible-playbook check-services.yml
결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PLAY [all] ****************************************************************************
TASK [Gathering Facts] ****************************************************************
ok: [tnode2]
ok: [tnode1]
ok: [tnode3]
TASK [Check sshd and rsyslog state] ***************************************************
ok: [tnode3] => (item=vboxadd-service)
ok: [tnode1] => (item=vboxadd-service)
ok: [tnode2] => (item=vboxadd-service)
ok: [tnode3] => (item=rsyslog)
ok: [tnode1] => (item=rsyslog)
ok: [tnode2] => (item=rsyslog)
PLAY RECAP ****************************************************************************
tnode1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
tnode2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
tnode3 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
loop문에 사용하는 아이템을 변수에 저장하기
1
2
3
4
5
6
7
8
9
10
11
12
13
---
- hosts: all
vars:
services:
- vboxadd-service # ssh
- rsyslog
tasks:
- name: Check sshd and rsyslog state
ansible.builtin.service:
name: ""
state: started
loop: ""
실행하기
1
ansible-playbook check-services.yml
ansible.builtin.file
여러 항목을 loop 문에서 사전 목록으로 사용할 수 도 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
- hosts: all
tasks:
- name: Create files
ansible.builtin.file:
path: ""
mode: ""
state: touch
loop:
- log-path: /var/log/test1.log
log-mode: '0644'
- log-path: /var/log/test2.log
log-mode: '0600'
ansible.builtin.shell
Register 변수 사용
- Register 변수는 반복 실행되는 작업의 출력을 캡처할 수 있다. 이 키워드를 이용하여 실행 결과를 result 변수에 저장한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
---
- hosts: localhost
tasks:
- name: Loop echo test
ansible.builtin.shell: "echo 'I can speak '"
loop:
- Korean
- English
register: result
- name: Show result
ansible.builtin.debug:
var: result
결과
- 아래와 같이 result에 결과 가 저장되어있는 것을 볼 수 있다.
- 하지만 그중에서 우리는 results값만 뽑아내고 싶다.
파일 수정
- debug 모듈에 loop 키워드를 사용하여 result.results를 아이템 변수로 사용한다.
- 해당 아이템의 stdout의 값을 출력할 때는 item.stdout이라는 변수로 결과값을 출력한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
- hosts: localhost
tasks:
- name: Loop echo test
ansible.builtin.shell: "echo 'I can speak '"
loop:
- Korean
- English
register: result
- name: Show result
ansible.builtin.debug:
msg: "Stdout: "
loop: ""
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.



