Ssoon
[ Part-2 ] 앤서블 기본 사용법 - 반복문 본문
CloudNet@ 가시다님이 진행하는 Ansible 101 Study
"앤서블로 시작하는 인프라 자동화" (한빛미디어) 로 진행
✅ 반복문
💠 단순 반복문
- sshd 서비스와 rsyslog 서비스의 상태 체크 playbook
---
- hosts: all
tasks:
- name: check sshd service
ansible.builtin.service:
name: sshd
state: started
- name: check rsyslog state
ansible.builtin.service:
name: rsyslog
state: started
- ansible-playbook 실행
- loop 반복문 적용
- loop 키워드 아래 체크할 서비스 sshd 와 rsyslog 나열
- service 모듈 name 에는 item 변수 사용
- hosts: all
tasks:
- name: check sshd and rsyslog state
ansible.builtin.service:
name: "{{ item }}"
state: started
loop:
- sshd
- rsyslog
- ansible-playbook 실행
- loop 문에 사용하는 item 을 변수에 저장하면 loop키워드에 해당 변수 사용 가능
- 체크한 sshd 와 rsyslog 를 services 라는 변수에 목록으로 저장
- 태스크의 loop 문에서는 앞에서 선언한 serviecs 변수 사용
- hosts: all
vars:
services:
- sshd
- rsyslog
tasks:
- name: check sshd and rsyslog state
ansible.builtin.service:
name: "{{ item }}"
state: started
loop: "{{ services }}"
- ansible-playbook 실행
💠 사전 목록에 의한 반복문
- 이름, 패스워드 등의 여러 항목을 loop문에서 사전목록으로 사용
- loop 키워드 아래에 log-path 변수와 log-made 변수 여러 건 입력
- ansible.builtin.file 모듈 ▶ loop문을 통해 추가한 변수 item['log-path'], item[''log-made"] 참조
- hosts: all
tasks:
- name: create files
ansible.builtin.file:
path: "{{ item['log-path'] }}"
mode: "{{ item['log-made'] }}"
state: touch
loop:
- log-path: /var/log/test1.log
log-made: '0644'
- log-path: /var/log/test2.log
log-made: '0600'
- ansible-playbook 실행
- 노드에 접속 ▶ 확인
💠 반복문과 Register 변수 사용
- Register 변수 : 반복 실행되는 작업의 출력을 캡처 ▶ 반복 실행되는 작업들 확인
- ansible.builtin.shell ▶ 'i can speak ~" 메시지 출력
- loop 키워드 ▶ korea , english 아이템 나열
- register 키워드 ▶ 실행 결과를 result 변수 저장
- ansible.builtin.debug 모듈로 확인
---
- hosts: localhost
tasks:
- name: loop echo test
ansible.builtin.shell: "echo 'i can speak {{ item }}'"
loop:
- korean
- english
register: result
- name: show result
ansible.builtin.debug:
var: result
- ansible-playbook 실행
- result 내의 results 의 실행 결과 ▶ 배열 형식
- results의 특정 값을 플레이북에서 사용 ▶ loop문을 이용
- ansible.builtin.debug 모듈에 loop 키워드 사용 ▶ result.results를 아이템 변수로 사용
- 아이펨의 stdout의 값을 출력할 때는 item.stdout 변수로 결과값 출력
- hosts: localhost
tasks:
- name: loop echo test
ansible.builtin.shell: "echo 'i can speak {{ item }}'"
loop:
- korean
- english
register: result
- name: show result
ansible.builtin.debug:
msg: "stdout: {{ item.stdout }}"
loop: "{{ result.results }}"
- ansible-playbook 실행
- loop 로 사용된 item 에 저장된 값과 ansible.builtin.debug 모듈을 이용해 출력한 메시지 확인
'Ansible 101 Study' 카테고리의 다른 글
[ Part-2 ] 앤서블 기본 사용법 - 핸들러 및 작업 실패 처리 (0) | 2024.01.20 |
---|---|
[ Part-2 ] 앤서블 기본 사용법 - 조건문 (0) | 2024.01.20 |
[ Part-2 ] 앤서블 기본 사용법 - 팩트 (0) | 2024.01.14 |
[ Part-2 ] 앤서블 기본 사용법 - Ansible Vault (0) | 2024.01.13 |
[ Part-2 ] 앤서블 기본 사용법 - 변수 (0) | 2024.01.08 |
Comments