Как 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 }}"