一千萬個為什麽

搜索

自Ansible 2.3.0以來構造加密變量的最佳實踐是什麽?



This document indicates that since Ansible 2.3 it should be possible to encrypt certain vars using a !vault | prefix instead of putting a variable and keys in a vault file and encrypt it completely.

  notsecret:myvalue
mysecret:!vault |
          $ ANSIBLE_VAULT; 1.1; AES256
          66386439653236336462626566653063336164663966303231363934653561363964363833313662
          6431626536303530376336343832656537303632313433360a626438346336353331386135323734
          62656361653630373231613662633962316233633936396165386439616533353965373339616234
          3430613539666330390a313736323265656432366236633330313963326365653937323833366536
          34623731376664623134383463316265643436343438623266623965636363326136
other_plain_text:othervalue
</代碼> 

目前的結構如下:

ansible/group_vars/testing/vars
ansible/group_vars/testing/vault

當加密變量從保管庫移動到vars目錄並且 ansible-vault解密ansible/group_vars/testing/vars 運行時,它會返回:

ERROR! input is not vault encrypted data for ansible/group_vars/testing/vars

這個拱形變量可以用提供的保密庫秘密進行解密   用作正常變量。 ansible-vault命令行支持   stdin和stdout用於加密數據,可以使用   從你最喜歡的編輯器創建這些拱形變量;你剛才   必須確保添加!Vault標簽,以便Ansible和YAML都是   意識到需要解密。 |作為拱頂也是必需的   加密會產生多行字符串。

問題</強>

  1. 需要加密的變量應該逐一加密 使用命令行?
  2. 什麽是重組結構化的最佳實踐? 舊的Ansible結構?例如。刪除Vault文件並放入所有文件 在變量文件中加密的變量?

轉載註明原文: 自Ansible 2.3.0以來構造加密變量的最佳實踐是什麽?

一共有 2 個回答:

我決定刪除 ansible/group_vars/testing 目錄,並用包含加密變量的文件 ansible/group_vars/testing 替換它:

mysecret: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66386439653236336462626566653063336164663966303231363934653561363964363833313662
          6431626536303530376336343832656537303632313433360a626438346336353331386135323734
          62656361653630373231613662633962316233633936396165386439616533353965373339616234
          3430613539666330390a313736323265656432366236633330313963326365653937323833366536
          34623731376664623134383463316265643436343438623266623965636363326136

您可以將需要加密的值傳遞給anault-vault,而不是運行 ansible-vault編輯ansible/group_vars/testing/vault ,即 printf mysecret | ansible-vault加密。後者將加密 mysecret ,並將輸出添加到 ansible/group_vars/testing 文件中。當 ansible-playbook 運行時,如果指定了安全的Vault文件,則加密的變量將被解密。

如果需要調試加密值,則可以使用以下代碼:

- debug: msg="Decrypted value: {{ encrypted_var }}"

最近一直在使用可靠的保險庫(特別是關於什麽是加密和如何加密這些東西而不使代碼無法讀取),我發現很少有動力在2.3中改變我的習慣。

如果我要有一系列加密的變量或文件,請將它們分開(我將它們全部用vault_預先填入),然後將其保留。

有幾次我使用了!保險庫功能,但是我的保留顯然沒有變,因為看起來更容易明確什麽是和不是來自秘密文件。這樣,沒有人編輯我的劇本,就可以假設什麽是和不是敏感數據。