Ansible Playbook에 선택문/반복문은 Attribute 형태를 사용하여 적용
(他 프로그래밍 언어와 다른 특성)
명령이 기술된 순서로 순차적으로 수행하는 구조
조건에 따라 명령의 실행 순서를 변경할 수 있는 구조 -> 선택문
특정 명령을 일정 횟수 동안 반복해서 수행하는 구조 -> 반복문
예시 1) loop.yml
---
- name: loop
hosts: private
gather_facts: False
tasks:
- name: loop basic
debug:
msg: "{{ item }}"
loop:
- a
- b
- c
- name: loop basic 2
debug:
msg: "{{ item.user }} [ {{ item.group }} ]"
loop:
- user: user1
group: group1
- user: user2
group: group2
- name: non loop 1
debug:
msg: "user1 [ group1 ]"
- name: non loop 2
debug:
msg: "user2 [ group2 ]"
예시 2) create_file.yml
---
- name: create file
hosts: private
gather_facts: False
vars:
file_path: /home/ec2-user/work_touch
id: ansible
tasks:
- name: create directory
file:
path: "{{ file_path }}"
state: directory
- name: confirm file
stat:
path: "{{ file_path }}/{{ id }}.txt"
register: result
- name: create file
file:
path: "{{ file_path }}/{{ item }}.txt"
state: touch
loop:
- "{{ id }}1"
- "{{ id }}2"
- "{{ id }}3"
테스트는 표현식 평가 및 True / False 반환
변수를 테스트하기 위한 테스트문
<변수> is failed : 작업 실패
<변수> is changed : 작업 성공적 실행 및 변경 수행
<변수> is succeeded : 작업 성공적 실행
<변수> is skipped : 조건문에 의해 실행되지 X
when: <변수 [ | (자료형) ]> <조건 연산자> 값
<변수 | (자료형) > 표현은 변수형 변환 의미, | 다음에 형변환을 원하는 자료형 기입, 숫자형으로 변환할 때 사용
static (정적, 고정적) re-use
dynamic (동적, 유동적) re-use
예시 3) install_pack_web.yml
---
- include: webserver.yml
함수 (function)와 비슷한 성격; 단위 기능 실행 (참고)
Handlers 섹션에 task 정의, task 섹션과 같은 level
Handler 호출은 notify: 키워드에 해당 Handler 이름 명시, 모듈과 같은 level
include(포함)의 확장 개념, 역할에 따라 roles 폴더에 필요한 파일들을 별도로 생성하여 사용
tasks/main.yml : 역할 실행 task 저장
handlers/main.yml : handler 저장
vars/main.yml : 변수 저장
드디어 오늘로 Ansible이 끝이 났다.
늘 그렇듯 막판가서 진도와 난이도가 와다다다 하면서 급상승해서 따라가기 힘든 경향이 있었지만, 최소한 이번만큼은 어떻게든 이해하고 따라가보려 노력했던 것 같다. 적어도 나로써는.
드디어 다음주부터는 본격적으로 도커에 들어간다. 난 이번주 내내 다뤘던 앤서블의 응용이 도커다, 정도로만 이해하고 있었는데 알고보니 그래도 앤서블 정도면 전통적인 방식의 수동적인(?) 배포법이라는데서 적잖은 충격을 받았었다. 내 입장에서는 앤서블도 충분히 혁신이었는데 말이지. 도커와 쿠버네티스 정도면 대체 얼마나 혁신적으로 자동화가 이뤄지는건지 이제 다음주면 알 수 있겠지?
갈수록 머리가 조금씩 IT에 맞춰서 변해져가는게 느껴지는데 나쁘진 않다.