- あなたは神社のテンプレートを使用することができますが、あなたの特定のコードが複数行のコードを
- 最も賢明である何かをしていません異なり
- あなたが
shell
を使用する必要がありますモジュール。コールのマルチコード片の
例:
- name: run multiline stuff
shell: |
for x in "${envvar}"; do
echo "${x}"
done
args:
executable: /bin/bash
ノート私は明示的にbash-isms
がうまくいくことを確認しますexecutable
を設定しています。
ちょうどenvvar
を使用しました。、利用可能な任意の環境変数です。
あなたが特定のenv変数を渡す必要がある場合、あなたはを参照して、shell
モジュールへのコールのenvironment
句を使用する必要があります。echo "myvar: {{myvar}}"
:あなただけのシェルでその値を使用することができ、単純な変数ではhttp://docs.ansible.com/ansible/playbooks_environment.html
もしあなたが潜在的なリスト/タプル変数をbashコードの中で使いたいならば、最初にbash変数にすることができます。例えばmylist
にリストがある場合は、展開してbash配列に代入して反復処理を行うことができます。 shell
へのコールのシェルコードは次のようになります
mylist_for_bash=({{mylist|join(" ")}})
for myitem in "${mylist_for_bash[@]}"; do
echo "my current item: ${myitem}"
done
別のアプローチは、文字列のenv変数として渡し、そしてコードの後半の配列に変換することであろう。
注:もちろん このすべては、私はベストプラクティスのために、ジェレミー・ヒューイ@アイテム
を含む空間で配列を渡すために持っていたことがありませんのみSPACELESS値 で正しく動作しますが、 'shellcheck'を使用してください。スクリプトレットをファイルに書き込んで、次のコマンドを実行します。 'shellcheck myfile.sh' これは、何をすべきかに関する様々な警告を表示します。 https://github.com/koalaman/shellcheck –
それで、 '$ {envvar} 'は../var dirのリストになり、該当する安全な役割がありますか? –
@JeremyHuey私はちょうど例として、いくつかの環境変数を利用しました。特定のenv変数を渡す必要がある場合は、 'shell'モジュールへの呼び出しの' environment'節を使用する必要があります。http://docs.ansible.com/ansible/playbooks_environment.html –