2017-12-12 11 views
0

ディレクトリのリストをチェックし、そのディレクトリをフィルタリングして既存のディレクトリのみをフィルタリングし、そのリストを変数に格納するAniableプレイブックを作成しようとしています(事実?)。既存のディレクトリのフィルタリングされたリストを保存することに加えて、最初に見つかった既存のディレクトリを別の変数に保存したいと思います。Ansible:ディレクトリのリストから既存のディレクトリのみをフィルタリングする

私はそれをうまく動作させるのが難しく、私はそれをもっと難しくしているように感じています。助言がありますか?

- hosts: all 
    vars: 
    my_dirs: 
    - "https://stackoverflow.com/a/" 
    - "/b/" 
    - "/c/" 
    tasks: 

    - name: Checking existing file name 
    stat: 
     path: "{{ item }}" 
    with_items: "{{ my_dirs }}" 
    register: check_file_name 

    - name: Set fact 
    set_fact: 
     existing_paths: "{{ item.stat.path }}" 
    with_items: 
     "{{ check_file_name.results }}" 
    when: item.stat.exists | default(False) | bool 
+0

あなたはこれをしようとするとどうなりますか? – vmonteco

+1

[可能:その属性でリストをフィルタする](https://stackoverflow.com/questions/31895602/ansible-filter-a-list-by-its-attributes) – techraf

+0

上記を実行したとき、 existing_paths "varには単一のパスしか含まれません。 with_itemsの各ループは値を再設定します。 –

答えて

0

私はあなたがほとんどそれが働いてしまったと思いますが、配列に収集された結果、次のように脚本の何らかの変化が必要になることがあります:

 

    - set_fact: existing_paths="{{ [] }}" 

    - name: Set fact 
    set_fact: 
     existing_paths: "{{ existing_paths +[item.stat.path] }}" 
    with_items: 
     "{{ check_file_name.results }}" 
    when: item.stat.exists 

+0

ありがとう、それはとてもうまくいくようでした!私はそのようなリストを作成して追加することは決して考えなかったでしょう。 –

関連する問題