プログラムで生成されたAnsibleプレイブックを使用しています。一般的に、プレイブックは単なるYAMLであるため、これは簡単です。ただし、「シンプルな」key=value
フォームを使用する場合、プレイブックは純粋なYAML ではなく、shlex
解析可能なフォームに埋め込まれたコンテンツが含まれます。
この形式のあいまいさを回避し(key=value
コマンドの引数またはansibleの引数をペアにしていますか?)、解析および生成するフォーマットが1つしかないため、無条件に例で示されている複雑な引数メカニズムを無条件に使用しています-examplesリポジトリ。
これは、次の種類の構文を使用します。
action: module-name
args:
key1: value1
key2: value2
...それはよくて良いです。ただし、このフォームをshell
またはcommand
モジュール(ドキュメントには実際のコマンドがという引数で渡されると記述されているfree_form
)に使用しようとすると、うまく機能しません。
action: shell
args:
free_form: echo hello_world >/tmp/something
creates: /tmp/something
呼び出されると、これは以下を実行します。
/bin/sh -c " free_form='echo hello_world >/tmp/something' "
...これは、私が達成しようとしていることではありません。
純粋なYAML構文を使用して「自由形式」のコマンドを取得するAnsibleモジュールを使用する正しい方法は何ですか?
- shell: ...
ますか?この構造が手作業でのみ確実に生成できるものである場合、それは問題の要点をいくらか無効にします。