2016-07-07 3 views
0

私はカスタムのAnsibleモジュールにデバッグログを追加して、-vvvオプションがansible-playbookコマンドに提供されたときにログメッセージを表示するようにします。私はモジュールの結果がこのロギングの影響を受けないようにしたい。つまり、ログメッセージをstdoutまたはstderrに直接書き込むことは望ましくありません。カスタムAnsibleモジュールにデバッグロギングの標準/優先メソッドがありますか?

答えて

2

モジュールは通常リモートで実行されるため、実際には何も直接出力できません。

exit_jsonコールでモジュール内の追加データを返すことができます。

if module._verbosity >= 3: 
    module.exit_json(changed=True, debug="wooha!") 
else: 
    module.exit_json(changed=True) 

module._verbosity(-v = 1、-vvv = 3)詳細レベルに対応し、Ansible 2.1から利用可能です。

出典:Ansible Devel-listgithub

1

Ansibleモジュールがあるため、デバッグするのは難しいです:

  • モジュールはPythonのサブプロセスで実行されている

    • は、モジュールが正常にリモートで実行されている(ので、我々は、デバッグにpdbを使用することはできません)

    このようにして、Ansibleモジュールをデバッグできます。

    1. モジュールをローカルで実行します。これは、ホストをlocalhostに設定するか、またはAnibly local_actionモジュールを使用して実装できます。
    2. デバッグする変数を特定のファイルに書き込み/ログします。 Python qライブラリを使用してこれを行うことができます。
  • 関連する問題