ホーム > Ansible Tower・AWX リファレンス
Ansible(AWX・Tower)環境で、Windowsホストに対して、VBScriptを実行する方法を解説します。
Ansible(AWX・Tower)環境で、Windowsホストに接続する場合は、WinRM導入が必須になります。
まだ導入していない方は下記を参考に導入してみて下さい。
はじめに
AnsibleでWindowsホストに対して、VBScriptファイルを実行する方法ですが、
以下の2パターンの方法を説明します。
- コントロールノードに格納したスクリプトを実行する方法
- ターゲットノードに格納したスクリプトを実行する方法
事前準備(共通)
まずは、事前準備として、以下の作業を行います。
(*Ansibleには、コマンドライン版のAnsibleの他、GUIで使用出来るAWX[Tower(有償版)]がありますが、今回はAnsible AWXを使用します。以降、AWXと表記して進めて行きます)
- Windowsで実行するVBScriptファイルの作成
- AWXで実行するプレイブックの作成
- AWX各種定義の設定
- 認証情報
- インベントリー
- テンプレート
AWXの各種定義の設定
ここでは、AWXの各種定義について説明します。
認証情報
今回実行する認証情報の設定になります。
- 名前:Windows
- 認証情報タイプ:マシン
- ユーザー名:Windowsにログインするためのユーザー
- パスワード:ユーザー名に対応したパスワード
インベントリー
今回実行するインベントリーの設定ですが、AnsibleでWindows機器を操作するための最小限の設定しか行っていませんので、以下を参考にして下さい。
テンプレート
今回実行するテンプレートの設定になります。
テンプレートの設定は任意なので、下記と異なる値を設定しても問題ありません。
- 名前:7002 Exec VBScript
- 説明:VBScriptの実行
- ジョブタイプ:実行
- インベントリー:Syutaku Inventory
- プロジェクト:Syutaku Project
- PLAYBOOK:PBW003_Exec_VBS.yml
- 詳細:1(Verbose)
VBScriptファイルの作成
ここでは、実行するVBScriptファイルを作成します。
今回は、VBScriptが実行されたことを確認したいので、ファイルシステムオブジェクトを使用して、ファイルを出力するスクリプトを作成します。
ファイル名は「日時情報出力.vbs」としました。
Option Explicit ' 出力ファイル Const LOG_FILE = "C:\Workspace\log.txt" Dim fso, file ' ファイルシステムオブジェクトの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' テキストファイルのオープン(追記モード) Set file = fso.OpenTextFile(LOG_FILE, 8, True) ' 日時情報を出力 file.WriteLine(Now()) ' テキストファイルのクローズ file.Close ' ファイルシステムオブジェクトの破棄 Set fso = Nothing
下記では、VBScriptの基本から応用までを解説しています。
こちらを参考に、様々なスクリプトを組んでみて下さい。
AWXで実行するプレイブックの作成
ここでは、実行するプレイブックを作成します。
VBScriptを実行するだけの、簡単なプレイブックですが、
格納先がコントロールノードかターゲットノードのどちらかで、
記述内容が少し異なるので、それぞれ説明します。
コントロールノードに格納するスクリプトを実行する場合
---
- hosts: all
gather_facts: False
tasks:
- name: VBScriptの実行
script: ./vbs/日時情報出力.vbs
ターゲットノードに格納するスクリプトを実行する場合
---
- hosts: all
gather_facts: False
tasks:
- name: VBScriptの実行
win_shell: "C:\\Workspace\\日時情報出力.vbs"
実行結果
プレイブックの実行結果です。
コントロールノードに格納したスクリプトを実行した場合
Using /etc/ansible/ansible.cfg as config file
SSH password:
PLAY [all] *********************************************************************
TASK [VBScriptの実行] *************************************************************
changed: [192.168.70.200] => {"changed": true, "rc": 0, "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
PLAY RECAP *********************************************************************
192.168.70.200 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ターゲットノードに格納したスクリプトを実行した場合
Using /etc/ansible/ansible.cfg as config file
SSH password:
PLAY [all] *********************************************************************
TASK [VBScriptの実行] *************************************************************
changed: [192.168.70.200] => {"changed": true, "cmd": "C:\\\\Workspace\\\\日時情報出力.vbs", "delta": "0:00:00.420567", "end": "2023-03-22 02:31:31.325481", "rc": 0, "start": "2023-03-22 02:31:30.904913", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
PLAY RECAP *********************************************************************
192.168.70.200 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
以下のように、VBScriptに記述したファイル「C:\Workspace\log.txt」が作成されていれば、VBScriptが正しく実行されています。
*本記事のサンプルを実行した場合は、コントロールノード、ターゲットノードに関わらず、以下のようにログファイルが作成されます。
Windowsホストでバッチファイルを実行する
バッチファイルを実行する場合は、以下を参考にして下さい。
WindowsホストでPowerShellを実行する
PowerShellを実行する場合は、以下を参考にして下さい。
上手く動かない場合
想定通りに動かない場合、以下を参考にしてみて下さい。
コメント