728x90
운영체제를 구분하여 한 번에 설치
include_tasks란?
- 각 리눅스에 필요한 태스크를 정의한 yml 파일을 호출하여 실행
- 구조적인 태스크 관리가 가능함
include_tasks를 사용하는 이유
- 불필요하게 실행되는 태스크들을 관리하기 위해서
=> when을 사용하여 자동으로 노드의 종류를 구분하여 설치하는 경우 CentOS 태스크에서는 우분투의 태스크가 불필요하게 실행되고, Ubuntu 태스크에서는 CentOS의 태스크가 불필요하게 실행되므로 include_tasks를 이용
include_tasks를 사용하지 않고 웹 서버 설치 (nginx, apache)
CentOS 태스크가 실행될 때 > Ubuntu 노드들에 불필요한 태스크가 실행되는 것을 확인할 수 있음
Ubuntu 태스크가 실행될 때 > CentOS 노드들에 불필요한 태스크가 실행되는 것을 확인할 수 있음
include_tasks를 사용하여 웹 서버 설치 (nginx, apache)
1) CentOS.yml
- name: install epel-release
action: "{{ ansible_pkg_mgr }} name=epel-release state=latest"
- name: install nginx web server
action: "{{ ansible_pkg_mgr }} name=nginx state=present"
- name: upload default index.html for web server
get_url: url=https://www.nginx.com dest=/usr/share/nginx/html/ mode=0644
- name: start nginx web server
service: name=nginx state=started
2) Ubuntu.yml
- name: install nginx web server
action: "{{ ansible_pkg_mgr }} name=nginx state=present update_cache=yes"
- name: upload default index.html for web server
get_url: url=https://www.apache.com dest=/usr/share/nginx/html/
mode=0644 validate_certs=no
3) nginx_install_w_include_tasks.yml
---
- name: Install nginx on the nodes
hosts: nodes
become: yes
tasks:
- name: nginx for CentOS
include_tasks: CentOS.yml
when: ansible_distribution == 'CentOS'
- name: nginx for Ubuntu
include_tasks: Ubuntu.yml
when: ansible_distribution == 'Ubuntu'
4) 설치
[vagrant@ansible-server install]$ anp nginx_install_w_include_tasks.yml
CentOS 태스크가 실행될 때 > include를 사용하여 작성한 CentOS.yml 파일을 호출함 > CentOS 노드들에서만 태스크가 실행 됨
Ubuntu 태스크가 실행될 때 > include를 사용하여 작성한 Ubuntu.yml 파일을 호출함 > Ubuntu 노드들에서만 태스크가 실행 됨
웹 브라우저에서 확인
CentOS 노드로 접속 172.30.1.101
Ubuntu 노드로 접속 172.30.1.201
설치한 웹 서버 삭제
1) CentOS_remove.yml
- name: remove epel-release
action: "{{ ansible_pkg_mgr }} name=epel-release state=absent"
- name: remove nginx web server
action: "{{ ansible_pkg_mgr }} name=nginx state=absent"
2) Ubuntu_remove.yml
1 - name: remove nginx web server
2 action: "{{ ansible_pkg_mgr }} name=nginx state=absent autoremove=yes"
3) nginx_remove_w_include_tasks.yml
1 ---
2 - name: Remove nginx on the nodes
3 hosts: nodes
4 become: yes
5
6 tasks:
7 - name: nginx for CentOS
8 include_tasks: CentOS_remove.yml
9 when: ansible_distribution == 'CentOS'
10
11 - name: nginx for Ubuntu
12 include_tasks: Ubuntu_remove.yml
13 when: ansible_distribution == 'Ubuntu'
14
~
4) 삭제
[vagrant@ansible-server remove]$ anp nginx_remove_w_include_tasks.yml
728x90
'Ansible' 카테고리의 다른 글
220621_1_앤서블_심화_handler (0) | 2022.06.22 |
---|---|
220613_4_앤서블_심화_플레이북 동적 구성-if (0) | 2022.06.13 |
220613_2_앤서블_심화_플레이북 동적 구성-when 조건 (0) | 2022.06.13 |
220613_1_앤서블_심화_플레이북 동적 구성-FACT(s) (0) | 2022.06.13 |
220610_1_앤서블_심화_자동으로 authorized_keys 등록 (0) | 2022.06.10 |