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

如何在Molecule group_vars中指定加密字符串?(无法识别!vault标签构造器)

解决Molecule中配置Ansible Vault变量报错的问题

问题描述

之前在角色的vars/main.yml里配置Vault加密变量一切正常,现在把变量移到Molecule的molecule/default/molecule.yml的group_vars中后,运行molecule test报错:

yaml.constructor.ConstructorError: could not determine a constructor for the tag '!vault'
  in "<unicode string>", line 50, column 28:
            wiki_password: !vault |

原因

Molecule的molecule.yml由自身YAML解析器处理,它不识别Ansible的!vault标签,直接写入会触发解析错误。

解决办法

方法一:将Vault变量放到单独的group_vars文件中(推荐)

  1. 在Molecule的inventory目录下创建group_vars子目录:
mkdir -p molecule/default/group_vars/all
  1. 在该目录下新建vault.yml文件,写入加密变量:
wiki_password: !vault |
  $ANSIBLE_VAULT;1.1;AES256
  63343237 ... 省略内容 ...
  1. 修改molecule/default/molecule.yml,移除group_vars.all里的wiki_password配置项。

这种方式下,Molecule会把该文件交给Ansible处理,Ansible能正常识别!vault标签并解密变量。

方法二:将加密内容转为字符串格式(不推荐)

如果一定要在molecule.yml里配置,把加密的多行内容转成带换行符转义的字符串:

wiki_password: "$ANSIBLE_VAULT;1.1;AES256\n63343237 ... 省略内容 ..."

需把每一行的换行替换成\n,并用双引号包裹整个内容。这种方法容易因格式错误导致解密失败,优先选择方法一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:35:45