2024.04.26 ansible 7일차(Chapter04) - Learning Ansible 2.7
2024.04.26 ansible 7일차 (Chapter04)
- 교재: Learning Ansible 2.7 - Third Edition (packtpub) (github)
- (ansible playbook 빠른 실행)
- lab용 client container 설정하기 (test01) (centos ws01/ws02/db01) (debian ws03)
여기까지 했음
- https://subscription.packtpub.com/book/cloud-and-networking/9781789954333/6/ch06lvl1sec34/working-with-conditionals
- /home/opc/Learning-Ansible-2.X-Third-Edition-master/Chapter04
한일
Gathering Facts 기반으로 when 연산자를 사용해서 실행여부를 설정한다.
..
- name: Ensure the httpd package is updated
yum:
name: httpd
state: latest
become: True
when: ansible_os_family == 'RedHat'
- name: Ensure the apache2 package is updated
apt:
name: apache2
state: latest
become: True
when: ansible_os_family == 'Debian'
..
when 연산자는 변수도 설정할 수 있다. (파리미터: –extra-vars=”변수내용”)
---
- hosts: all
remote_user: vagrant
vars:
backup: True
tasks:
- name: Copy the crontab in tmp if the backup variable is true
copy:
src: /etc/crontab
dest: /tmp/crontab
remote_src: True
when: backup
변수를 사용할때는 반드시 선언되어 있는지 확인해야 한다. (예시. when: 변수 is not defined or 변수 == “”)
---
- hosts: all
remote_user: ansible
vars:
backup: True
tasks:
- name: Check if the backup_folder is set
fail:
msg: 'The backup_folder needs to be set'
when: backup_folder is not defined or backup_folder == “”
- name: Copy the crontab in tmp if the backup variable is true
copy:
src: /etc/crontab
dest: '/crontab'
remote_src: True
when: backup
다른 코드를 재사용해서 유지관리하기 쉬운 코드를 작성할 수 있음.
- inclode: FILENAME.yaml
- inclode: FILENAME.yaml variable1="value1" variable2="value2"
핸들러 작업
-
복잡한 배포 처리 4/26 구간 완료 15% (link) - notify 에 해당하면 핸들러 작업은 플레이북 끝에서 실행됩니다.
- why? 구성을 변경할때 마다 재시작하는 것이 아니라 미자막에만 1번 재시작도록 설정한다
프로젝트 구성
├── ansible.cfg : 폴더 구조에서 파일을 찾을 수 있는 위치를 Ansible에 설명하는 작은 구성 파일
├── hosts : 이전 장에서 이미 본 호스트 파일
├── master.yaml : 전체 인프라를 정렬하는 플레이북
├── playbooks : 플레이북과 그룹 관리용 폴더가 포함됩니다. 한번만 실행함
│ ├── firstrun.yaml
│ └── groups
│ ├── database.yaml
│ └── webserver.yaml
└── roles : 여기에는 필요한 모든 역할이 포함됩니다.
├── common : 모든 서버에 대해 수행되어야 하는 모든 작업
│ └── tasks : roles의 필수 폴더
| └── main.yaml : 실행할 작업 목록이 될 파일
│ └── templates : 템플릿을 저장
| └── motd : 사용되는 파일을 저장
├── database
│ └── tasks
| └── main.yaml
└── webserver
여기까지 했음
- https://subscription.packtpub.com/book/cloud-and-networking/9781789954333/6/ch06lvl1sec41/transforming-a-playbook-into-a-role
- /home/opc/Learning-Ansible-2.X-Third-Edition-master/Chapter04