Ansible(AWX/Tower)環境で、Windowsホストに実行したバッチファイルの日本語文字列が文字化けした場合の対処方法について解説します。
Ansible(AWX/Tower)の基本的な使い方は以下からどうぞ。
プレイブック
まずは、テスト用のバッチを実行する際に使用したプレイブックをご紹介します。
以降は、バッチファイルを見ながら、文字化けの回避方法を解説していきたいと思います。
---
- hosts: all
gather_facts: False
tasks:
- name: "バッチファイル実行①"
win_command: "C:\\ws\\Test_Shift-JIS.bat"
- name: "バッチファイル実行②"
win_command: "C:\\ws\\Test_UTF-8_01.bat"
- name: "バッチファイル実行③"
win_command: "C:\\ws\\Test_Shift-JIS_02.bat"
このプレイブックでは、作成したバッチファイルを実行しているだけですね。
バッチファイル
実行したバッチファイルと実行結果を確認していきます。
文字化けするバッチファイル(Test_Shift-JIS.bat)
Windowsのメモ帳などのテキストエディタでバッチを作成した際、特に設定をしなければ文字コードが「Shift-JIS(SJIS)」となると思います。
下記のバッチファイルは、文字コード「Shift-JIS」で保存したものになります。
バッチファイルの記述「cd %~dp0」は、バッチファイルのパスを取得する処理です。
詳しくは下記にまとめています。
@echo off cd %~dp0 echo Ansible AWX バッチ実行テスト> .\Test_Shift-JIS.log exit
Ansible AWXから実行され、出力されたファイル「Test_Shift-JIS.log」を確認してみます。
下記のように、日本語部分が文字化けしています。
Ansible AWX �o�b�`���s�e�X�g
バッチファイルを直接実行すると下記のように出力されます。
Ansible AWX バッチ実行テスト
文字化けせず、正しく出力されました。
では、何故、Ansible AWXから実行すると文字化けするのでしょうか?
それは、コマンドプロンプト経由、またはバッチファイルを直接実行した場合と、Ansible AWXから実行した場合のデフォルトの文字コードが下記のようになっているからです。
・コマンドプロンプト/バッチファイルを直接実行 → Shift-JIS(SJIS)
・Ansible AWX/Tower から実行 → UTF-8
では、これらを踏まえて、Ansible AWX環境でも文字化けしないバッチを見ていきたいと思います。
コマンドプロンプト(バッチファイル)で文字コードを確認する時は「chcp」コマンドを使います。
使用方法は下記にまとめていますので、合わせてご覧ください。
文字化けしないバッチファイル①(Test_UTF-8_01.bat)
バッチファイルの文字コード自体を「UTF-8」にすることで文字化けを回避出来ます。
下記のようにプログラムは同じ(出力ログ名は変えています)ですが、文字コードが「UTF-8」になっています。
@echo off cd %~dp0 echo Ansible AWX バッチ実行テスト> .\Test_UTF-8_01.log exit
このバッチを実行結果として出力されたファイル「Test_UTF-8_01.log」を確認してみます。
Ansible AWX バッチ実行テスト
文字化けしていませんね。このようにバッチファイル自体の文字コードを適切に変更することで文字化けを回避することが可能です。
文字化けしないバッチファイル②(Test_Shift-JIS_02.bat)
実行したバッチファイル内で文字コードを変更することで文字化けの回避が可能です。
下記のように、echoコマンドで文字列を出力する前に、chcpコマンドで文字コードを「Shift-JIS」に変更しています。
chcpコマンドでは、文字コードをIDで指定する必要があります。詳しくはリンク先の記事をご覧ください。
@echo off cd %~dp0 chcp 932 echo Ansible AWX バッチ実行テスト> .\Test_Shift-JIS_02.log exit
このバッチを実行結果として出力されたファイル「Test_Shift-JIS_02.log」を確認してみます。
Ansible AWX バッチ実行テスト
文字化けしていませんね。このようにバッチファイル中の処理で文字コードを適切に変更することで文字化けを回避することが可能です。
記事は以上です。本記事を参考に文字化けしないバッチファイルを組んでみて下さい。
コメント