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

Ansible 2.9.6无法从vars_files加载变量报错如何解决?

问题原因

Ansible 中vars_files参数要求传入列表类型值,你当前playbook中该参数填写的是单个字符串,导致变量文件没有被正确加载,grp、user、id等变量均未定义,Jinja模板不会被渲染,直接把{{ grp }}作为原始字符串传给了group模块,因此触发了组名不合法的报错。

解决方法
  1. 修改playbook中的vars_files配置,将字符串改为列表格式,以下两种写法均可:
    • 单行列表写法:
      vars_files: ["vars/users.yaml"]
      
    • 多行列表写法(可读性更高):
      vars_files:
        - "vars/users.yaml"
      

修改后的完整playbook示例:

- name: play create users from var file
  hosts: all
  become: yes
  vars_files:
    - "vars/users.yaml"
  tasks:
  - name: group exists
    group:
      name: "{{ grp }}"
      state: present
  - name: user exists
    user:
      name: "{{ user }}"
      uid: "{{ id }}"
      state: present
      groups: "{{ grp }}"
      append: yes
  1. (可选)添加调试任务验证变量加载状态,可在group exists任务前添加如下内容,运行playbook如果能正常打印变量值,说明已加载成功:

    - name: 验证变量加载结果
      debug:
        msg: "组名:{{ grp }},用户名:{{ user }},UID:{{ id }}"
    
  2. 额外排查点:

    • 确认vars/users.yaml文件的读取权限正常,Ansible执行用户可访问该文件
    • 确认users.yaml文件语法正确,无缩进错误、键名拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:01