Ansible : Use Playbook (Roles)2022/09/27 |
This is the example of using the [Roles] feature.
It's necessary to configure directory tree like follows to use Roles.To use Roles, it's possible to include other tasks or Playbooks without writing [include] sentence. 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. |
ubuntu@dlp:~$ mkdir -p roles/ins_mariadb/{tasks,vars} ubuntu@dlp:~$ mkdir -p roles/ins_nginx/{files,tasks,vars}
ubuntu@dlp:~$
vi playbook_sample.yml - hosts: target_servers become: yes become_method: sudo roles: - ins_mariadb - ins_nginx
ubuntu@dlp:~$
vi roles/ins_mariadb/vars/main.yml mariadb_package: - mariadb-server - python3-pymysql
ubuntu@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
ubuntu@dlp:~$
vi roles/ins_nginx/vars/main.yml nginx_package: - nginx
ubuntu@dlp:~$
vi roles/ins_nginx/tasks/main.yml - 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 }}
ubuntu@dlp:~$
ubuntu@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.51] ok: [10.0.0.52] 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] ******************************** changed: [10.0.0.51] changed: [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=8 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 10.0.0.52 : ok=8 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
Sponsored Link |
|