【问题标题】:The task includes an option with an undefined variable. The error was: 'item' is undefined该任务包括一个带有未定义变量的选项。错误是:“项目”未定义
【发布时间】:2020-06-04 08:41:25
【问题描述】:

当我运行以下 playbook 时出现以下错误。

fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'item' is undefined\n\nThe error appears to have been in '/home/thor/user.yml': line 8, column 9, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n  tasks:\n      - name: create users\n        ^ here\n"}


---
- name: create user
  hosts: localhost
  become: true
  become_user: root
  become_method: sudo
  tasks:
      - name: create users
        user:
           name: "{{ item.name }}"
           state: present
      - debug:
           var: "{{ item.message }}"
        with_items:
              - { name: amit, message: amit_done }
              - { name: ankit, message: ankit_done }

这在我评论调试模块时有效。

【问题讨论】:

    标签: ansible


    【解决方案1】:

    loop 不能执行多个任务。如果您愿意,请将消息放入 label。例如

      tasks:
        - name: create users
          user:
            name: "{{ item.name }}"
            state: present
          loop:
            - {name: amit, message: amit_done}
            - {name: ankit, message: ankit_done}
          loop_control:
            label: "{{ item.message }}"
    

    或者,如果您确实需要在 loop 中执行更多任务,可以在 loopinclude_tasks。例如,创建一个包含所有任务的文件

    shell> cat create_users.yml
    - name: create users
      user:
        name: "{{ item }}"
    - debug:
        msg: "{{ item }} done"
    

    并将其包含在 loop

      tasks:
        - include_tasks: create_users.yml
          loop:
            - amit
            - ankit
    

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2019-09-19
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多