簡體   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