Ansibleを介してシェルコマンドを実行しています。
時々私は完全なフォルダ名を持っていません。 dirname solr4.7.0
があるとします。
シェルでは、cd solr*
と入力できます。
しかし、ansibleではできません:
chdir=/var/solr*
回避策はありますか?
いいえ。chdir=
パラメータ(例:command
モジュール)はワイルドカードをサポートしていません。
レジスタ変数 を使用してls
コマンドの出力を保存することで目的を達成できます。
- Shell: ls -d solr*
register: dir_name
- command: some_command
args:
chdir: "{{ dir_name.stdout }}"
しかし、これは率直に言って、醜い解決策です。実際のディレクトリ名を使用する方がよいでしょう。ホストごとに異なる場合は、ホスト変数を使用して適切に設定できます。
Larsksが書いたように、鍵はregister
を使用することですが、コードは私の現在のansibleバージョンでは機能しませんでした。だからここで修正されたもの:
- Shell: ls -d solr*
register: dir_name
- command: chdir={{ item }} some_command
with_items: dir_name.stdout_lines