Ansible暗号化モジュールのボールト

次のように限り、ファイルの暗号化、暗号化や復号化などのためansible-Vault構成を具体的に使用することができます。

Usage: ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]

私は多くのサブコマンドがあります見ることができます。

  • 作成:新しいファイルを作成し、それらを直接暗号化します
  • 解読:ファイルを復号化
  • 編集:ansible-ボールト暗号化されたファイルを編集するための
  • encrypy:暗号化されたファイル
  • encrypt_strin:コマンドラインから取得した暗号化された文字列、文字列
  • ビュー:暗号化されたファイルを表示

暗号化されたファイル

自分でファイルを作成し、一部のコンテンツを書き込みます。

[root@Ansible ~]# echo "123456" > pass.txt
[root@Ansible ~]# cat pass.txt 
123456
[root@Ansible ~]# 

その後ansible・ボールトの暗号化、暗号化されたファイル:

[root@Ansible ~]# ansible-vault encrypt pass.txt
New Vault password: 
Confirm New Vault password: 
Encryption successful
[root@Ansible ~]# 

ここでは、パスワードを入力するように求められます。

今見てファイルを開いて行きます。

[root@Ansible ~]# cat pass.txt 
$ANSIBLE_VAULT;1.1;AES256
62633762393035316438663662343964656465376634393131313466313536336361333163313238
6162356161653365623961353533356264386134653830640a353531623635653337636564383763
38316636383334323533363666383963666161633332663461316338333332623434376162326265
6565623130373539330a313737646431626131336637663033656664383932393934633337383666
6334
[root@Ansible ~]# 

ファイルの内容を表示し、あなたはansible・ボルトビューコマンドを使用することができます。

[root@Ansible ~]# ansible-vault view pass.txt
Vault password: 
123456
[root@Ansible ~]# 

ファイルはansible・ボールト・復号化コマンドを復元するために使用することができます。

[root@Ansible ~]# ansible-vault decrypt pass.txt
Vault password: 
Decryption successful
[root@Ansible ~]# cat pass.txt 
123456
[root@Ansible ~]# 

暗号化された設定ファイル

ただ一つのガジェットを使用して上記の発表は、ここで一緒ansibleコマンドで見てみましょう。
の/ etc / ansible / hostsファイルには、テストのために新しいホストを追加します。

host1 ansible_host=127.0.0.1 ansible_connection=local

プラスここマシンです。

そして、ホスト変数は/ etc / ansible / host_vars / HOST1は、気軽にいくつかの変数を記述することを別のファイルを作成します。

---
key1: vaule1
key2: VALUE2

確認する最初:

[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key2={{key2}}" 
host1 | CHANGED | rc=0 >>
key1=vaule1, key2=VALUE2
[root@Ansible ~]# 

今、設定ファイルの暗号化:

[root@Ansible ~]# ansible-vault encrypt /etc/ansible/host_vars/host1 
New Vault password: 
Confirm New Vault password: 
Encryption successful
[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key2={{key2}}" 
ERROR! Attempting to decrypt but no vault secrets found
[root@Ansible ~]# 

暗号化して、もう動作しません実行し、暗号化されたパスワードボールトを提供するために、パラメータ--ask-ボールトパスを追加する必要があります:

[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key2={{key2}}"  --ask-vault-pass
Vault password: 
host1 | CHANGED | rc=0 >>
key1=vaule1, key2=VALUE2
[root@Ansible ~]# 

ファイルの暗号化を使用します

パスワードが暗号化される前に直接使用されています。私たちにとって、実際には、ちょうど別のパスワードで暗号化されたパスワードを入れました。使用時には、我々は元のパスワードが、パスワードボールトの使用を使用しないでください。
便宜上、必ずパスワードをファイルに書き込むことができ、パスワードを入力する必要はありません。しかし、直接の書き込みは、ファイル内にプレーンテキストでパスワードが常に安全ではありません。その後、機密情報がファイルの暗号化であり、(また別の設定ファイルを指定できます)私たちは、直接設定でパスワードを記述することができるようにansible-ボールトがある使用してください。この利点は、プロジェクト全体のプロジェクトで使用されるパスワードを含むすべての構成情報は、満杯で、暗号化されていることです。
それでもパスワードを使用するたびに入力したくない場合は、それが手動で入力されていない場合ボールトファイル(平文)に書き込まれたパスワードので、各使用を置くが、ansibleは自動的にファイルからパスワードを取得させることができます。

またはファイルを復号化する最初の、コンフィギュレーション・ファイルを再使用する前に:

[root@Ansible ~]# ansible-vault decrypt /etc/ansible/host_vars/host1 
Vault password: 
Decryption successful
[root@Ansible ~]# 

ファイルは、ファイルを使用して暗号化された後、次に再生します:

[root@Ansible ~]# echo "123456" > vault-pass-file
[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key2={{key2}}"
ERROR! Attempting to decrypt but no vault secrets found
[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key2={{key2}}" --vault-password-file vault-pass-file
host1 | CHANGED | rc=0 >>
key1=vaule1, key2=VALUE2
[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key2={{key2}}" --ask-vault-pass
Vault password: 
host1 | CHANGED | rc=0 >>
key1=vaule1, key2=VALUE2
[root@Ansible ~]#

ここで最後にパスワード--ask-ボールト通過効果でそれを試してみましたが、実際に--vaultパスワードファイルを使用するのと同じです。手動で入力されたパスワードは、パスワード文字列がファイルから読み込まれます。

暗号化変数

上記の暗号化方式は、ファイル全体を暗号化することです。暗号化した後、小文字を区別しないコンテンツを見ることができない機密性の高いコンテンツを提出、これも非常に便利です。一つの解決策は、別のファイルに記述敏感と非機密性の高いコンテンツを、分離だけ機密ファイルを暗号化することです。前の例のように行きました。
より柔軟な方法は、暗号化された値ansible・ボールトencrypt_stringを使用して、あります。

ファイルの暗号化により、

良い認定ボールトとして提出する準備ができました:

[root@Ansible ~]# ansible-vault encrypt_string --vault-id vault-pass-file 'ssh_pass' --name 'key3'
key3: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66613666353739356536663965336234383363373563353231353939303839313430616161336365
          6662336162386231316132633365366232363936613561650a313637643339323861626364633864
          32653666626333623961643866656235653764646333613533343231303734313862376232393734
          6563343539393264650a653438326463646364646338656339356236383537663135633935313239
          3664
Encryption successful
[root@Ansible ~]# 

パラメータは--name、書き込むことはできません。コンテンツの最後の世代は、そうでない場合に生成された値のほんの一部で、我々はまた、手動でキーを追加することができ、キーと書かれています。

手動でパスワードを入力します。

あなたがファイルを使用しませんが、指定されたファイル名を手動で入力するためのプロンプトに置き換えることができた場合、これは、私たちは確認のため、パスワードを2回入力することができます:

[root@Ansible ~]# ansible-vault encrypt_string --vault-id prompt 'ssh_pass' --name 'key3'
New vault password (default): 
Confirm new vault password (default): 
key3: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          30666333366265346464383165373062613165666130373066613930316364363432376336613938
          3131663337633863373539666134643661623734613330350a616661613934633335303365366266
          36363433613334386664663839346435656534373732333632303532303939383466303662396438
          3433633535333130350a323934373162356139363762383739386139333937666237613564313939
          3137
Encryption successful
[root@Ansible ~]#

プラスのユーザーID

公式文書を次のように
https://docs.ansible.com/ansible/latest/network/getting_started/first_inventory.html#protecting-sensitive-variables-with-ansible-vault

公式文書の例では--vault-IDのパラメータ値を表すプラスのユーザー名、ファイル名またはプロンプトの前に加え、@で区切られます。

$ ansible-vault encrypt_string --vault-id steed@vault-pass-file 'ssh_pass' --name 'key3'
$ ansible-vault encrypt_string --vault-id steed@prompt 'ssh_pass' --name 'key3'

一見全く使用しないが、コンテンツは、ユーザIDに生成されます。またはより良いの公式の勧告を参照してみてください。

新しい変数を生成し、値が暗号化されたコンフィギュレーション・ファイルに書き込まれます。

[root@Ansible ~]# ansible-vault encrypt_string --vault-id steed@vault-pass-file 'ssh_pass' --name 'key3' >> /etc/ansible/host_vars/host1
[root@Ansible ~]# cat /etc/ansible/host_vars/host1
---
key1: vaule1
key2: VALUE2
key3: !vault |
          $ANSIBLE_VAULT;1.2;AES256;steed
          30343264386638623133383632353762356632643531643735653131663662623164303533373163
          3032646663363765386135386362376433326131333262310a366636396233653038646133336334
          62376532343064396639623835646563643663613530383739666239663565386364303931316637
          6137343936636266340a306233633039323537346332336132313766383039653565646230393662
          6332
[root@Ansible ~]# 

ここでは、最後の行の暗号文の内容を見ることができ、ユーザ識別情報の前にそこに追加されます。

使用時に、パスワードを使用したり、ファイルを指定することもできます。

[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key3={{key3}}" --vault-id vault-pass-file 
host1 | CHANGED | rc=0 >>
key1=vaule1, key3=ssh_pass
[root@Ansible ~]# ansible host1 -a "echo key1={{key1}}, key3={{key3}}" --vault-password-file vault-pass-file 
host1 | CHANGED | rc=0 >>
key1=vaule1, key3=ssh_pass
[root@Ansible ~]# 

公式文書には、復号化のためのファイルを指定する--vault-idのですが、次のテスト--vaultパスワードファイルも可能です。

デバッグモジュールのデバッグを使用します

公式の勧告は、ライン上でのデバッグデバッグモジュールを使用することです:

元の値を表示するには、デバッグモジュールを使用することができます。

前の例では、デバッグモジュールを使用し、それを使用するのは簡単なことができ変更されません。

[root@Ansible ~]# ansible host1 -m debug -a 'var="key1,key2,key3"' --vault-password-file vault-pass-file
host1 | SUCCESS => {
    "key1,key2,key3": "('vaule1', 'VALUE2', 'ssh_pass')"
}
[root@Ansible ~]# 

おすすめ

転載: blog.51cto.com/steed/2432427
おすすめ