Ansible: はじめての Playbook 実行 – Target は Windows Server

Ansible で、Target (Windows Server) に接続して、簡単な Playbook を実行するまでの内容です。

準備

Target (Windows Server)

Target となる Windows Server 側では、Ansible で接続するための最低限の設定として、下記を実施しておきます。

  • Administrator のパスワード設定
  • Ansible の接続で使用する IP アドレスの設定

Ansible Controller

Ansible Controller 側では、サーバー管理をしやすいようなディレクトリ構成にしておき、ターゲットに接続するための情報を定義しておきます。
Ansible のディレクトリ構成や接続情報の定義については、次の記事を参照してください。
>> Ansible のおすすめディレクトリ構造・変数の設定

Playbook サンプル

次のような内容のテスト用 Playbook を用意します。

test.yml

---
- name: Test Playbook
  hosts: 192.168.1.1
  
  tasks:
  - name: Install Windows Feature
    win_feature:
      name: SNMP-Service
      state: present

Playbook の中身の解説

Playbook で実行している内容を解説していきます。

---

1行目の 「—」は、YAML ファイルであることの宣言です。

- name: Test Playbook

Playbook の名前を定義します。

  hosts: 192.168.1.1

Playbook を実行する対象のターゲットを指定します。
下記の指定が可能です。

  • 複数の Target を指定する場合
    hosts: 192.168.1.1,192.168.1.2
    または
    hosts: 192.168.1.1:192.168.1.2
  • ワイルドカードを使用
    hosts: 192.168.1.*
  • グループ名を指定
    hosts: group01
  tasks:

この宣言の下に、実行するタスクを順に記述します。
今回の例では、1個のタスクのみ実行しています。

  - name: Install Windows Feature

タスクの名前を設定します。

    win_feature:
      name: SNMP-Service
      state: present

Windows Server の役割・機能をインストール・アンインストールする win_feature モジュールで、SNMP-Service がインストールされた状態 (present) にします。
name で指定する役割・機能名は、PowerShell の Get-WindowsFeature で取得できる Name です。

Playbook 実行

次のコマンドでPlaybook を実行します。

ansible-playbook test.yml

SNMP-Service がインストールされていない状態で実行した場合、実行結果は次のようなります。

PLAY [Test Playbook] *****************************************************************************

TASK [Install Windows Feature] *******************************************************************
changed: [192.168.1.1]

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

SNMP-Service がインストールされていない状態からインストールされている状態に変わったので、 changed=1 になっています。

SNMP-Service が既にインストールさている状態で実行した場合、実行結果は次のようになります。

PLAY [Test Playbook] *****************************************************************************

TASK [Install Windows Feature] *******************************************************************
ok: [192.168.1.1]

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

この場合は、もともとSNMP-Service がインストールされており、実行の前後で状態は変わらないので、changed=0 となります。

以上が、Ansible での Playbook の基本的な実行です。