2017-10-20 6 views
-1

リモートサーバーにファイルがいくつか存在するかどうかをチェックし、その結果を変数に登録するためにmodule statを使用しています。すなわち私が探している設定ファイル:conf_dev.conf、conf_pred.conf、conf_pro.confAnsible - Howループオーバー登録

後で私は、 variable.results {{(ITEM)index}}に格納された属性に基づいて条件付きで失われたファイルのみを転送するためにコピーモジュールを使用しています。 ファイルが存在する場合はTRUEを返し、存在しない場合はFALSEを返します。

正しく実行するためには、レジスタ変数は配列なので、私が質問する各ファイルの結果を格納するインデックスがありますので、インデックス内の項目をどのように変換するのかわかりません(0,1,2,3 )

誰かがアイテムのインデックスを取得する方法を知っていますか?なぜあなたはLIST_COMMON_CONFIGURATION_ARTIFACTSをループを使用すると、登録した変数をループ化したいなら

- name: Checking if common configuration files exists 
    stat: 
    path: "{{HOME_COMUN_CONFIG}}/{{item}}" 
    with_items: "{{LIST_COMMON_CONFIGURATION_ARTIFACTS}}" 
    register: store_results 

- name: debug existe_app_comun 
    debug: 
    var: store_results 

- name: Deploying missing files 
    copy: 
    src: "{{DIRTEMP_COMUN_CONFIG}}/{{item}}" 
    dest: "{{HOME_COMUN_CONFIG}}/{{item}}" 
    with_items: "{{LIST_COMMON_CONFIGURATION_ARTIFACTS}}" 
    when: existe_app_comun.results.{{index(item)}}.stat.exists is defined 

答えて

0

:私はこの(最後の行を見て)試しましたか?

ここ
- name: Deploying missing files 
    copy: 
    src: "{{DIRTEMP_COMUN_CONFIG}}/{{ item.item }}" 
    dest: "{{HOME_COMUN_CONFIG}}/{{ item.item }}" 
    with_items: "{{ existe_app_comun.results }}" 
    when: item.stat.exists 
item

結果の要素であり、item.itemは、元のループの要素です。

P.S.宛先フォルダのファイルが変更されておらず、DIRTEMP_COMUN_CONFIGと同じである場合は、stat + copyを使用しないでください。ただし、偶数で、同じファイルを2回コピーしないため、copyを使用してください。