CentOS 7
 

Ansible : Playbook を利用する#1
2015/07/15
 
Ansible Playbook の基本的な利用方法です。
Playbook は冪等性 (べきとうせい) を確保するための処理をまとめたもので、YAML 形式で記述します。
[1] 例として、あるファイルが常に同じ属性で存在するシンプルな Playbook を作成します。
[cent@dlp ~]$
vi playbook_sample.yml
# 対象ホスト名 または グループ名

- hosts: target_servers
# タスクの定義

  tasks:
# 任意のタスク名

  - name: Test Task
# file モジュールを利用してファイルの状態を記述

    file: path=/home/cent/test.conf state=touch owner=cent group=cent mode=0600
# Playbook 実行

[cent@dlp ~]$
ansible-playbook playbook_sample.yml

PLAY [target_servers] *********************************************************

GATHERING FACTS ***************************************************************
ok: [10.0.0.52]
ok: [10.0.0.51]

TASK: [Test Task] *************************************************************
changed: [10.0.0.51]
changed: [10.0.0.52]

PLAY RECAP ********************************************************************
10.0.0.51                  : ok=2    changed=1    unreachable=0    failed=0
10.0.0.52                  : ok=2    changed=1    unreachable=0    failed=0

# 確認

[cent@dlp ~]$
ansible target_servers -m command -a "ls -l /home/cent"

10.0.0.51 | success | rc=0 >>
total 0
-rw------- 1 cent cent 0 Apr 21 15:35 test.conf

10.0.0.52 | success | rc=0 >>
total 0
-rw------- 1 cent cent 0 Apr 21 15:35 test.conf
[2] 例として、Apache httpd がインストールされ、起動した状態とする Playbook です。
[cent@dlp ~]$
vi playbook_sample.yml
- hosts: target_servers
# 他ユーザー権限を利用する(デフォルト:root)

  become: yes
# 他ユーザー権限を利用する方法

  become_method: sudo
# タスクの定義

  tasks:
  - name: httpd is installed
    yum: name=httpd state=installed
  - name: httpd is running and enabled
    service: name=httpd state=started enabled=yes
# 実行

[cent@dlp ~]$
ansible-playbook playbook_sample.yml --ask-become-pass

SUDO password:

PLAY [target_servers] *********************************************************

GATHERING FACTS ***************************************************************
ok: [10.0.0.51]
ok: [10.0.0.52]

TASK: [httpd is installed] ****************************************************
changed: [10.0.0.51]
changed: [10.0.0.52]

TASK: [httpd is running and enabled] ******************************************
changed: [10.0.0.51]
changed: [10.0.0.52]

PLAY RECAP ********************************************************************
10.0.0.51                  : ok=3    changed=2    unreachable=0    failed=0
10.0.0.52                  : ok=3    changed=2    unreachable=0    failed=0

# 確認

[cent@dlp ~]$
ansible target_servers -m shell -a "/bin/systemctl status httpd | head -3" -b --ask-become-pass

SUDO password:
10.0.0.52 | success | rc=0 >>
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since Thu 2015-07-15 20:42:00 JST; 2min 2s ago

10.0.0.51 | success | rc=0 >>
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since Thu 2015-07-15 20:42:00 JST; 2min 2s ago
 
Tweet