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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible'with_items'不会传递给Ansible角色相关的知识,希望对你有一定的参考价值。

我无法弄清楚这一点。我有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'未定义”}

为什么这不起作用?

答案

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

item.connection_name
item.connection_ip

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

以上是关于Ansible'with_items'不会传递给Ansible角色的主要内容,如果未能解决你的问题,请参考以下文章

在ansible中使用double with_items循环

ansible-playbook循环安装软件包(with_items)

将项目分配给ansible中的var with_items

使用with_items在同一个循环中的Ansible循环

Ansible Playbook 使用循环语句

Ansible进阶之roles详解