Ansible Playbook - If
If
만약 운영체제가 계속 추가된다면?
tasks:
- name: nginx for Ubuntu
include_tasks: Ubuntu.yml
when: ansible_distribution == 'Ubuntu'
- name: nginx for CentOS
include_tasks: CentOS.yml
when: ansible_distribution == 'CentOS'
- name: nginx for FreeBSD
include_tasks: FreeBSD.yml
when: ansible_distribution == 'FreeBSD'
- name: nginx for Debian
include_tasks: Debian.yml
when: ansible_distribution == 'Debian'
생각보다 꽤 귀찮은 일이 될 것!
하지만 이는 조건절 if
를 사용하면 깔끔하게 처리가 가능하다.
vars:
lnx_name: "\{\{ 'Ubuntu' if ansible_distribution == 'Ubuntu' else 'CentOS' if ansible_distribution == 'CentOS' else 'Just Linux'\}\}"
tasks:
- name: nginx for Any Linux
include_tasks: "\{\{ lnx_name \}\}.yml"
vars
는 변수를 정의하는 곳에 lnx_name
변수에 저장한다.
when
을 사용할 때는 Task
가 Node의 수 X 2
만큼 수행해어야하나, 현재는 Task가 한개이기 때문에 Node의 수 X 1
만큼의 Task만 수행해야하기 때문에 훨씬 더 적은 Task
로 작업을 수행할 수 있다는 장점이 있다.
Reference
인프런 조훈님 강의 - 앤서블을 깊이있게 활용하기