标签: ansible-vault

用于 ansible Vault 机密的 Git 清洁/涂抹过滤器

我正在尝试在 git 中设置清理/涂抹过滤器,以便通过ansible-vault命令自动加密和解密包含机密的文件。

ansible-vault 命令的特殊性在于它不是幂等的(每次在相同数据上调用它时都会创建不同的二进制文件)。

我从这个博客页面中建议的实现开始。不幸的是,它没有正常工作,因为每当调用 smudge 时(无论是 git checkout 还是 git status),秘密文件看起来都像 git 修改过的一样,即使不是。

所以我想知道 git 是否会将索引中的二进制文件与干净过滤的当前文件进行比较,我尝试在这些脚本上构建如下:

#!/bin/sh -x
# clean filter, it is invoked with %f

if [ ! -r "$HOME/.vault_password" ]; then
  exit 1
fi

tmp=`mktemp`
cat > $tmp

# get the plain text from the binary in the index
tmphead=`mktemp`
git show HEAD:$1 > $tmphead
contenthead=`echo "embedded" | ansible-vault view $tmphead --vault-password-file=$HOME/.vault_password`
export PAGER=cat
echo -n "$contenthead" | tee $tmphead …
Run Code Online (Sandbox Code Playgroud)

git gitattributes ansible ansible-vault

5
推荐指数
0
解决办法
435
查看次数

Vault是否可以使用多个密码

我有一个与其他团队共享的部署项目。我已使用保险库加密了我的秘密。我想使用密码对生产文件进行加密,并使用其他密码对登台文件进行加密,以避免其他团队访问生产机密。

有可能这样做吗?

我已经做了类似的事情。我的秘密:

cat /group_vars/all/vault_production.yml (encrypt with password A)
production_password: 'test1'

cat/group_vars/all/vault_staging.yml (encrypt with password B)
staging_password: 'test2'
Run Code Online (Sandbox Code Playgroud)

我的环境:

cat hosts-production
[all:vars]
env_type=production

cat hosts-staging
[all:vars]
env_type=staging
Run Code Online (Sandbox Code Playgroud)

我的剧本:

- copy:
  content: |
    env PASS={{hostvars[inventory_hostname][env_type + '_password']}}
  ...
Run Code Online (Sandbox Code Playgroud)

然后我像这样启动剧本。

# for production
ansible-playbook  -i hosts-staging test.yml --vault-password-file .password_a
# for staging
ansible-playbook  -i hosts-staging test.yml --vault-password-file .password_b
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为有两个不同的密码(错误!解密失败)。你知道怎么做吗 ?

谢谢。

BR

埃里克

ansible ansible-vault

5
推荐指数
2
解决办法
2592
查看次数

ansible传输文件安全吗?

我正在使用Ansible 2.2从我的笔记本电脑管理一些云服务器.我想将OpenSSL私钥传输到其中一个服务器上的特定位置,以供nginx用于TLS终止.当然,这是一个应保密的文件,因此我使用Ansible Vault对其进行了加密.但Vault仅保护控制计算机上的磁盘文件.将数据从控制机器传输到受管节点时,它不起作用.

我想确保监控网络流量的人在传输过程中不会泄露私钥.我没有具体提到我正在寻找的内容,我可以在模块文档中copy看到.据我所知,我与被管节点的所有通信都是通过SSH完成的.这是一个安全的假设吗?它是否包含文件传输?

encryption file-transfer ansible ansible-vault

5
推荐指数
1
解决办法
402
查看次数

Ansible Vault 和使用 include_vars 的加密变量

我需要一个使用 ansibleVault 存储和加密密码的文件,我创建了一个名为“passes”的加密文件,存储在 group_vars 中,解密后内容如下:

---
testvar: password
Run Code Online (Sandbox Code Playgroud)

我创建了剧本文件:

---
- hosts: [machines]

  vars:
    include_vars: 
      file: group_vars/passes


  roles: 

  - role: someroletodeployafilewiththispass
Run Code Online (Sandbox Code Playgroud)

该角色只是使用模板的传递来部署一个文件,该文件是:

using vaulted var {{ testvar }}
Run Code Online (Sandbox Code Playgroud)

每次我使用塔启动此程序时都会收到错误消息

"msg": "AnsibleUndefinedVariable: 'testvar' 未定义"

有什么想法我做错了什么吗?没有迹象表明我的加密文件正在被 ansible 解密。还有我刚刚粘贴的加密文件:

$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...
Run Code Online (Sandbox Code Playgroud)

也许加密的文件看起来应该有所不同,以便 Ansible 能够解密它?

ansible ansible-vault

5
推荐指数
1
解决办法
9056
查看次数

如何解决PyCharm中由ansible-vault加密的文件的git冲突

是否可以解决ansbile-vault在PyCharm的GUI 中加密的文件中的冲突?

我试图按照已接受答案中提供的说明进行更改,该说明如何区分可更改的保管库更改?。我在.vault_password文件中输入了ansible-vault密码,.gitattributes并在其中设置了特定的文件路径并运行

git config --global diff.ansible-vault.textconv "ansible-vault view --vault-id .vault_password"
Run Code Online (Sandbox Code Playgroud)

但是,这似乎仅适用于从命令行显示差异。

比较冲突文件时是否可以使其适用于PyCharm?我希望对它们进行解密,从而使其内容与常规文件一样可见,因此我可以轻松解决冲突。

如果在过程结束时对已解决的冲突文件进行加密,那也将是完美的。

git jetbrains-ide pycharm ansible ansible-vault

5
推荐指数
1
解决办法
157
查看次数

重新加密单独加密的 ansibleVault 变量?

通过阅读文档

您无法重新设置加密变量的密钥

例如,如果这是 的内容group_vars/all.yaml,我想重新加密所有加密的变量。

key_tab: !vault |
  $ANSIBLE_VAULT;1.1;AES256
  30333939663734636530386263663437343431353539643366633534366239643763326138653232
  3562383132623937346138613833396563653038646165300a623061363063663132373739373031
  66623133393239376366383235353332366336386532643637343438653634633734346639636334
  3633363032376339340a663531346633623466643163353638303534313937663931633962383637
  3637
certs:
  - file: client.cert
    password: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      35626163653930386265393064326330393433343763626534373330393432373231633365656534
      6237626631326634333963313733356531623239653161370a356666326631663565396633396139
      32303962343064343530383364616235343130373935313161353135613539653061363735336337
      3636633036313565640a663736613065396262336433653564373161393431636661666134643761
      3639
Run Code Online (Sandbox Code Playgroud)

我尝试用一​​些 bash 命令来做到这一点,但由于缩进,它变得很复杂。

是否有一种自动化的方法来完成此重新密钥?

python ansible ansible-vault

5
推荐指数
1
解决办法
1258
查看次数

在提示时将密码传递给 Python 脚本

当提示输入密码时,如何将密码传递给我的 python 脚本。我不希望用户在提示时输入密码。它应该直接从脚本传递。

subprocess.run(['ansible-vault', 'decrypt', 'main.yml', 'linux.yml','--ask-vault-pass'])
Run Code Online (Sandbox Code Playgroud)

在运行脚本时,它会提示输入密码。我希望密码仅从脚本传递,而不是由用户传递或传递密码文件。

有没有办法在这里传递密码?我有其他 ansible 保险库选项,如保险库密码等,但这不符合我的目的。

python ansible ansible-vault

5
推荐指数
0
解决办法
168
查看次数

使用 ansible-vault 一次加密多个文件

我使用以下结构将我的内容host_vars分为明文和加密

\n
ansible\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ansible.cfg\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 host_vars\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 host1\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 vars\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vault\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 host2\n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 vars\n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vault\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inventory\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 site.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vars\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ansible_vars.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

有没有一种方法,ansible-vault可以用来加密两个指定的文件vault,还是我必须一一加密它们?

\n

只是问一下,因为还会有更多内容,例如在未来的目录group_vars中等。

\n

我知道这有效

\n
ansible-vault encrypt host_vars/host1/vault host_vars/host2/vault\n
Run Code Online (Sandbox Code Playgroud)\n

只是询问是否有更优雅/快速的解决方案

\n

security encryption ansible ansible-vault

5
推荐指数
1
解决办法
2051
查看次数

Ansible保险库不会使用Sublime Text保存更改

我在通过pip安装的OSX上运行ansible 1.9.4.

如果我做ansible-vault create x,然后做一些修改并保存,然后每当我做的文件显示为空白ansible-vault view xansible-vault edit x.

我有Sublime Text 3作为我的$ EDITOR.当我将其设置为vim时,它全部按预期工作,我可以编辑和保存使用ansible-vault加密的文件.知道这里会发生什么吗?

ansible sublimetext3 ansible-vault

4
推荐指数
1
解决办法
952
查看次数

Ansible un-vault和模板文件

我在本地计算机上有一个文件要上传到远程服务器,它包含我不想在我的VCS中公开的机密信息.它还有一些我需要在其中动态替换的文本(目前为Jinja2占位符"{{}}").

如果我使用复制模块,那么当我上传文件时文件是非拱形的,但显然替换了占位符.

如果我使用模板模块,那么它不会破坏文件,因此它以加密格式上传(并且也不会替换占位符,因为它们被加密模糊).

如何将文件(使用ansible)模板和取消保存到远程服务器?

templates jinja2 ansible ansible-playbook ansible-vault

4
推荐指数
2
解决办法
5165
查看次数