하위 디렉터리 | 기능 |
---|---|
defaults | role이 사용될 때 덮어쓸 수 있는 role의 가변 변수 값 (우선순위가 낮으며, 플레이북에서 변경할 수 있음) |
files | role 작업에서 참조한 정적 파일 |
handlers | role의 핸들러 정의 |
meta | 작성자, 라이센스, 플랫폼 및 옵션, role 종속성을 포함한 role에 대한 정보 |
tasks | role의 작업 정의 |
templates | role 작업에서 참조할 Jinja2 템플릿 |
tests | role을 테스트하는 데 사용할 수 있는 인벤토리와 test.yml 플레이북 |
vars | role의 불변 변수 값 (우선순위가 높으며, 플레이북에서 변경되지 않음) |
$ ansible-galaxy role init my-role
- Role my-role was created successfully
$ tree ./my-role/
my-role/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
8 directories, 8 files
role.yml
---
- hosts: all
tasks:
- name: Print start play
ansible.builtin.debug:
msg: "Let's start role play"
- name: Install Service by role
ansible.builtin.import_role:
name: my-role
vars:
service_title: Httpd
---
- hosts: all
roles:
- role: my-role
service_title: "Httpd Web"
- role: my-role2
tasks:
- name: Print finish role play
ansible.builtin.debug:
msg: "Finish role play"
---
- hosts: all
pre_tasks:
- name: Print Start role
ansible.builtin.debug:
msg: "Let's start role play"
roles:
- role: my-role
- role: my-role2
tasks:
- name: Curl test
ansible.builtin.uri:
url: http://tnode1
return_content: true
register: curl_result
notify: Print result
changed_when: true
post_tasks:
- name: Print Finish role
ansible.builtin.debug:
msg: "Finish role play"
handlers:
- name: Print result
ansible.builtin.debug:
msg: "{{ curl_result.content }}"
failed_when
과 changed_when
은 플레이북이나 작업의 결과를 제어하는데 사용되는 조건문failed_when
changed_when
- name: 예시 작업
command: /some/command
register: result
failed_when: "'ERROR' in result.stderr"
changed_when: "result.rc == 2"
failed_when
은 result.stderr
에 'ERROR' 문자열이 있을 때 작업을 실패로 간주한다.changed_when
은 result.rc
(반환 코드)가 2일 때 작업이 변경을 일으킨 것으로 간주한다.$ ansible-galaxy role search postgresql --platforms Ubuntu
$ ansible-galaxy role info geerlingguy.postgresql
$ ansible-galaxy role install -p roles geerlingguy.postgresql
$ ansible-galaxy role list -p roles
$ ansible-galaxy role remove geerlingguy.postgresql
$ rm -r roles
$ ansible-galaxy collection list
$ ansible-galaxy collection install openstack.cloud:2.1.0
$ ansible-galaxy collection list openstack.cloud
# /root/.ansible/collections/ansible_collections
Collection Version
--------------- -------
openstack.cloud 2.1.0
$ ansible-galaxy collection list openstack.cloud
# /usr/lib/python3/dist-packages/ansible_collections
Collection Version
--------------- -------
openstack.cloud 2.1.0
$ rm -rf /usr/lib/python3/dist-packages/ansible_collections/openstack*
$ ansible-galaxy collection list openstack.cloud