使用 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 expansions给出了很多可能性。
这里有两个对你的情况很有趣:
- 星号
*
扩展,用作通配符。
这意味着 host_vars/*/vault
会同时匹配 host_vars/host1/vault
和 host_vars/host2/vault
,但将来也会匹配任何其他。
- 请注意,如果将来您有更复杂的文件夹层次结构
host_vars/*/vault
将只匹配一个文件夹级别(例如,它不会匹配 host_vars/level1/host1/vault
),但会匹配多个文件夹级别可以用双星号实现(实际命名为globstar):host_vars/**/vault
,会匹配
host_vars/host1/vault
以及 host_vars/level1/host1/vault
- 另一方面,brace expansion 提供了一组更细粒度的可能性,例如,如果我在
RedHat[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.com
和 whosebug.com
但不是 superuser.com
或任何其他问答有一个特定的域名,假设主机被命名为他们的 DNS 名称,你可以做
ansible-vault host_vars/{whosebug.com,*.stackexchange.com}/vault
我正在使用以下结构将我的 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 expansions给出了很多可能性。
这里有两个对你的情况很有趣:
- 星号
*
扩展,用作通配符。 这意味着host_vars/*/vault
会同时匹配host_vars/host1/vault
和host_vars/host2/vault
,但将来也会匹配任何其他。 - 请注意,如果将来您有更复杂的文件夹层次结构
host_vars/*/vault
将只匹配一个文件夹级别(例如,它不会匹配host_vars/level1/host1/vault
),但会匹配多个文件夹级别可以用双星号实现(实际命名为globstar):host_vars/**/vault
,会匹配host_vars/host1/vault
以及host_vars/level1/host1/vault
- 另一方面,brace expansion 提供了一组更细粒度的可能性,例如,如果我在
RedHat[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.com
和 whosebug.com
但不是 superuser.com
或任何其他问答有一个特定的域名,假设主机被命名为他们的 DNS 名称,你可以做
ansible-vault host_vars/{whosebug.com,*.stackexchange.com}/vault