web-dev-qa-db-fra.com

Comment Ansible peut-il "enregistrer" dans une variable le résultat de l'inclusion d'un playbook?

Comment un Ansible playbook register dans une variable le résultat de incluant un autre playbook?

Par exemple, les éléments suivants enregistreraient-ils le résultat de l'exécution de tasks/foo.yml dans result_of_foo?

tasks:
  - include: tasks/foo.yml
  - register: result_of_foo

Sinon, comment Ansible peut-il enregistrer le résultat d'une séquence de tâches?

15
Derek Mahar

La réponse courte est que cela ne peut pas être fait.

L'instruction register est utilisée pour stocker la sortie d'une seule tâche dans une variable. Le contenu exact de la variable enregistrée peut varier considérablement selon le type de tâche (par exemple, une tâche Shell inclura la sortie stdout & stderr de la commande que vous exécutez dans la variable enregistrée, tandis que la stat task fournira des détails sur le fichier transmis à la tâche).

Si vous avez un fichier include contenant un nombre arbitraire de tâches, Ansible n'a aucun moyen de savoir quoi stocker dans la variable de votre exemple.

Chaque tâche individuelle dans votre fichier include peut enregistrer des variables, et vous pouvez référencer ces variables ailleurs, il n'est donc vraiment pas nécessaire de faire quelque chose comme ça.

12
Bruce P

J'ai pu le faire en passant un nom de variable en tant que variable à utiliser dans la tâche. J'ai inclus mon main.yaml et inclus les fichiers cgw.yaml ci-dessous.

main.yaml:

- name: Create App A CGW
  include: cgw.yaml
  vars:
    bgp_asn: "{{ asn_spoke }}"
    ip_address: "{{ eip_app_a.public_ip }}"
    name: cgw-app-a
    region: "{{ aws_region }}"
    aws_access_key: "{{ ec2_access_key }}"
    aws_secret_key: "{{ ec2_secret_key }}"
    register: cgw_app_a

cgw.yaml:

- name: "{{ name }}"
  ec2_customer_gateway:
    bgp_asn: "{{ bgp_asn }}"
    ip_address: "{{ ip_address }}"
    name: "{{ name }}"
    region: "{{ region }}"
    aws_access_key: "{{ aws_access_key }}"
    aws_secret_key: "{{ aws_secret_key }}"
  register: "{{ register }}"
8
mcaulifn