Ansible : Use Playbook (Roles)2024/09/11 |
|
This is the example of using the [Roles] feature. The left image shows all tree, the right image shows an example of a Playbook on this example.
+--- 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] | This is the Playbook to use Roles that MariaDB and Nginx are installed and started. |
|
freebsd@dlp:~ $ mkdir -p roles/ins_mariadb/tasks freebsd@dlp:~ $ mkdir -p roles/ins_mariadb/vars freebsd@dlp:~ $ mkdir -p roles/ins_nginx/files freebsd@dlp:~ $ mkdir -p roles/ins_nginx/tasks freebsd@dlp:~ $ mkdir -p roles/ins_nginx/vars
freebsd@dlp:~ $
vi playbook_sample.yml
- hosts: target_servers
become: yes
become_method: sudo
roles:
- ins_mariadb
- ins_nginx
freebsd@dlp:~ $
vi roles/ins_mariadb/vars/main.yml mariadb_package: - mariadb1011-server - py311-pymysql
freebsd@dlp:~ $
vi roles/ins_mariadb/tasks/main.yml
- name: mariadb is installed
pkgng:
name: "{{ mariadb_package }}"
state: present
tags: install_mariadb
- name: mariadb is running and enabled
service:
name: mysql-server
state: started
enabled: yes
freebsd@dlp:~ $
vi roles/ins_nginx/vars/main.yml nginx_package: - nginx
freebsd@dlp:~ $
vi roles/ins_nginx/tasks/main.yml
- name: nginx is installed
pkgng:
name: "{{ nginx_package }}"
state: present
tags: install_nginx
- name: edit nginx.default
lineinfile:
path: /usr/local/etc/nginx/nginx.conf
regexp: "^ *server_name localhost;"
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: /usr/local/www/nginx
owner: root
group: wheel
mode: 0644
- name: check nginx
uri:
url: http://{{ ansible_fqdn }}
freebsd@dlp:~ $
freebsd@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] ******************************************** ok: [10.0.0.52] ok: [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 : nginx is installed] ************************************************ ok: [10.0.0.51] ok: [10.0.0.52] 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] **************************************************** ok: [10.0.0.52] ok: [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=8 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 10.0.0.52 : ok=8 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
| Sponsored Link |