Как я могу передать переменные Ansible playbook из основного playbook в связанный playbook?

Я пытаюсь выяснить, как передать переменные Ansible playbook, определенные в «master» playbook, в другие playbooks, на которые я уже ссылался в своем главном playbook.

Например, с помощью приведенного ниже «основного» сценария я хотел бы передать значения sethostname и setipaddress в playbook [1-3] .yml, на который есть ссылки в моих задачах. раздел. Это было бы похоже на вызов функций на других языках программирования.

---
- hosts: all
  become: yes

  vars_prompt:
   - name: "sethostname"
     prompt: "What will be the machine's hostname?"
     private: no

   - name: "setipaddress"
     prompt: "What will be the machine's IP address?"
     private: no

  tasks:
    - include: playbook1.yml
    - include: playbook2.yml
    - include: playbook3.yml

person murkywaters    schedule 11.04.2018    source источник
comment
① Вы не включаете плейбуки в опубликованный вами код. Вы включаете задачи. ② Определенные вами переменные доступны для задач, которые вы включаете таким образом.   -  person techraf    schedule 12.04.2018


Ответы (2)


Начиная с Ansible 2.4, вы можете импортировать плейбуки, то есть они будут предварительно обработаны во время анализа плейбука и будут запускаться в том порядке, в котором вы их импортируете. Ознакомьтесь с документами для получения полной информации об импорте и включении здесь http://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_includes.html

Вы можете передавать им vars так же, как и другим задачам include_ *.

  tasks:
    - import_playbook: playbook1.yml
      vars:
        sethostname: "{{ sethostname }}"
        setipaddress "{{ setipaddress }}"
person Tj Kellie    schedule 12.04.2018

Ответ Келли не совсем точен, playbooks не могут быть импортированы на уровне задачи только на самом верхнем уровне playbook. Итак, это работает:

- import_playbook: playbook1.yml
  vars:
    sethostname: "{{ sethostname }}"
    setipaddress "{{ setipaddress }}"
person Mayuresh Gaitonde    schedule 12.05.2020