Ansible的“ with_items”不会传递给Ansible角色

时间:2019-03-06 13:30:01

标签: ansible

我不知道这一点。我有要传递给Ansible角色的host_vars。我可以遍历剧本中的项目,但是如果我将该项目分配给Ansible角色则无法使用。我的主机清单如下:

hosts:
    host_one:
        domain: one
        ip: 172.18.1.1
        connection:
                - connection_name: two
                  connection_ip: 172.18.1.2

                - connection_index: three
                  local_hub_ip: 172.18.1.3

    host_two:
        domain: two
        ip: 172.18.1.2

例如,这可以正常工作:

  tasks:
    - debug:
          msg: "{{item.connection_name}}"
      with_items:
          - "{{ connection }}"

将正确打印出我拥有的每个连接“两个”和“三个”的connections.connection_name。但是,如果我尝试将其传递给角色:

  tasks:
    - name: Adding several connections
      include_role:
          name: connection-create
      with_items:
          - "{{ connection }}"

在其中我的角色“ connection-create”使用一个名为“ connection_name”的变量,我得到了:

  

失败! => {“ msg”:“'connection_name'未定义”}

为什么不起作用?

1 个答案:

答案 0 :(得分:2)

循环 with_items:“ {{connection}}” 创建循环变量 item 。包含的角色可以使用

item.connection_name
item.connection_ip

如果需要,可以重命名循环变量。参见Loop control