宛先セクションにwith_items
を実行するときに複数の連結を試みています。
現在、次のようになっています。
- name: create app except+lookup
copy: content="" dest="{{ dir.comp ~ '/config/con2dd/' ~ item.name ~ 'File.txt' }}" force=no group=devops owner=devops mode: 0755
with_items:
...
私は得る:
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
with_items:
- {{ foo }}
Should be written as:
with_items:
- "{{ foo }}"
いくつかのアプローチを試してみましたが、機能するものはありませんでした。
変数を文字列と連結することは可能ですか?
パラメーターに純粋なYAML構文とkey = value構文を混在させないでください。そして、複雑な引数には常にYAML構文を使用します。
- name: create app except+lookup
copy:
content: ""
dest: "{{ dir.comp }}/config/con2dd/{{ item.name }}File.txt"
force: no
group: devops
owner: devops
mode: 0755
with_items:
...
キーcopy
に関連付けられた値を引用していません。そのためには、first文字を二重引用符(または単一引用符)にする必要があります。フィードバックで与えられた例は、これを正しく行いますが、それについて明示的ではありません。スカラーが非引用符で始まる(スカラーで発生するc
クォートからのcontent
で始まるものは、もはや特別な意味を持ちません。
Ansibleが使用するパーサーのバグのため、:
(コロンスペース)そのスカラー(mode: 0755
)は問題を引き起こします。スカラー全体を二重引用符で囲み、その中にある二重引用符をエスケープする必要があります。
copy: "content=\"\" dest=\"{{ dir.comp ~ '/config/con2dd/' ~ item.name ~ 'File.txt' }}\" force=no group=devops owner=devops mode: 0755"
または、単一引用符を使用します(エスケープ規則は異なります:
copy: 'content="" dest="{{ dir.comp ~ ''/config/con2dd/'' ~ item.name ~ ''File.txt'' }}" force=no group=devops owner=devops mode: 0755'
this オンラインYAMLパーサーで自分でスカラーをテストできます。これには、AnsibleがYAMLを正しく解析しない原因と同じバグがあります。
これ パーサー、スカラー:
が正しく、入力にエラーは発生しません(ただし、他の問題があります)。