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

인프런 조훈님 강의 - 앤서블을 깊이있게 활용하기



© 2022. by minkuk

Powered by minkuk