일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- chatGPT
- 리다이렉션
- docker image
- firewalld
- docker network
- journalctl
- lvcreate
- yum
- permission
- tar
- 엑셀파일명변경
- newbingai
- docker
- 프로세스
- HTTPD
- 랜카드인식불량
- vagrant kubernetes
- ansible
- pvcreate
- Kubernetes
- 날짜변경
- ssh
- M365필터
- 같은폴더
- swapon
- chmod
- MSBing
- vgcreate
- nmcli
- mount
- Today
- Total
becool
20210804 (수) ansible 탬플릿, 역할 본문
Jinja2 Template
- Python 기반의 template 모듈로 동적인 컨텐츠를 템플릿을 통해 생성할 수 있음
Jinja2 문법
{{ 변수 or 표현식 }}
{% 제어문 %}
{# 주석(comment) #}
##### jinja2 탬플릿 예제 ##### 파일명 : template_exercise1.yaml 템플릿 : exercise1.j2 출력 파일 형태 Date : 2021-08-04 xx:xx:xx Title : Jinja2 Template test Author : Hong gildong -------- Hello Jinja2 Template This host is ansible-node01 (xxx.xxx.xxx.xxx) system user: ansible_user [user@ansible-server 20210804]$ cat template_exercise1.yaml --- - name: jinja2 template exam hosts: all # become: vars: remote_dir: /etc/ansible/facts.d/ Author : Hong gildong tasks: - name: template: src: exercise1.j2 dest: /tmp/jinja2_test.txt owner: ansible_user group: ansible_user mode: "0644" - name: command: cat /tmp/jinja2_test.txt register: jinja2 - name: debug: msg: "{{ jinja2 }}" [user@ansible-server 20210804]$ cat exercise1.j2 Date: {{ ansible_facts['date_time']['date'] }} {{ ansible_facts['date_time']['time'] }} Title: Jinja2 Template test Author : "{{ Author }}" ---------- Hello Jinja2 Template This host is {{ ansible_facts['hostname'] }} {{ ansible_facts['enp0s8']['ipv4']['address'] }} system user: {{ ansible_facts['env']['USER'] }} [user@ansible-server 20210804]$ ansible all -m command -a "cat /tmp/jinja2_test.txt" 192.168.56.11 | CHANGED | rc=0 >> Date: 2021-08-04 15:32:39 Title: Jinja2 Template test Author : "Hong gildong" ---------- Hello Jinja2 Template This host is ansible-node01 192.168.56.11 system user: ansible_user |
역할 (Role)
Role 디렉터리 구조
├── defaults → Role 의 변수 중 초기 값이 지정되야 하는 기본 변수
│ └── main.yaml
├── files → Role에서 파일 배포 시 파일이 위치하는 경로
│ └── main.yaml
├── handlers → Role의 handler가 저장되는 경로
│ └── main.yaml
├── meta → Role의 meta data가 저장되는 경로
│ └── main.yaml
├── tasks → Role의 task가 위치하는 경로
│ └── main.yaml
├── templates → Role이 배포하는 template 이 위치하는 경로
│ └── main.yaml
└── vars → Role의 변수가 저장되는 경로
└── main.yaml
meta 디렉터리에는 종속성 (dependency)이 정의되게 됨
##### role 예제 ##### ##### role과 task가 같은 playbook안에 있으면 role이 먼저 실행됨. ##### [user@ansible-server 20210804]$ cat roles/test_role/tasks/main.yaml --- - name: test_role first task debug: msg: test_role first task - name: request hostname command: cat /etc/hostname register: result_hostname - name: print hostname debug: msg: "{{ result_hostname.stdout }}" [user@ansible-server 20210804]$ cat 0804_test_role_playbook2.yaml --- - name: "test_role playbook 2" hosts: all tasks: - name: Playbook Initial task debug: msg: Playbook Initial task - name: Playbook Second task command: date register: result_date - name: Playbook final task debug: msg: "{{ result_date.stdout }}" roles: - role: test_role [user@ansible-server 20210804]$ ansible-playbook 0804_test_role_playbook2.yaml PLAY [test_role playbook 2] ******************************************************************************************** TASK [Gathering Facts] ************************************************************************************************* ok: [192.168.56.12] ok: [192.168.56.13] ok: [192.168.56.11] TASK [test_role first task] ******************************************************************************************** ok: [192.168.56.11] => { "msg": "test_role first task" } ok: [192.168.56.12] => { "msg": "test_role first task" } ok: [192.168.56.13] => { "msg": "test_role first task" } TASK [test_role : request hostname] ************************************************************************************ changed: [192.168.56.13] changed: [192.168.56.12] changed: [192.168.56.11] TASK [test_role : print hostname] ************************************************************************************** ok: [192.168.56.11] => { "msg": "ansible-node01" } ok: [192.168.56.12] => { "msg": "ansible-node02" } ok: [192.168.56.13] => { "msg": "ansible-node03" } TASK [Playbook Initial task] ******************************************************************************************* ok: [192.168.56.11] => { "msg": "Playbook Initial task" } ok: [192.168.56.12] => { "msg": "Playbook Initial task" } ok: [192.168.56.13] => { "msg": "Playbook Initial task" } TASK [Playbook Second task] ******************************************************************************************** changed: [192.168.56.11] changed: [192.168.56.12] changed: [192.168.56.13] TASK [Playbook final task] ********************************************************************************************* ok: [192.168.56.11] => { "msg": "Wed Aug 4 17:58:26 KST 2021" } ok: [192.168.56.12] => { "msg": "Wed Aug 4 17:58:26 KST 2021" } ok: [192.168.56.13] => { "msg": "Wed Aug 4 17:58:26 KST 2021" } PLAY RECAP ************************************************************************************************************* 192.168.56.11 : ok=7 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 192.168.56.12 : ok=7 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 192.168.56.13 : ok=7 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
first_role 생성
[first_role]
task
- first task : firtst task 라고 출력
- second task: file 모듈을 사용하여 /tmp/20210804_first_task/ 디렉터리 생성
- third task: command 모듈을 사용하여 " cat /etc/hostname" 실행
& 핸들러 hello_handler 호출
handler
- hello_handler - run hello_handler 메시지 출력
##### 과제1 ##### first_role 생성 task - first task : firtst task 라고 출력 - second task: file 모듈을 사용하여 /tmp/20210804_first_task/ 디렉터리 생성 - third task: command 모듈을 사용하여 " cat /etc/hostname" 실행 & 핸들러 hello_handler 호출 handler - hello_handler - run hello_handler 메시지 출력 [user@ansible-server 20210804]$ cat roles/first_role/tasks/main.yaml --- - name: first task debug: msg: first task - name: second task file: dest: /tmp/20210804_first_task/ state: directory mode: "0644" - name: third task command: cat /etc/hostname notify: hello_handler [user@ansible-server 20210804]$ cat roles/first_role/handlers/main.yaml --- - name: hello_handler debug: msg: run hello_handler [user@ansible-server 20210804]$ cat 0804_test_role_playbook4.yaml --- - name: role examination hosts: all roles: - role: first_role [user@ansible-server 20210804]$ ansible-playbook 0804_test_role_playbook4.yaml PLAY [role examination] ************************************************************************************************ TASK [Gathering Facts] ************************************************************************************************* ok: [192.168.56.12] ok: [192.168.56.13] ok: [192.168.56.11] TASK [first_role : first task] ***************************************************************************************** ok: [192.168.56.11] => { "msg": "first task" } ok: [192.168.56.12] => { "msg": "first task" } ok: [192.168.56.13] => { "msg": "first task" } TASK [first_role : second task] **************************************************************************************** changed: [192.168.56.11] changed: [192.168.56.13] changed: [192.168.56.12] TASK [first_role : third task] ***************************************************************************************** changed: [192.168.56.11] changed: [192.168.56.12] changed: [192.168.56.13] RUNNING HANDLER [first_role : hello_handler] *************************************************************************** ok: [192.168.56.11] => { "msg": "run hello_handler" } ok: [192.168.56.12] => { "msg": "run hello_handler" } ok: [192.168.56.13] => { "msg": "run hello_handler" } PLAY RECAP ************************************************************************************************************* 192.168.56.11 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 192.168.56.12 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 192.168.56.13 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [user@ansible-server 20210804]$ ansible all -m command -a "ls -d /tmp/20210804_first_task" 192.168.56.12 | CHANGED | rc=0 >> /tmp/20210804_first_task 192.168.56.13 | CHANGED | rc=0 >> /tmp/20210804_first_task 192.168.56.11 | CHANGED | rc=0 >> /tmp/20210804_first_task |
'ansible' 카테고리의 다른 글
20210805 (목) ansible 실습3 (0) | 2021.08.05 |
---|---|
20210805 (목) ansible structure, priority, strategy, throttle (0) | 2021.08.05 |
20210804 (수) ansible 작업제어 #3 (0) | 2021.08.04 |
20210803 (화) ansible-vault (0) | 2021.08.03 |
20210803 (화) ansible 작업제어 #2 (0) | 2021.08.03 |