问题标签 [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.

0 投票
1 回答
742 浏览

ansible - Ansible:如何在 group_vars 中使用字典中的常规变量和加密变量?

我正在尝试将我的 group_vars 拆分为未加密的“vars”和加密的“Vault”。由于官方文档很短,我按照这里给出的非常详尽的教程进行操作。通过他们的示例设置,我可以使其工作。vars 文件引用拱形部分,如下所示:

现在我的真实用例在这些文件中有字典,如下所示:

我的保管库文件以类似的方式组织,这就是行不通的:

我得到的结果是:Ansible 确实找到了所有加密的变量。但它声称常规的未定义。这是调试输出中缺少 mysql_user 的调试命令的输出:

非常感谢我必须做的任何提示!还是我试图做一件不可能的事情?

0 投票
1 回答
1607 浏览

encryption - Ansible 检查文件是否被 ansible-vault 加密

我需要使用ansible-vault. 仅当文件尚未由 ansible Vault 加密时,我才想执行加密。我正在尝试在我的 Ansible 剧本中使用此任务:

在条件语句中是否有逻辑可以检查文件是否已经被加密ansible-vault

0 投票
1 回答
1025 浏览

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

0 投票
1 回答
2325 浏览

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 在运行时将什么纯文本值插入到这个变量中(可能是一个愚蠢的问题,因为这将是一个巨大的安全风险!)?

0 投票
1 回答
186 浏览

ansible - Ansible lineinfile 没有将最后一行复制到服务器

我正在尝试将秘密 Python 设置文件从设置服务器复制到生产环境。由于设置包含密码,我正在使用 Ansible Vault。

我的剧本如下所示:

我的 settings.yml 看起来像这样:

但是,当我运行剧本时,我得到了文件:

即使 Ansible 声称最后一行也被复制:

我做错了什么导致这个?

Ansible 版本:

0 投票
1 回答
819 浏览

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?解密不行吗?

0 投票
3 回答
5945 浏览

ansible - 内联加密变量不可 JSON 序列化

我试图了解如何使用 Vault 加密单个变量。首先我用 加密字符串ansible-vault encrypt_string -n -p,然后将输出写入我的剧本。当我执行剧本时,它说解密的字符串不是 JSON 可序列化的。

加密字符串:"inline_name" 我也用inline_nameand尝试过inlinename,每次都得到相同的结果。

我的剧本:

错误信息:

0 投票
4 回答
21985 浏览

ansible - 运行 Ansible playbook 时如何自动传递保险库密码?

我有一个带保险库的 Ansible 剧本,我想通过我的 Web 界面中的提示框询问保险库密码,然后在运行 ansible 剧本时传递发布的密码。我尝试使用:

将密码传递给剧本,但它不起作用,错误消息是:

"msg": "正在尝试解密但未找到保管库机密"

我不想将密码存储在某些文件中,现在我只想尝试在运行时自动将密码传递给剧本。对我有什么建议吗?ansible 版本是 2.4。

0 投票
1 回答
6289 浏览

ansible - 如何在清单文件中使用 ansible-vault 加密密码?

我想通过 ansible-vault 在我的库存文件中使用加密密码,然后针对该文件运行剧本。就像是:

我尝试为所有主机使用单一密码,它工作正常,但需要为不同的主机使用不同的密码。我们如何在清单文件中使用使用 ansible-vault 生成的变量?

下面是我厌倦的代码:

生成 ansible-vault 加密字符串

测试.yml 文件

库存文件:

输出:

在上面的代码中,我对所有主机都使用了相同的 ansible_ssh_pass,但是想使用下面的清单文件,其中包含每个主机的不同密码

库存文件:

0 投票
2 回答
1315 浏览

ansible - 如果 playbook 在调试模式下执行,Ansible vault 会显示解密的值

我正在使用 ansible vault 来加密密码,但是当我使用调试模式时,它会将密码显示为纯文本。考虑下面的代码

生成 ansible-vault 加密密码

测试.yml

库存/主机

模板/test.j2

剧本执行

输出

有没有办法避免这种情况?