ITよろづや

ITから生活の参考になる情報を備忘録代わりに残していきます

Ansible win_command,win_shell 実行結果の日本語が文字化けする

Ansible win_command,win_shell 実行結果の日本語が文字化けする事象があります。

 

調べてみるとこちらも同様の事象が発生しているようです。

Ansibleで文字化けが起こる

 

Ansibleのplaybookでバッチファイルを実行したいです。
制御するコンピュータ上でバッチファイルの結果を出力したいので、ローカル環境でバッチファイルを実行するplaybookを作成しました。
バッチファイルはメッセージボックスで文字を出力するという処理が書かれています。
しかし、制御先コンピュータで出力した文字が必ず文字化けしてしまいます。

発生している問題・エラーメッセージ
文字化けしたメッセージが出力される
該当のソースコード
Ansible
ansible windows -m win_command -a "C:\work\com\bin\msg.bat"
試したこと
output_encoding_override
を使用しましたが、これはplaybookを実行させるコマンドを打った環境上(ローカル環境)で出力される際に文字コードを変更するので、
私がしたい処理とは異なっておりました。
ネットでこの問題についていくらか探しましたが、そもそもAnsibleが日本語対応をしていないなどが書かれておりました。
その情報通りにメッセージボックスに出力する内容を英語表記にすると、きちんと所望の文字が出力されました(当たり前かもしれませんが)。したがってplaybookの書き方は間違っていないと思います。

そこで、この文字化けを防ぐ方法とAnsibleは日本語対応をしていないのでバッチファイルに日本語があると文字化けが必ずするのかということについて分かる方、ご教授願います。

 

 

色々と切り分けをしてみましたが、やはり、文字化けしてしまいますね。

 

試したのは、powershellの英字出力に変更するというものをしましたが、画面が切り替わる動作が入るので効果なしでした。

 

その他、試したことですが、

 

まず、日本語が含まれる状態で出力したファイルをtypeコマンドで出力すると日本語表示されました。

 

これならうまくいくかと思って、AnsibleでWindowsサーバのローカルへリダイレクトしてからそのファイルをtypeコマンドで確認すると文字化けしていました。

 

コマンドを渡す時に、すでに文字コードが日本語対応されていないことが原因かもしれません。

 

今のところ、回避策が見つかっていません。

 

Ansible実践ガイド 第3版 impress top gearシリーズ