web-dev-qa-db-ja.com

ansibleコマンドでワイルドカードに言及する方法

Ansibleを介してシェルコマンドを実行しています。

時々私は完全なフォルダ名を持っていません。 dirname solr4.7.0があるとします。

シェルでは、cd solr*と入力できます。

しかし、ansibleではできません:

chdir=/var/solr*

回避策はありますか?

13
user3147180

いいえ。chdir=パラメータ(例:commandモジュール)はワイルドカードをサポートしていません。

レジスタ変数 を使用してlsコマンドの出力を保存することで目的を達成できます。

- Shell: ls -d solr*
  register: dir_name
- command: some_command
  args:
    chdir: "{{ dir_name.stdout }}"

しかし、これは率直に言って、醜い解決策です。実際のディレクトリ名を使用する方がよいでしょう。ホストごとに異なる場合は、ホスト変数を使用して適切に設定できます。

13
larsks

Larsksが書いたように、鍵はregisterを使用することですが、コードは私の現在のansibleバージョンでは機能しませんでした。だからここで修正されたもの:

- Shell: ls -d solr*
  register: dir_name

- command: chdir={{ item }} some_command
  with_items: dir_name.stdout_lines
7
Sasha