2017-10-20 10 views
-1

J'utilise le module stat pour vérifier si certains fichiers existent sur un serveur distant et enregistrer leur résultat dans une variable. c'est-à-dire les fichiers de configuration que je cherche: conf_dev.conf, conf_pred.conf, conf_pro.conf. Plus tard, j'utilise le module de copie pour transférer uniquement les fichiers manquants en utilisant un conditionnel basé sur un attribut stocké dans variable.results. {{(ITEM) index}}. Stat.exists. Ceci renvoie TRUE si le fichier existe et FALSE si ce n'est pas le cas. Pour fonctionner correctement Comme la variable de registre est un tableau, il y a un index qui stocke le résultat pour chaque fichier que je demande donc je ne sais pas comment convertir l'élément en index (0,1,2,3Ansible - Comment boucle sur enregistrée

Est-ce que quelqu'un sait comment obtenir l'index d'un article? J'ai essayé ce (regardez la dernière ligne):

- 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 

Répondre

0

Pourquoi boucle-vous sur LIST_COMMON_CONFIGURATION_ARTIFACTS si vous voulez faire une boucle sur la variable enregistrée?

- 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 

Ici item est un élément des résultats et item.item est un élément de boucle d'origine.

P.S. Si les fichiers du dossier de destination ne sont pas modifiés et doivent être identiques à DIRTEMP_COMUN_CONFIG, vous ne devez pas utiliser stat + copy, mais utilisez simplement copy - car il est idempotent et ne copiera pas le même fichier deux fois.