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
相关产品推荐
相关产品推荐

