Ansible playbookの実行方法、playbook例

IT技術

はじめに

構成管理ツール「Ansible」のplaybookを作成し、実行する方法を記載する。

playbookとは、一連のタスク処理を記述した定義ファイルである。
例えばApache設定変更〜反映を行う場合、以下のようなタスクをplaybookに記述する。

  1. Apache設定ファイルをコピー
  2. Apache設定ファイルの構文チェック
  3. 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(インフラのコード化)が実現できる。

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