はじめに
構成管理ツール「Ansible」のplaybookを作成し、実行する方法を記載する。
playbookとは、一連のタスク処理を記述した定義ファイルである。
例えばApache設定変更〜反映を行う場合、以下のようなタスクをplaybookに記述する。
- Apache設定ファイルをコピー
- Apache設定ファイルの構文チェック
- Apache設定反映
尚、「Ansible」のインストール方法は「CentOS7にAnsibleをインストールする」を参照して頂きたい。
システム構成
- Ansibleサーバ(ansibleserver)
- OS:CentOS 7.9
- Ansible:2.9.27
- Ansible管理対象(ansibleclient1,2)
- OS:CentOS 7.9
Ansible playbookの実行方法
Ansible用hostsファイル設定
Ansibleを実行するための準備として、Ansible管理対象サーバを設定ファイル「/etc/ansible/hosts」に登録しておく。詳細は「CentOS7にAnsibleをインストールする」を参照頂きたい。
今回は以下のようなhostsファイルを作成した。
[root@ansibleserver /]# cat /etc/ansible/hosts
[ansibleclient-all]
ansibleclient1
ansibleclient2
[root@ansibleserver /]#
グループ「ansibleclient-all」の中に、タスクを処理させたいサーバ「ansibleclient1」「ansibleclient2」を定義しており、グループを指定してAnsible playbookを実行すると2台のサーバに対して処理が実行される。
playbook定義ファイルの作成
任意のディレクトリにplaybook定義ファイルを作成する。
例) Apacheインストール、設定ファイルコピー、起動
[root@ansibleserver /]# vi /etc/ansible/playbook/apache/test_apache_install.yml
- hosts: ansibleclient-all
tasks:
- name: Apache install
yum: name=httpd state=installed
- name: httpd.conf copy
copy:
src: /etc/ansible/playbook/apache/httpd.conf.src
dest: /etc/httpd/conf/httpd.conf
- name: Apache start and enabled
service: name=httpd state=started enabled=yes
[root@ansibleserver /]#
Ansible playbookの実行
構文チェック
playbook定義ファイルの構文チェックを行う。
[root]# ansible-playbook <playbookファイル> --syntax-check
dry-run
dry-runを行う。(実際には処理されない。)
[root]# ansible-playbook <playbookファイル> --check
実行
Ansible playbookを実行する。
[root]# ansible-playbook <playbookファイル>
実行例) Apacheインストール、設定ファイルコピー、起動
[root@ansibleserver /]# ansible-playbook /etc/ansible/playbook/apache/test_apache_install.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 install] ************************************************************************************
changed: [ansibleclient1]
changed: [ansibleclient2]
TASK [httpd.conf copy] ***********************************************************************************
ok: [ansibleclient2]
ok: [ansibleclient1]
TASK [Apache start and enabled] **************************************************************************
changed: [ansibleclient2]
changed: [ansibleclient1]
PLAY RECAP ***********************************************************************************************
ansibleclient1 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleclient2 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@ansibleserver /]#
まとめ
Ansibleを利用することで、多数サーバの構築や運用作業を効率化できたり、作業品質の標準化ができる。
また、処理内容をplaybook定義ファイルに記述することで、IaC:Infrastructure as Code(インフラのコード化)が実現できる。