首页 > 解决方案 > 该任务包括一个带有未定义变量的选项。错误是:“项目”未定义

问题描述

当我运行以下剧本时,我遇到了错误。

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

解决方案


不可能完成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,则可以include_tasksloop. 例如,创建一个包含所有任务的文件

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

推荐阅读