Ansible:循环变量'item'已在使用中

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

我想以类似于以下内容的方式运行任务。

#Task in Playbook

    - name : Include tasks 
      block:
      - name: call example.yml
        include_tasks: "example.yml"
        vars:
          my_var: item
        with_items:
        - [1, 2]
# example.yml

- name: Debug.
  debug:
    msg:
    - "my_var: {{ my_var }}"
  with_inventory_hostnames:
    - 'all'

我希望输出在剧本的循环的第一次迭代中将my_var打印为值1,在第二次迭代中将其打印为值2。但是,它正在打印主机名

# Output

TASK [proxysql : Debug.] ************************************************************************************************
 [WARNING]: The loop variable 'item' is already in use. You should set the `loop_var` value in the `loop_control` option for the task to something else to avoid variable collisions and unexpected behavior.
ok: [10.1xx.xx.xx] => (item=None) => {
    "msg": [
        "my_var: 10.134.34.34"
    ]
}
ok: [10.1xx.xx.xx] => (item=None) => {
    "msg": [
        "my_var: 10.123.23.23"
    ]
}
ok: [10.1xx.xx.xx] => (item=None) => {
    "msg": [
        "my_var: 10.112.12.12"
    ]
}

TASK [proxysql : Debug.] ************************************************************************************************
 [WARNING]: The loop variable 'item' is already in use. You should set the `loop_var` value in the `loop_control` option for the task to something else to avoid variable collisions and unexpected behavior.
ok: [10.1xx.xx.xx] => (item=None) => {
    "msg": [
        "my_var: 10.134.34.34"
    ]
}
ok: [10.1xx.xx.xx] => (item=None) => {
    "msg": [
        "my_var: 10.123.23.23"
    ]
}
ok: [10.1xx.xx.xx] => (item=None) => {
    "msg": [
        "my_var: 10.112.12.12"
    ]
}

提前感谢

ansible ansible-2.x
1个回答
0
投票

有两个问题:

  1. 在剧本中,任务包含在循环中,循环的名称为item,并且包含的​​任务也具有循环,并且默认变量名称再次为item。这就是为什么警告消息并使用loop_control解决该问题。

  2. [my_var: item分配必须采用my_var: "{{ item }}"格式才能正确分配。

经过两次更正,剧本看起来像这样。

  - name : Include tasks 
    block:
    - name: call example.yml
      include_tasks: "example.yml"
      vars:
        my_var: "{{ outer_item }}" 
      with_items:
      - [1, 2]
      loop_control:
        loop_var: outer_item
© www.soinside.com 2019 - 2024. All rights reserved.