在角色之间传递变量

时间:2019-11-10 09:03:17

标签: ansible

如何将角色1中定义的变量传递给角色2?

我想知道最好的方法

---
- name: deploy VM
  hosts: localhost
  roles:
    - deploy_vm ## Here I want to deploy the VM and get the VM name/IP address in variable.
    - deploy_tomcat_on_above_vm   ## I would like to use the VM name and pass it over the second role. 

我想使用VM名称并将其传递给第二个角色。

1 个答案:

答案 0 :(得分:1)

没有更多详细信息,简单的答案是:只需在第一个角色中分配var,然后在第二个角色中使用它。

同时,这可能不是处理您要尝试执行的操作的最佳方法。我会:

  1. 定位localhost(已完成)以运行deploy_vm角色。
  2. 从这一点来看:
    • 您有一个用于虚拟化基础架构的dynamic inventory,并且新虚拟机已经可用(可能有一个组,例如tomcat_servers
    • 或者您没有动态广告资源,因此您需要在同一游戏中add that vm to the in-memory inventory yourself
      - name: Add my new created vm to in-memory inventory
        add_host:
          name: "{{ my_vm_fqdn_or_ip }}"
          groups:
            - tomcat_servers
          ansible_inventory_var_1: value1 #  Optional inventory vars...
          ansible_inventory_var_2: value2
      
  3. 您现在可以在同一本剧本的第二部戏中直接将您的机器定位到您的机器,以部署tomcat

    - name: Now I registered my new tomcat vm(s), go for install
      hosts: tomcat_servers
    
      roles:
        - role: deploy_tomcat