Ansible'with_items'不会传递给Ansible角色

问题描述 投票:0回答:1

我无法弄清楚这一点。我有host_vars,我想传递给我的Ansible角色。我可以遍历我的剧本中的项目,但如果我将该项目放入我的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'未定义”}

为什么这不起作用?

ansible
1个回答
2
投票

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

item.connection_name
item.connection_ip

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

© www.soinside.com 2019 - 2024. All rights reserved.