반응형
Ansible의 role(롤)은 Playbook(플레이북)을 여러 파일로 분할하는 메커니즘이다.
여러 파일로 분할함으로써 플레이북을 간단하게 작성할 수 있고, 재사용이 쉬워 진다.
[Role의 Default Path]
Default path : /etc/ansible/roles
Default Path 재정의 방법
Ansible.cfg 파일 수정
[default] roles_path = ~/ansible_roles |
[Role의 구조]
각 역할들을 정의하고, 이들을 Directory별로 분리한다.
Example 롤
Directory | 설명 |
Roles/example/tasks/main.yml | 테스크 |
Roles/example/files/ | 호스트에 업로드할 파일 |
Roles/example/templates/ | Jinja2 템플릿 파일 |
Roles/example/handlers/main.yml | 핸들러 |
Roles/example/vars/main.yml | 재정의 할 수 없는 변수 |
Roles/example/defaults/main.yml | 재정의 가능한 기본 변수 |
Roles/example/meta/main.yml | 롤에 대한 의존정보 |
[Role의 장점]
큰 프로젝트를 관리하기 쉽다.
=> 분할 함으로써, 여러 관리자가 동시에 개발이 편하다.
=> 컨텐츠를 그룹화 하여 다른 사용자와 공유가 쉽다
Role에 대한 소스를 가져올 수 있다.
=> Public Ropository : ansible galaxy 사이트(https://galaxy.ansible.com/)
[Role 사용법 예시]
(ex. mezzanine-across-hosts.yml)
- Name: deploy postgres on vagrant Hosts: db Vars_files: - secret.yml Roles: - role: database database_name: "{{ mezzanine_proj_name }}" database_user: "{{ mezzanine_proj_name }}" - Name: deploy mezzanine on vagrant Hosts: web Vars_files: - secret.yml Roles: - role: mezzanine database_host:"{{ hostvars.db.ansible_eth1.ipv4.address }}" live_hostname: 192.168.33.10.xip.io domains: - 192.168.33.10.xip.io - www.192.168.33.10.xip.io |
[사전테스크 & 사후테스크]
롤 이전에 실행되는 태스크 목록 : pre-tasks
롤 이후에 실행되는 태스크 목록 : post-tasks
Ex. 사전에 apt 캐시 업데이트 & 사후에 slack 채널에 알림 발송
- Name: deploy mezzanine on vagrant Hosts: web Vars_files: - secret.yml Pre_tasks: - name: update the apt cache apt: update_cache=yes Roles: - role: mezzanine database_host:"{{ hostvars.db.ansible_eth1.ipv4.address }}" live_hostname: 192.168.33.10.xip.io domains: - 192.168.33.10.xip.io - www.192.168.33.10.xip.io Post_tasks: - name: notify slack local_action: > slack domain=xxx.slack.com token={{ slack_token }} msg="web server {{ inventory_hostname }} configured" |
반응형
'IT Knowledge > IaC' 카테고리의 다른 글
Ansible Python 버전 업그레이드 2.7 to 3.6 (0) | 2021.08.10 |
---|---|
Python upgrade 2.7 to 3.6(CentOS 7) (0) | 2021.08.10 |
Ansible Playbook Handler 사용법 유의사항 (1) | 2021.07.26 |
Ansible Playbook YAML 작성방법 (0) | 2021.07.26 |
Ansible Playbook(플레이북) 설명 및 예시 (0) | 2021.07.26 |
댓글