Ansible Playbook - When
FACT 인자를 사용하고 When을 사용하여 OS를 구분이 가능
tasks:
- name: Install nginx web server
action: "\{\{ansible_pkg_mgr\}\} name = nginx state=present update_cache=yes"
when: ansible_distribution == 'Ubuntu'
- name: Install nginx web server2-1
action: "\{\{ansible_pkg_mgr\}\} name = epel-release state=latest"
when: ansible_distribution == 'CentOS'
- name: Install nginx web server2-2
action: "\{\{ansible_pkg_mgr}} name = nginx state=latest"
when: ansible_distribution == 'CentOS'
이렇게하면 OS 별로 구분하여 작업을 처리할 수 있다.
조금 더 편리한 기능을 살펴보면 include_tasks
이 존재하는데, 이는 yaml
파일을 포함할 수 있다.
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'
이때 각각의 yaml
파일들에는 해당 OS에서 수행할 작업 (현재는 nginx 설치와 실행)을 담당한다.
Reference
인프런 조훈님 강의 - 앤서블을 깊이있게 활용하기