Ansible Roleの使い方

IT技術

はじめに

Ansible playbookの実行方法、playbook例では、playbook定義ファイルを1つ作成して実行した。
今回はRole機能を利用して、処理を分割(モジュール化)し、再利用できるようにする。

システム構成

Ansible playbookの実行方法、playbook例と同じ。

実行方法

Ansible用hostsファイル設定

Ansible playbookの実行方法、playbook例と同じ。

Ansible定義ファイルの準備

以下のようなディレクトリ・ファイル構成で作成する。

/etc/ansible
|- /playbook/test_apache_install2.yml
|- /roles
  |- /apache_install/tasks/main.yml ・・・Role(1)
  |- /apache_confcopy/tasks/main.yml ・・・Role(2)
  |- /apache_start/tasks/main.yml ・・・Role(3)

Role

Role(1) Apacheインストール
[root@ansibleserver /]# vi /etc/ansible/roles/apache_install/tasks/main.yml 
- name: Apache install
  yum: name=httpd state=installed
[root@ansibleserver /]#
Role(2) Apache設定ファイルコピー
[root@ansibleserver /]# vi /etc/ansible/roles/apache_confcopy/tasks/main.yml 
- name: httpd.conf copy
  copy:
    src: /etc/ansible/playbook/apache/httpd.conf.src
    dest: /etc/httpd/conf/httpd.conf
[root@ansibleserver /]#
Role(3) Apache起動
[root@ansibleserver /]# vi /etc/ansible/roles/apache_start/tasks/main.yml 
- name: Apache start and enabled
  service: name=httpd state=started enabled=yes
[root@ansibleserver /]#

playbook

上記で作成した3つのRole(ディレクトリ)名を、roles:パラメータに記載する。

[root@ansibleserver /]# vi /etc/ansible/playbook/apache/test_apache_install2.yml 
- hosts: ansibleclient-all
  roles:
    - apache_install
    - apache_confcopy
    - apache_start
[root@ansibleserver /]# 

Ansible playbookの実行

Ansible playbookの実行方法、playbook例と同じ。

実行例)

[root@ansibleserver /]# ansible-playbook /etc/ansible/playbook/apache/test_apache_remove.yml          
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
PLAY [ansibleclient-all] *********************************************************************************
TASK [Gathering Facts] ***********************************************************************************
ok: [ansibleclient2]
ok: [ansibleclient1]
TASK [Apache remove] *************************************************************************************
changed: [ansibleclient1]
changed: [ansibleclient2]
TASK [httpd.conf delete] *********************************************************************************
ok: [ansibleclient1]
ok: [ansibleclient2]
PLAY RECAP ***********************************************************************************************
ansibleclient1             : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
ansibleclient2             : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
[root@ansibleserver /]# 

まとめ

AnsibleのRole機能を利用することで、処理の再利用ができ、playbookの可読性も良くなる。
ある時は「Apacheインストールのみ」、またある時は「Apache設定ファイルコピー・再起動」と使い分けることもできる。

Roleの分割方針はシステム構成や設計によって様々だが、サーバ単位ではなく製品単位や処理単位で分割した方が再利用しやすいと考える。

タイトルとURLをコピーしました