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
인프런 조훈님 강의 - 앤서블을 깊이있게 활용하기