繁体   English   中英

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

[英]use ansible-vault to encrypt multiple files at once

我正在使用以下结构将我的host_vars分成明文并加密

ansible
├── ansible.cfg
├── host_vars
│   ├── host1
│   │   ├── vars
│   │   └── vault
│   └── host2
│       ├── vars
│       └── vault
├── inventory
├── site.yaml
└── vars
    └── ansible_vars.yaml

有没有办法,使用ansible-vault加密两个名为vault的文件,还是我必须一个一个地做?

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

我知道这行得通

ansible-vault encrypt host_vars/host1/vault host_vars/host2/vault

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

shell 扩展提供了很多可能性。

在您的情况下,这里有两个很有趣:

  • 星号*扩展,用作通配符。 这意味着host_vars/*/vault将匹配host_vars/host1/vaulthost_vars/host2/vault但将来也匹配任何其他。
  • 请注意,如果将来您有更复杂的文件夹层次结构host_vars/*/vault将仅匹配一个文件夹级别(例如它不会匹配host_vars/level1/host1/vault ),但可以实现多个文件夹级别带有双星号(实际命名为globstar ): host_vars/**/vault ,将匹配host_vars/host1/vault以及host_vars/level1/host1/vault
  • 另一方面, 大括号扩展提供了一组更精细的可能性,例如,如果我在RedHat[1..5]Ubuntu[1..5]Debian[1..5] Ubuntu[1..5]等发行版之后有主机名Debian[1..5] ,我只能通过host_vars/{Ubuntu*,RedHat*}/vault定位 Debian 和 RedHat 的。
    或者只用host_vars/{Ubuntu{1..3},RedHat{1..3}}/vault前三个,或者前三个都通过host_vars/*{1..3}/vault

作为一个更实际的例子,如果您通过 Ansible 处理 SE 并希望加密*.stackexchange.comstackoverflow.com的文件,而不是superuser.com或任何其他具有特定域名的问答,鉴于主机被命名为它们的 DNS 名称,你可以这样做

ansible-vault host_vars/{stackoverflow.com,*.stackexchange.com}/vault

我将输入我的快速超级简单的 shell 脚本,该脚本适用于我的简单用例。 当然可以改进,但我认为这是一个很好的起点。 您还可以通过--vault-password-file参数使用机密文件。

#!/bin/sh

echo "Choose the option:"
echo "(d) Decrypt all Ansible vault files"
echo "(e) Encrypt all Ansible vault files"
read option

function decrypt {
  ansible-vault decrypt --ask-vault-pass \
  ansible/*/environments/development/group_vars/*/vault.yaml \
  ansible/*/environments/development/host_vars/*/vault.yaml
}

function encrypt {
  ansible-vault encrypt --ask-vault-pass \
  ansible/*/environments/development/group_vars/*/vault.yaml \
  ansible/*/environments/development/host_vars/*/vault.yaml
}

case $option in
  d)
    decrypt
    ;;
  e)
    encrypt
    break
    ;;
esac

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM