728x90
when 조건을 사용한 nginx 설치
when 조건 사용
- when 조건을 사용하면, 코드가 스스로 앤서블 노드의 운영체제를 파악하고 조건에 맞는 패키지 관리자를 호출하여 nginx를 설치함
- facts에서 제공하는 ansible_pkg_mgr과 ansible_distribution 인자 값을 사용하여 운영체제 정보 확인
1. nginx_install_w_when.yml 파일 실행
CentOS는 CentOS에 해당하는 태스크를 수행하고, 우분투는 우분투에 해당하는 태스크를 수행하는 것을 확인할 수 있음
---
- name: Install nginx on the nodes
hosts: nodes
become: yes
tasks:
- name: install epel-release for CentOS
action: "{{ ansible_pkg_mgr }} name=epel-release state=latest"
when: ansible_distribution == 'CentOS'
- name: install nginx web server for CentOS
action: "{{ ansible_pkg_mgr }} name=nginx state=present"
when: ansible_distribution == 'CentOS'
- name: upload default index.html for web server
get_url: url=https://www.nginx.com dest=/usr/share/nginx/html/ mode=0644
when: ansible_distribution == 'CentOS'
- name: start nginx web server
service: name=nginx state=started
when: ansible_distribution == 'CentOS'
- name: install nginx web server for Ubuntu
action: "{{ ansible_pkg_mgr }} name=nginx state=present update_cache=yes"
when: ansible_distribution == 'Ubuntu'
- name: upload default index.html for web server
get_url: url=https://www.nginx.com dest=/usr/share/nginx/html/
mode=0644 validate_certs=no
when: ansible_distribution == 'Ubuntu'
2. 주의: 우분투 버전 및 nginx.com의 설정에 따라 에러가 발생할 수 있음
=> get_url의 url=https://www.nginx.com을 url=http://www.apache.com으로 변경
3. url 수정 부분
27 - name: upload default index.html for web server
28 get_url: url=https://www.apache.com dest=/usr/share/nginx/html/
29 mode=0644 validate_certs=no
30 when: ansible_distribution == 'Ubuntu'
4. 정상 실행 확인
CentOS가 설치된 노드
Ubuntu가 설치된 노드
5. 설치한 nginx 삭제
nginx_remove_w_when.yml 파일 실행
[vagrant@ansible-server ~]$ anp nginx_remove_w_when.yml
---
- name: Remove nginx on the nodes
hosts: nodes
become: yes
tasks:
- name: remove epel-release for CentOS
action: "{{ ansible_pkg_mgr }} name=epel-release state=absent"
when: ansible_distribution == 'CentOS'
- name: remove nginx web server for CentOS
action: "{{ ansible_pkg_mgr }} name=nginx state=absent"
when: ansible_distribution == 'CentOS'
- name: remove nginx web server
action: "{{ ansible_pkg_mgr }} name=nginx state=absent autoremove=yes"
when: ansible_distribution == 'Ubuntu'
728x90
'Ansible' 카테고리의 다른 글
220613_4_앤서블_심화_플레이북 동적 구성-if (0) | 2022.06.13 |
---|---|
220613_3_앤서블_심화_플레이북 동적 구성-Include_tasks (0) | 2022.06.13 |
220613_1_앤서블_심화_플레이북 동적 구성-FACT(s) (0) | 2022.06.13 |
220610_1_앤서블_심화_자동으로 authorized_keys 등록 (0) | 2022.06.10 |
220609_2_앤서블_심화_Known_hosts 자동 등록 (0) | 2022.06.10 |