如何将 Ansible 剧本变量从主剧本传递到链接剧本?

mur*_*ers 2 ansible

我试图找出如何将“主”剧本中定义的 Ansible 剧本变量传递到我已经在我的主剧本中引用的其他剧本中。

例如,使用下面的“主”剧本,我想将sethostnamesetipaddress的值传递给我的任务部分中引用的剧本 [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
Run Code Online (Sandbox Code Playgroud)

Tj *_*lie 5

从 Ansible 2.4 开始,您现在可以导入剧本,这意味着它们将在解析剧本时进行预处理,并将按照您导入的顺序运行。查看文档以获取有关导入与包含此处的完整信息http://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_includes.html

您可以像传递其他 include_* 任务一样将变量传递给它们。

  tasks:
    - import_playbook: playbook1.yml
      vars:
        sethostname: "{{ sethostname }}"
        setipaddress "{{ setipaddress }}"
Run Code Online (Sandbox Code Playgroud)