【问题标题】:Ansible 'with_items' doesn't pass over to Ansible roleAnsible 'with_items' 不会传递给 Ansible 角色
【发布时间】:2019-03-06 13:30:00
【问题描述】:

我想不通。我有想要传递给我的 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' 未定义"}

为什么这不起作用?

【问题讨论】:

    标签: ansible


    【解决方案1】:

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

    item.connection_name
    item.connection_ip
    

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

    【讨论】:

    • 我明白了,问题出在我的角色上,我有另一个“with_items”任务,所以我必须对其进行重组,以便使用“item.connection_name”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多