前提・実現したいこと
■前提条件:
- コントロールノード(Ansibleサーバ):
・サーバOS:CentOS Linux release 8.4.2105
・Ansibleバージョン:ansible 2.9.21
・Pythonバージョン:3.6.8
・可読性の観点からansible.cfgにて出力形式を「stdout_callback = yaml」に指定
- マネージドノード(構築対象サーバ):
・サーバOS:CentOS Linux release 8.4.2105
・Pythonバージョン:3.6.8
■実現したいこと:
ansible-playbook実行時に、日本語が含まれるファイルの内容を戻り値「stdout」に出力したい
(shellモジュールを用いて日本語が含まれるファイルをcatする)
※ユースケースとしては、構築対象サーバの設定ファイルの中身をログに出力させて証跡として残すため
発生している問題・エラーメッセージ
下記の通り、戻り値「stdout」で日本語が表示されない
[root@AnsibleController work]# ansible-playbook -i rhel_inventory playbook.yml -v Using /work/ansible.cfg as config file PLAY [dev_rhel] ***************************************************************************************************** TASK [rhel : Display Japanese Text] ********************************************************************************* changed: [172.16.1.201] => changed=true ansible_facts: discovered_interpreter_python: /usr/libexec/platform-python cmd: cat /tmp/nihongo.txt delta: '0:00:00.003316' end: '2021-05-14 10:35:29.877294' rc: 0 start: '2021-05-14 10:35:29.873978' stderr: '' stderr_lines: <omitted> stdout: |2+ stdout_lines: <omitted> PLAY RECAP ********************************************************************************************************** 172.16.1.201 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
該当のソースコード
Playbook
1- name: Display Japanese Text 2 shell: cat /tmp/nihongo.txt
#nihongo.txt これは 日本語で 書かれた ファイルです。
試したこと
・debugモジュールを用いて「stdout_lines」の中身を出力したところ問題なくリストに格納されていた
[root@AnsibleController work]# ansible-playbook -i rhel_inventory playbook.yml -v Using /work/ansible.cfg as config file PLAY [dev_rhel] ***************************************************************************************************** TASK [rhel : Display Japanese Text] ********************************************************************************* changed: [172.16.1.201] => changed=true ansible_facts: discovered_interpreter_python: /usr/libexec/platform-python cmd: cat /tmp/nihongo.txt delta: '0:00:00.003377' end: '2021-05-14 10:40:40.254176' rc: 0 start: '2021-05-14 10:40:40.250799' stderr: '' stderr_lines: <omitted> stdout: |2+ stdout_lines: <omitted> TASK [rhel : Debug] ************************************************************************************************* ok: [172.16.1.201] => result.stdout_lines: - これは - 日本語で - 書かれた - ファイルです。 PLAY RECAP ********************************************************************************************************** 172.16.1.201 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
・「stdout_callback」にてデフォルトの「skippy」を指定すると問題なく日本語は表示される
[root@AnsibleController work]# ansible-playbook -i rhel_inventory playbook.yml -v Using /work/ansible.cfg as config file PLAY [dev_rhel] ***************************************************************************************************** TASK [rhel : Display Japanese Text] ********************************************************************************* changed: [172.16.1.201] => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": true, "cmd": "cat /tmp/nihongo.txt", "delta": "0:00:00.004166", "end": "2021-05-14 10:46:47.755621", "rc": 0, "start": "2021-05-14 10:46:47.751455", "stderr": "", "stderr_lines": [], "stdout": "これは\n日本語で\n書かれた\nファイルです。", "stdout_lines": ["これは", "日本語で", "書かれた", "ファイルです。"]} TASK [rhel : Debug] ************************************************************************************************* ok: [172.16.1.201] => { "result.stdout_lines": [ "これは", "日本語で", "書かれた", "ファイルです。" ] } PLAY RECAP ********************************************************************************************************** 172.16.1.201 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
・日本語が一行の場合も問題なく表示される
#nihongo.txt これは日本語で書かれたファイルです。
[root@AnsibleController work]# ansible-playbook -i rhel_inventory playbook.yml -v Using /work/ansible.cfg as config file PLAY [dev_rhel] ***************************************************************************************************** TASK [rhel : Display Japanese Text] ********************************************************************************* changed: [172.16.1.201] => changed=true ansible_facts: discovered_interpreter_python: /usr/libexec/platform-python cmd: cat /tmp/nihongo.txt delta: '0:00:00.003362' end: '2021-05-14 10:48:34.242203' rc: 0 start: '2021-05-14 10:48:34.238841' stderr: '' stderr_lines: <omitted> stdout: これは日本語で書かれたファイルです。 stdout_lines: <omitted> TASK [rhel : Debug] ************************************************************************************************* ok: [172.16.1.201] => result.stdout_lines: - これは日本語で書かれたファイルです。 PLAY RECAP ********************************************************************************************************** 172.16.1.201 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
補足情報
上記結果から改行文字「\n」が影響しているとあたりをつけていますが、
対処法について不明なためご教示頂けると幸いです。
情報不足しておりましたらご指摘ください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/25 00:22