2017-02-17 2 views
4

を表示するための出力を取得する私は、次の脚本を持って、Playbook with outputAnsible:どのように

はエラーはありませんし、それが正常に動作します。ただし、出力はコンソールに表示されません。私は他のプレイブックでこれに遭遇し、脚本に次のタスクを追加することによって、その周りに持っている:

-debug: var=output.stdout_lines 

、それが出力します。しかし、私は、上記の で同じことをしようとしましたが、変数が定義されていないと言います(コードは ではありません)。

-debugを使用せずに出力をコンソールに出力するには、誰かがより良い方法を知っていますか?どんな可能な参考文献も非常に高く評価されます。

+0

利用-v潜在的なプレイブックを実行しているとき。 – andyhky

+0

おそらく、デバッグ行のスペースを省略することはできません。 ' - debug:...'にする必要があります。 –

答えて

10

実行時に実行できるすべてのタスクは、その結果を変数に保存できます。これを行うには、結果を保存する変数を指定する必要があります。これは、使用するモジュールとは無関係に、registerパラメータで行うことができます。

値を変数に保存した後は、後のタスクの後で使用することができます。あなたは次のように記述することができ、特定のタスクの標準出力を取得したいのであれば、たとえば:ここ

--- 
- hosts: localhost 
    tasks: 
    - shell: ls 
     register: shell_result 

    - debug: 
     var: shell_result.stdout_lines 

registershell_result変数にモジュールの応答を保存するためにansibleを伝え、その後、我々はdebugを使用変数を出力するモジュール。

例の実行は次のようになります。

PLAY [localhost] *************************************************************** 

TASK [command] ***************************************************************** 
changed: [localhost] 

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "shell_result.stdout_lines": [ 
     "play.yml" 
    ] 
} 

応答は複数のフィールドを含めることができます。 stdout_linesone of the default fieldです。モジュールの応答から期待できます。

すべてのフィールドは、あなたがstdoutまたはstdout_lines値には何も期待していない標準出力には何も返さないモジュールについては、例えば、しかしmsgフィールドは、この中で満たされるかもしれない、すべてのモジュールから利用できるわけではありません場合。また、標準以外の変数で何かを見つけるモジュールもあります。そのため、これらの非標準の戻り値については、モジュールのドキュメントを参照してください。

また、対応するプレイブックの冗長レベルを上げることもできます。さまざまな冗長度のレベル(-v,-vvvおよび-vvvv)を選択できます。あなたは、これは各モジュールの応答をプリントアウトします見ることができるように

PLAY [localhost] *************************************************************** 

TASK [command] ***************************************************************** 
(...) 
changed: [localhost] => { 
    "changed": true, 
    "cmd": "ls", 
    "delta": "0:00:00.007621", 
    "end": "2017-02-17 23:04:41.912570", 
    "invocation": { 
     "module_args": { 
      "_raw_params": "ls", 
      "_uses_shell": true, 
      "chdir": null, 
      "creates": null, 
      "executable": null, 
      "removes": null, 
      "warn": true 
     }, 
     "module_name": "command" 
    }, 
    "rc": 0, 
    "start": "2017-02-17 23:04:41.904949", 
    "stderr": "", 
    "stdout": "play.retry\nplay.yml", 
    "stdout_lines": [ 
     "play.retry", 
     "play.yml" 
    ], 
    "warnings": [] 
} 

を、利用可能なすべてのフィールド:たとえば、冗長(-vvv)と脚本を実行するときは、これを取得します。 stdout_linesが利用可能であることがわかります。内容は予期したとおりです。

あなたがit's documentationをチェックする場合は、次のことをしようとする場合がありますので、あなたは、それがoutputフィールドに出力を返すことがわかります、jenkins_scriptモジュールに関するあなたの主な質問に答えるために:

tasks: 
    - jenkins_script: 
     script: (...) 
    register: jenkins_result 

    - debug: 
     var: jenkins_result.output 
関連する問題