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 の基本的な実行です。