Как Ansible может "зарегистрировать" в переменной результат включения playbook?

как Анзибль playbook register в переменной результат в том числе другое книги?

например, будет ли следующее регистрировать результат выполнения tasks/foo.yml на result_of_foo?

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

как еще Ansible может записывать результат последовательности задач?

2 ответов


короткий ответ заключается в том, что это невозможно сделать.

на Регистрация оператор используется для хранения вывода одной задачи в переменную. Точное содержимое зарегистрированной переменной может сильно отличаться в зависимости от типа задачи (например, a shell задача будет включать вывод stdout & stderr из команды, которую вы запускаете в зарегистрированной переменной, в то время как stat task предоставит сведения о файле, который передается задаче).

Если вы имейте include-файл с произвольным количеством задач внутри него, тогда Ansible не сможет узнать, что хранить в переменной в вашем примере.

каждая отдельная задача в вашем файле include может регистрировать переменные, и вы можете ссылаться на эти переменные в другом месте, поэтому нет необходимости даже делать что-то подобное.


я смог сделать это, передав имя переменной в качестве переменной, которая будет использоваться в задаче. Я включил свою основную.ямл и включил кгв.файлы yaml ниже.

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 }}"