openSUSE Leap 16

Ansible : Playbook を利用する (基本)2025/12/26

 

Ansible Playbook の基本的な利用方法です。

Playbook は冪等性 (べきとうせい) を確保するための処理をまとめたもので、YAML 形式で記述します。

[1] 例として、あるファイルが常に同じ属性で存在するシンプルな Playbook を作成します。
suse@dlp:~>
vi playbook_sample.yml
# 対象ホスト名 または グループ名
- hosts: 10.0.0.50
  tasks:
  # 任意のタスク名
  - name: Test Task
    # [file] モジュールを利用してファイルの状態を記述
    file:
      path: /home/suse/test.conf
      state: touch
      owner: suse
      group: suse
      mode: 0600

# Playbook 実行

suse@dlp:~>
ansible-playbook playbook_sample.yml


PLAY [10.0.0.50] ********************************************************************************

TASK [Gathering Facts] **************************************************************************
ok: [10.0.0.50]

TASK [Test Task] ********************************************************************************
changed: [10.0.0.50]

PLAY RECAP **************************************************************************************
10.0.0.50                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

# 確認

suse@dlp:~>
ansible 10.0.0.50 -m command -a "ls -l /home/suse"

10.0.0.50 | CHANGED | rc=0 >>
total 0
-rw-------. 1 suse suse 0 Dec 26 09:26 test.conf
[2] 例として、Apache httpd がインストールされ、起動した状態とする Playbook です。
suse@dlp:~>
vi playbook_sample.yml
- hosts: target_servers
  # 他のユーザー権限を利用 (デフォルト : root)
  become: yes
  # 他のユーザー権限を利用する方法
  become_method: sudo
  tasks:
  # タスクの定義
  - name: apache2 is installed
    zypper:
      name: apache2
      state: present
  - name: apache2 is running and enabled
    service:
      name: apache2
      state: started
      enabled: yes

suse@dlp:~>
ansible-playbook playbook_sample.yml --ask-become-pass

BECOME password:

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

TASK [Gathering Facts] *********************************************************
ok: [10.0.0.52]
ok: [10.0.0.51]

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

TASK [apache2 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    skipped=0    rescued=0    ignored=0
10.0.0.52                  : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

# 確認

suse@dlp:~>
ansible target_servers -m shell -a "/bin/systemctl status apache2 | head -3"

10.0.0.51 | CHANGED | rc=0 >>
● apache2.service - The Apache Webserver
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: disabled)
     Active: active (running) since Fri 2025-12-26 09:53:06 JST; 1min 8s ago
10.0.0.52 | CHANGED | rc=0 >>
● apache2.service - The Apache Webserver
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: disabled)
     Active: active (running) since Fri 2025-12-26 09:53:06 JST; 1min 8s ago
関連コンテンツ