Ansible 2.3.0以降の暗号化変数の構造化のベストプラクティスは何ですか?


8

このドキュメントは、Ansible 2.3以降!vault |、変数とキーをボールトファイルに入れて完全に暗号化する代わりに、プレフィックスを使用して特定の変数を暗号化できるようにする必要があることを示しています。

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 decrypt 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の両方が復号化の必要性を認識できるように、!vaultタグを必ず追加する必要があります。| ボールトの暗号化は複数行の文字列になるため、これも必要です。

ご質問

  1. 暗号化する必要がある変数は、コマンドラインを使用して1つずつ暗号化する必要がありますか?
  2. 古いAnsible構造を再構築するためのベストプラクティスは何ですか?たとえば、ボールトファイルを削除して、すべての暗号化された変数を変数ファイルに入れますか?

回答:


2

最近、Ansible Vaultでかなり作業している(特に、暗号化の内容と、コードを読み取り不能にせずにそれらを暗号化する方法に関して)2.3で、習慣を変更するインセンティブはほとんどありません。

一連の暗号化された変数またはファイルを作成する場合は、それらを個別に保持し(すべての前にを付けますvault_)、そのままにしておきます。

!vault機能を数回使用しましたが、シークレットファイルからのものとそうでないものについて非常に明確にする方が簡単なように見えるので、明らかに驚かされます。このように、私のプレイを編集する人は誰も、機密データとは何かを想定していません。


1

私はansible/group_vars/testingディレクトリを削除してファイルに置き換えることを決めました。つまりansible/group_vars/testing、暗号化された変数が含まれています。

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

実行する代わりに、ansible-vault edit ansible/group_vars/testing/vault暗号化する必要のある値をansible-vaultにパイプすることができますprintf mysecret | ansible-vault encrypt。後者は暗号化さmysecretれ、出力をansible/group_vars/testingファイルに追加できます。ときansible-playbookに実行されるansibleボールトファイルはもちろん、指定されている場合、暗号化された変数が復号化されます。

暗号化された値をデバッグする必要がある場合は、次のコードを使用できます。

- debug: msg="Decrypted value: {{ encrypted_var }}"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.