Ansible(5)
Ansible(5)
대형 프로젝트 관리
호스트 패턴으로 호스트 선택
- 애드혹 명령(Ad-Hoc 명령)
- ansible ‘*.example.com’ -m ping
플레이북
1 2 3
- name: Test hosts: 'ansible*, 192.168.10.*' tasks: ....
파일 포함하기 및 가져오기
- import_playbook
1
2
3
4
- name: Playbook
import_playbook: hosts.yml
vars:
....
- import_tasks, include_tasks
import_tasks: 테스크 가져오기
- 같은 점: 조건문과 함께 사용하는 것이 가능하다.(반복문과 함께 사용할 수 없다.)
- 다른 점: 플레이북 사용시 포함된 작업 내용을 나열하지 않는다.
include_tasks: 태스크 포함하기
- 같은 점: 조건문과 함께 사용하는 것이 가능하다.(반복문과 함께 사용할 수 없다.)
- 다른 점: 플레이북 실행시 포함된 작업 내용을 나열한다.
1
2
3
4
5
6
7
8
9
10
11
- name: Playbook
hosts: ...
tasks:
- name: task1
include_tasks: task/task1.yml
vars:
....
- name: task2
import_task: task/task2.yml
vars:
....
역할 관리
역할 구조
- 개요
- 역할(role): 미리 만들어진 플레이북의 묶음, 배포하는 단위
- 역할 사용
- 직접 생성하는 경우(ansible-galaxy init ROLE)
- rhel-system-roles 패키지의 역할을 사용하는 경우
- Ansible Galaxy 웹사이트에서 역할 받아서 사용하는 방법
- 역할 디렉토리 구조
- 역할 사용하기
vi playbook.yml
1
2
3
4
5
6
7
8
9
10
- hosts: web1
roles:
- role1
- role2
#or
- hosts: web1
roles:
- role: role1
- {role: role1, var1: value1, var2: vaule2}
- 역할 종속성 정의
vi meta/main.yml
1
2
dependencies:
- {role: apache, port: 8080}
- 실행 순서 제어
vi playbook.yml
1
2
3
4
5
6
7
8
9
- name: playbook
hosts: web1
pre_tasks:
roles:
tasks:
post_tasks:
- include_role
vi playbook.yml
1
2
3
4
- name: playbook
hosts: web1
tasks:
시스템 역할
- rhel-system-roles 패키지
- 디렉토리 구조
- mkdir -p roles && cd roles
- ansible-galaxy init myrole
- 불필요한 디렉토리 삭제
- 필요한 디렉토리 및 파일 생성(ex: lib, bin)
- ansible.cfg(roles_path) 설정
- vi ansible.cfg
[defaults]
roles_path=roles:/usr/share/ansible/roles:/etc/ansible/roles
- vi ansible.cfg
- 역할 생성
- README.md 파일 »»> cd roles/myrole ; vi README.md
- meta/main.yml »»» vi meta/main.yml
- 테스트 파일 »»>
- 변수 파일
- 정적 파일
- 동적 파일(템플릿)
- 기타 필요한 핸들러
- vi roles/myrole/tasks/main.yml
앤서블 갤럭시
This post is licensed under CC BY 4.0 by the author.