Ansible : Playbook を利用する (Roles)2020/03/17 |
Ansible の Roles 機能の利用例です。
具体的には以下のような構成 (左図) になります。Roles は Ansible であらかじめ定義された Playbook の命名規則・ファイル配置に従うことで、自動的にインクルードを実行する機能です。 [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 です。 |
[cent@dlp ~]$ mkdir -p roles/ins_mariadb/{tasks,vars} [cent@dlp ~]$ mkdir -p roles/ins_nginx/{files,tasks,vars}
[cent@dlp ~]$
vi playbook_sample.yml - hosts: target_servers become: yes become_method: sudo roles: - ins_mariadb - ins_nginx
[cent@dlp ~]$
vi roles/ins_mariadb/vars/main.yml mariadb_package: - mariadb-server - python3-PyMySQL mariadb_root_password: "P@ssw0rd01"
[cent@dlp ~]$
vi roles/ins_mariadb/tasks/main.yml - name: mariadb is installed dnf: name: "{{ mariadb_package }}" state: present tags: install_mariadb - name: mariadb is running and enabled service: name: mariadb state: started enabled: yes - name: Set Mariadb root password mysql_user: name: "root" password: "{{ mariadb_root_password }}" host: "{{ item }}" with_items: - "127.0.0.1" - "::1" - "localhost" - name: Delete user mysql_user: user: "root" login_password: "{{ mariadb_root_password }}" host: "{{ ansible_fqdn }}" state: "absent"
[cent@dlp ~]$
vi roles/ins_nginx/vars/main.yml nginx_package: - nginx
[cent@dlp ~]$
vi roles/ins_nginx/tasks/main.yml - name: nginx is installed dnf: name: "{{ nginx_package }}" state: installed tags: install_nginx - name: edit nginx.conf lineinfile: path: /etc/nginx/nginx.conf regexp: "^ *server_name _;" line: "server_name {{ ansible_fqdn }};" tags: edit_nginx.conf - name: nginx is running and enabled service: name: nginx state: started enabled: yes - name: put index.html copy: src: index.html dest: /usr/share/nginx/html owner: root group: root mode: 0644 - name: check nginx uri: url: http://{{ ansible_fqdn }}
[cent@dlp ~]$
[cent@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.52] ok: [10.0.0.51] TASK [ins_mariadb : mariadb is installed] ************************************** changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_mariadb : mariadb is running and enabled] **************************** changed: [10.0.0.51] changed: [10.0.0.52] TASK [ins_mariadb : Set Mariadb root password] **************************** changed: [10.0.0.51] => (item=127.0.0.1) changed: [10.0.0.52] => (item=127.0.0.1) changed: [10.0.0.52] => (item=::1) changed: [10.0.0.51] => (item=::1) changed: [10.0.0.52] => (item=localhost) changed: [10.0.0.51] => (item=localhost) TASK [ins_mariadb : Delete user] *********************************************** changed: [10.0.0.51] changed: [10.0.0.52] TASK [ins_nginx : nginx is installed] ****************************************** changed: [10.0.0.51] changed: [10.0.0.52] TASK [ins_nginx : edit nginx.conf] ********************************************* changed: [10.0.0.51] changed: [10.0.0.52] TASK [ins_nginx : nginx is running and enabled] ******************************** changed: [10.0.0.52] changed: [10.0.0.51] TASK [ins_nginx : put index.html] ********************************************** changed: [10.0.0.51] changed: [10.0.0.52] TASK [ins_nginx : check nginx] ************************************************* ok: [10.0.0.52] ok: [10.0.0.51] PLAY RECAP ********************************************************************* 10.0.0.51 : ok=10 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 10.0.0.52 : ok=10 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
Sponsored Link |
|