【Ansible Tower・AWX】WindowsホストでVBScriptを実行する


この記事はプロモーションを含みます。

Ansible

ホーム > Ansible Tower・AWX リファレンス

Ansible(AWX・Tower)環境で、Windowsホストに対して、VBScriptを実行する方法を解説します。

はじめに

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を実行する場合は、以下を参考にして下さい。

上手く動かない場合

想定通りに動かない場合、以下を参考にしてみて下さい。

コメント

タイトルとURLをコピーしました