问题标签 [ansible-vault]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ansible - Ansible:如何在 group_vars 中使用字典中的常规变量和加密变量?
我正在尝试将我的 group_vars 拆分为未加密的“vars”和加密的“Vault”。由于官方文档很短,我按照这里给出的非常详尽的教程进行操作。通过他们的示例设置,我可以使其工作。vars 文件引用拱形部分,如下所示:
现在我的真实用例在这些文件中有字典,如下所示:
我的保管库文件以类似的方式组织,这就是行不通的:
我得到的结果是:Ansible 确实找到了所有加密的变量。但它声称常规的未定义。这是调试输出中缺少 mysql_user 的调试命令的输出:
非常感谢我必须做的任何提示!还是我试图做一件不可能的事情?
encryption - Ansible 检查文件是否被 ansible-vault 加密
我需要使用ansible-vault
. 仅当文件尚未由 ansible Vault 加密时,我才想执行加密。我正在尝试在我的 Ansible 剧本中使用此任务:
在条件语句中是否有逻辑可以检查文件是否已经被加密ansible-vault
?
ansible - 环境变量未在 ansible 角色中使用 Vault 文件设置
我的剧本(test.yml
)如下所示:
我收到以下错误:
任务 [env : 加载 VPC 变量文件] ***************************************** ****************************************************** *************致命:[本地主机]:失败!=> {"failed": true, "msg": "'environment' 字段的值无效,似乎包含未定义的变量。错误是:'access' is undefined\n\n错误似乎是已在“/var/yogesh/test/roles/env/tasks/main.yml”中:第 1 行第 3 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。\n\n出现问题的行为:\n\n\n- 名称:加载 VPC 变量文件\n ^ here\n"}
播放回顾 ************************************************ ****************************************************** ************************************ 本地主机:正常=0 更改=0 无法访问=0
失败=1
我的角色(roles/env/tasks/main.yml
)如下:
这vault.yml
看起来像:
test.yml
并且vault.yml
在同一个目录中。
现在,如果我像下面这样更改剧本test.yml
,它会以某种方式起作用。
我不确定为什么会这样。有人可以解释一下吗?我们是否必须仅在 vars_files 中声明 Vault 文件?有没有更好/最佳实践的选择?
Ansible 版本:2.3.0.0
linux - Ansible Vault 未读取已定义的变量
我正在为 Cumulus-Linux(白盒)网络开发 Ansible 自动化。我正在使用 Ansible Vault 加密我想要在新 Cumulus 交换机上构建的本地帐户的密码。但是,当我运行剧本时,似乎 ansible 能够从我的保险库加密文件中读取用户名变量,但不能读取我定义的密码变量。无法检查 Ansible 将这些密码设置为什么;当然,即使在 -vvvv Ansible 输出中,密码也是加密的。
根据我看到的每个 Ansible Vault 示例,我的变量都是这样定义的(引用加密变量的未加密变量):
- “user”从“vault_user”获取其值,该值位于我的 vault-encrypted 变量文件中。
- “password”从“vault_password”中获取其值,该值也位于我的保管库加密文件中。
我目前的剧本结构:
我的剧本中创建/修改帐户的实际部分:
/group_vars/all/main.yml 中的变量定义
然后,在保管库加密文件中,/group_vars/all/vault.yml(不共享实际帐户信息):
加密密码存储在一个单独的文件中,我通过 jenkins 自动化/Github 将 Ansible 指向该文件(而不是在 ansible.cfg 中定义保险库密码文件)。
问题:
当我运行这个剧本时,它成功完成,它实际上读取了我的保管库文件并创建了“xxxx”用户帐户。但是,它似乎没有将帐户密码设置为我定义的值,因为之后我无法使用这些凭据登录。我验证了该帐户已正确创建,并且随后出现在 sudoers 组中。
如果 ansible 可以读取存储的“用户”变量,为什么它不能读取相同的“密码”变量?
我什至尝试使用未加密的纯文本文件运行它——ansible STILL 无法正确读取我的“密码”变量。
有没有人知道一种黑客或方法来查看 Ansible 在运行时将什么纯文本值插入到这个变量中(可能是一个愚蠢的问题,因为这将是一个巨大的安全风险!)?
ansible - Ansible lineinfile 没有将最后一行复制到服务器
我正在尝试将秘密 Python 设置文件从设置服务器复制到生产环境。由于设置包含密码,我正在使用 Ansible Vault。
我的剧本如下所示:
我的 settings.yml 看起来像这样:
但是,当我运行剧本时,我得到了文件:
即使 Ansible 声称最后一行也被复制:
我做错了什么导致这个?
Ansible 版本:
ansible - 在 Ansible 中使用 vault 给出:不能连接 'str' 和 'AnsibleVaultEncryptedUnicode'
我正在尝试debops.nullmailer
在 Ansible (2.4) 上使用在我的主机上配置 nullmailer。我想在变量中加密密码,所以我希望使用保险库功能来加密秘密。我的剧本如下所示:
但是,应用它--ask-vault-pass
会产生一个冗长的错误:
任务 [debops.nullmailer : 生成私有配置文件] *************************************** ****************************************************** ****************************************************** ************************************
致命的:[talkbot]:失败!=> {"failed": true, "msg": "[{u'dest': u'/etc/nullmailer/remotes', u'content': u\"{{lookup('template', 'lookup/ nullmailer__remotes.j2') | 来自_yaml | join('\n') }}\", u'group': u'mail', u'mode': u'0600', u'owner': u'mail'}]: 运行时出现未处理的异常查找插件“模板”。错误是原始消息:意外的模板类型错误发生在 ({% set nullmailer__tpl_remotes = [] %}\n{% for entry in (nullmailer__default_remotes + nullmailer__remotes) %}\n{% set nullmailer__tpl_entry = [] %}\n{% if entry is string %}\n{% set _ = nullmailer__tpl_remotes.append(entry) %}\n{% elif entry is mapping %}\n{% if entry.
取出pass
变量会导致它成功工作,但显然不需要--pass=
参数/etc/nullmailer/remotes
。
我对ansible很陌生-这里发生了什么?为什么它试图连接 astr
和 an AnsibleVaultEncryptedUnicode
?解密不行吗?
ansible - 内联加密变量不可 JSON 序列化
我试图了解如何使用 Vault 加密单个变量。首先我用 加密字符串ansible-vault encrypt_string -n -p
,然后将输出写入我的剧本。当我执行剧本时,它说解密的字符串不是 JSON 可序列化的。
加密字符串:"inline_name"
我也用inline_name
and尝试过inlinename
,每次都得到相同的结果。
我的剧本:
错误信息:
ansible - 运行 Ansible playbook 时如何自动传递保险库密码?
我有一个带保险库的 Ansible 剧本,我想通过我的 Web 界面中的提示框询问保险库密码,然后在运行 ansible 剧本时传递发布的密码。我尝试使用:
将密码传递给剧本,但它不起作用,错误消息是:
"msg": "正在尝试解密但未找到保管库机密"
我不想将密码存储在某些文件中,现在我只想尝试在运行时自动将密码传递给剧本。对我有什么建议吗?ansible 版本是 2.4。
ansible - 如何在清单文件中使用 ansible-vault 加密密码?
我想通过 ansible-vault 在我的库存文件中使用加密密码,然后针对该文件运行剧本。就像是:
我尝试为所有主机使用单一密码,它工作正常,但需要为不同的主机使用不同的密码。我们如何在清单文件中使用使用 ansible-vault 生成的变量?
下面是我厌倦的代码:
生成 ansible-vault 加密字符串
测试.yml 文件
库存文件:
输出:
在上面的代码中,我对所有主机都使用了相同的 ansible_ssh_pass,但是想使用下面的清单文件,其中包含每个主机的不同密码
库存文件:
ansible - 如果 playbook 在调试模式下执行,Ansible vault 会显示解密的值
我正在使用 ansible vault 来加密密码,但是当我使用调试模式时,它会将密码显示为纯文本。考虑下面的代码
生成 ansible-vault 加密密码
测试.yml
库存/主机
模板/test.j2
剧本执行
输出
有没有办法避免这种情况?