Ansible : Playbook を利用する (Roles)2025/10/14 |
|
Ansible の Roles 機能の利用例です。 [playbook.yml], [role01] は任意の名前で OK ですが、それ以外は固定となります。 当例では、以下のような構成 (右図) の Roles 適用 Playbook を作成します。
+--- playbook.yml +--- playbook_sample.yml
| |
+--- roles/ +--- roles/
| |
+--- role01/ +--- ins_mariadb/
| | |
+--- files/ | +--- vars/
| | | |
+--- templates/ | | +--- main.yml
| | +--- tasks/
+--- tasks/ | |
| | +--- main.yml
+--- handlers/ |
| +--- ins_nginx/
+--- vars/ |
| +--- files/
+--- defaults/ | |
| | +--- index.html
+--- meta/ +--- vars/
| |
| +--- main.yml
|
+--- tasks/
|
+--- main.yml
|
| [1] | Nginx と MariaDB をインストールして起動する Roles 適用 Playbook です。 |
|
debian@dlp:~$ mkdir -p roles/ins_mariadb/{tasks,vars} debian@dlp:~$ mkdir -p roles/ins_nginx/{files,tasks,vars}
debian@dlp:~$
vi playbook_sample.yml
- hosts: target_servers
become: yes
become_method: sudo
roles:
- ins_mariadb
- ins_nginx
debian@dlp:~$
vi roles/ins_mariadb/vars/main.yml mariadb_package: - mariadb-server - python3-pymysql
debian@dlp:~$
vi roles/ins_mariadb/tasks/main.yml
- name: mariadb is installed
apt:
name: "{{ mariadb_package }}"
state: present
tags: install_mariadb
- name: mariadb is running and enabled
service:
name: mariadb
state: started
enabled: yes
debian@dlp:~$
vi roles/ins_nginx/vars/main.yml nginx_package: - nginx apache2_package: - apache2
debian@dlp:~$
vi roles/ins_nginx/tasks/main.yml
- name: apache2 is not installed
apt:
name: "{{ apache2_package }}"
state: absent
tags: uninstall_apache2
- name: nginx is installed
apt:
name: "{{ nginx_package }}"
state: present
tags: install_nginx
- name: edit nginx.default
lineinfile:
path: /etc/nginx/sites-available/default
regexp: "server_name _;"
line: "server_name {{ ansible_fqdn }};"
tags: edit_nginx.default
- name: nginx is running and enabled
service:
name: nginx
state: started
enabled: yes
- name: put index.html
copy:
src: index.html
dest: /var/www/html
owner: root
group: root
mode: 0644
- name: check nginx
uri:
url: http://{{ ansible_fqdn }}
debian@dlp:~$
debian@dlp:~$ echo "nginx index page" > roles/ins_nginx/files/index.html ansible-playbook playbook_sample.yml --ask-become-pass BECOME password: PLAY [target_servers] ********************************************************** TASK [Gathering Facts] ********************************************************* ok: [10.0.0.51] ok: [10.0.0.52] TASK [ins_mariadb : mariadb is installed] ************************************** changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_mariadb : mariadb is running and enabled] **************************** ok: [10.0.0.52] ok: [10.0.0.51] TASK [ins_nginx : apache2 is not installed] ************************************ changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_nginx : nginx is installed] ****************************************** changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_nginx : edit nginx.default] ****************************************** changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_nginx : nginx is running and enabled] ******************************** ok: [10.0.0.51] ok: [10.0.0.52] TASK [ins_nginx : put index.html] ********************************************** changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_nginx : check nginx] ************************************************* ok: [10.0.0.52] ok: [10.0.0.51] PLAY RECAP ********************************************************************* 10.0.0.51 : ok=9 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 10.0.0.52 : ok=9 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
| Sponsored Link |
|
|