2017-10-20 1 views
-1

Ich verwende die Modul-Statistik, um zu überprüfen, ob einige Dateien in einem Remote-Server vorhanden sind, und ihr Ergebnis in einer Variablen zu registrieren. d. h. Konfigurationsdateien, nach denen ich suche: conf_dev.conf, conf_pred.conf, conf_pro.conf.Ansible - Wie Schleife über registriert

Später verwende ich das Copy-Modul für die Übertragung nur der Dateien, die fehlen, mit einer bedingten basierend auf einem Attribut in Variable.Ergebnisse. {{(ITEM) Index}}. Stat.exists. Dies gibt returnTRUE zurück, wenn die Datei existiert, und FALSE, wenn dies nicht der Fall ist.

Zum ordnungsgemäßen Betrieb Da die Registervariable ein Array ist, gibt es einen Index, der das Ergebnis für jede Datei speichert, die ich anfrage, daher kann ich das Element nicht in einen Index konvertieren (0,1,2,3)

Kann jemand den Index eines Einzelteils erhalten? Ich habe diesen (Blick auf der letzte Zeile) versucht:

- 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 

Antwort

0

Warum Sie Schleife über LIST_COMMON_CONFIGURATION_ARTIFACTS, wenn Sie über registrieren Variable Schleife wollen?

- 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 Hier ist ein Element der Ergebnisse und item.item ist ein Element der ursprünglichen Schleife.

P.S. Wenn die Dateien im Zielordner nicht geändert werden und dieselben wie in DIRTEMP_COMUN_CONFIG sein sollen, dann dürfen Sie nicht stat + copy verwenden, sondern einfach copy verwenden - weil es idempotent ist und die gleiche Datei nicht zweimal kopiert.

Verwandte Themen