You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible运行任务报unexpected parameter type in action错误如何解决?

错误根因

vars_files是Play或角色层级的配置参数,不支持直接定义在单个任务的属性中。你将它放在任务层级时,Ansible会把序列类型的vars_files误识别为任务的动作参数,触发参数类型不匹配的报错。

解决方案

两种方案都可以满足你加载外部变量文件的需求:

方案1:在Play层级声明vars_files

在调用该角色的Playbook中,将vars_files配置在Play的全局属性位置:

---
- name: 运行ilias6相关部署
  hosts: 你的目标主机组
  vars_files:
    - /home/<user>/ansible/ilias6/roles/keysAndUsers/lists/userCreateList.yaml
  roles:
    - keysAndUsers

配置后删除原任务中的vars_files字段即可,users变量可以在整个Play的任务中直接调用。

方案2:在任务列表中使用include_vars模块加载

如果你需要在任务执行的特定节点加载变量,可单独新增一个include_vars任务放在创建用户的任务之前,修改后的roles/keysAndUsers/tasks/main.yaml内容如下:

---
- name: 加载用户列表变量文件
  include_vars:
    file: /home/<user>/ansible/ilias6/roles/keysAndUsers/lists/userCreateList.yaml

- name: createUser and add to sudoer
  become: yes
  user:
    name: "{{ item }}"
    groups: "sudo, www-data"
    password: "{{ 'password' | password_hash('sha512', 'mysecretsalt') }}"
    update_password: on_create
    state: present
    shell: /bin/bash
    system: no
    createhome: yes
  loop: "{{ users }}"
  register: useradd
    
- name: change user password upon creation
  shell: chage -d 0 "{{ item.name }}"
  loop: "{{ useradd.results }}"
  when: item.changed

内容的提问来源于stack exchange,提问作者alessio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:27:03