1

Ansible v1.3 を使用して、サーバーのグループで bash スクリプトを実行しています。Ansible が出力を正しくフォーマットすることを期待しているもので出力を動作させようとしていますが、何かが欠けています。

スクリプト出力が JSON としてフォーマットされている場合、Ansible はそれを取得して出力に含めることをどこかで読みました (リンクが見つかりません!)。

そのため、スクリプトで最後に行うことは次のとおりです。

cat <<EOF
{
    "value" : $value
}
EOF

スクリプトを次のように呼び出します。

ansible target_hosts -m script -a script.sh

そして、私が得る出力は次のようなものです:

X.X.X.X | success >> {
    "rc": 0,
    "stderr": "",
    "stdout": "value=96\r\n"
}

私は次のようなものを見ることを期待しています:

X.X.X.X | success >> {
    "rc": 0,
    "stderr": "",
    "stdout": "",
    "value": "96"
}

私は何が欠けていますか?

4

1 に答える 1

3

問題は、モジュールをスクリプトとして実行していることです。フォルダーを作成し、libraryそこにスクリプトを配置します。その後、次を使用してスクリプトを実行できます。

ansible target_hosts -m script.sh

疑問がある場合は、http: //jpmens.net/2012/07/05/shell-scripts-as-ansible-modules/をご覧ください。

: ファイルの先頭に a を含めることを忘れないでください。そうしないと#!/bin/bash、ansible は次のようなメッセージで失敗します。target_host | FAILED => module is missing interpreter line

于 2013-11-21T20:47:48.677 に答える