Ansible Roles Playbook を利用するサンプル
環境
Ubuntu 24.04
概要
Roles は Ansible であらかじめ定義された Playbook の命名規則・ファイル配置に従うことで、
自動的にインクルードを実行する機能です。
以下のような構成 の Roles 適用 Playbook を作成します。
+--- playbook.yml +--- test.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
使用例 +— main.yml
Nginx と MariaDB をインストールして起動する Roles 適用する
$ mkdir -p roles/ins_mariadb/{tasks,vars}
$ mkdir -p roles/ins_nginx/{files,tasks,vars}
1.ファイルを編集します
$ vi test.yml
- hosts: target_servers become: yes become_method: sudo roles: - ins_mariadb - ins_nginx
2.mariadb用main.ymlの修正
$ vi roles/ins_mariadb/vars/main.yml
mariadb_package: - mariadb-server - python3-pymysql
3.タスクのmain.ymlを編集します
$ 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
4.nginx用のmain.ymlを編集します
$ vi roles/ins_nginx/vars/main.yml
nginx_package: - nginx
nginxのtasksのmain.ymlを編集します
$ 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 }}
テストメッセージを書き込みます
$ echo “nginx index page" > roles/ins_nginx/files/index.html
playbookを実行する
$ ansible-playbook test.yml --ask-become-pass