【Ansible Tower/AWX】Windowsホストでバッチファイルを実行する


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

Ansible

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

Ansible(AWX/Tower)環境で、Windowsホストに対して、バッチファイルを実行する方法を解説します。

事前準備

まずは、事前準備として、以下の作業を行います。
(*Ansibleには、コマンドライン版のAnsibleの他、GUIで使用出来るAWX[Tower(有償版)]がありますが、今回はAnsible AWXを使用します。以降、AWXと表記して進めて行きます)

  • Windowsで実行するバッチファイルの作成
  • AWXで実行するプレイブックの作成
  • AWX各種定義の設定
    • 認証情報
    • インベントリー
    • テンプレート

Windowsで実行するバッチファイルの作成

今回は、バッチファイルが実行されたことを確認したいので、リダイレクトでファイルを出力するバッチを作成します。

@echo off

cd %~dp0

echo Ansible AWX バッチ実行テスト> .\Test.log

exit

文字列「Ansible AWX バッチ実行テスト」を「Test.log」として、カレントディレクトリに出力する簡単なバッチになります。

バッチを準備するにあたって、以下の注意点があります。

  1. バッチファイルの文字コードは「UTF-8」にして下さい。
  2. バッチファイルは、接続先のWindows端末内に配置して下さい。

AWXで実行するプレイブックの作成

バッチを実行するだけの、簡単なプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: "バッチファイルの実行"
    win_command: "C:\\ws\\bat\\Test.bat"

AWX各種定義の設定

ここでは、AWXの各種定義について説明します。

認証情報

今回実行する認証情報の設定になります。

  • 名前:Windows
  • 認証情報タイプ:マシン
  • ユーザー名:Windowsにログインするためのユーザー
  • パスワード:ユーザー名に対応したパスワード

インベントリー

今回実行するインベントリーの設定になります。

  • 名前:Windows Inventory

ホストは、接続先のWindows機器のIPアドレスを設定しています。
以下が、インベントリー変数の設定です。

---
ansible_connection: winrm
ansible_ssh_port: 5985
ansible_winrm_transport: basic
ansible_winrm_server_cert_validation: ignore

テンプレート

今回実行するテンプレートの設定になります。

  • 名前:Win Exec Bat File Template
  • ジョブタイプ:実行
  • インベントリー:Windows Inventory
  • プロジェクト:秋拓プロジェクト
  • PLAYBOOK:win_exec_bat.yml
  • 詳細:1(Verbose)

実行結果

プレイブックの実行結果です。

Using /etc/ansible/ansible.cfg as config file
SSH password: 
PLAY [all] *********************************************************************
TASK [バッチファイルの実行] **************************************************************
changed: [192.168.11.10] => {"changed": true, "cmd": "C:\\ws\\bat\\Test.bat", "delta": "0:00:00.062540", "end": "2022-10-09 05:34:14.685597", "rc": 0, "start": "2022-10-09 05:34:14.623056", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
PLAY RECAP *********************************************************************
192.168.11.10              : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

以下のように、バッチファイルを格納したフォルダに「Test.log」が作成されていれば、バッチが正しく実行されています。

上手く動かない場合

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

ジョブが異常終了する

ジョブが異常終了する場合は、様々な原因が考えられるので、以下を参考にして下さい。

出力したファイルが文字化けする

下記のように、出力したファイル(サンプルなら、Test.log)が文字化けする場合の対処です。

AWXから実行されるバッチファイルの文字コードが「SJIS」になっている場合、日本語を含む文字列が文字化けしてしまいます。
バッチファイルの文字コードを「UTF-8」にすることで、文字化けが解消します。

コメント

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