Ansible-Vaultの使用方法

目次

  1. Ansible-Vault 使い方
  2. Ansible-Vault コマンド一覧

1. Ansible-Vault 使い方

『Ansible-Vault』を使用することで、パスワードを管理できます。
パスワードを暗号化することでセキュリティ強化につながります。
疎通確認の際に作成したhostsファイルを修正します。
『ansible_password』を追記し、値は変数とします。

[root@Kensyo ansible]# vi hosts
[target]
WIN-Q2VNSHQHMBR ansible_host=192.168.181.102

[target:vars]
ansible_user=Administrator
ansible_password="{{ ansible_password }}"
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

“{{ ansible_password }}”の値を格納する先として、『group_vars』『host_vars』などを用います。group_varsを使用する場合には直下にグループ名のディレクトリを作成し、host_varsの場合にはホスト名のディレクトリを作成してください。今回は『target』グループを使用するため、group_vars/targetディレクトリを作成し値を格納します。

[root@Kensyo ansible]# mkdir group_vars
[root@Kensyo ansible]# cd group_vars
[root@Kensyo group_vars]# mkdir target
[root@Kensyo group_vars]# cd target
[root@Kensyo target]#

値を格納するファイル名は『〇〇〇.yml』で作成してください。本手順では『private.yml』で作成します。
『New Vault password:』はパスワードを入力してください。(このパスワードはファイルを読み込む際に使用します。サーバーのパスワードとは別になります。)
変数名は変数で指定した”{{ ansible_password }}”の値を記載します。

[root@Kensyo target]# ansible-vault create private.yml
New Vault password:
Confirm New Vault password:
ansible_password: p@ssw0rd

記載したファイルの内容を確認する場合。ファイルパスワードを要求されます。

[root@Kensyo target]# ansible-vault edit private.yml
Vault password:
ansible_password: p@ssw0rd

暗号化したファイルのパスワードを読み込むファイルを作成します。

[root@Kensyo target]# cd
[root@Kensyo ~]# vi .vault_pass
pass

ansible.cnfを編集します。『vault_password_file』を記載します。
パスワードを格納するファイルはどこにおいても構いません。

[root@Kensyo ~]# cd /etc/ansible
[root@Kensyo ansible]# vi ansible.cfg
[defaults]
vault_password_file = ~/.vault_pass

設定は完了ですので、以下のようにplaybookを実行し、パスワードの要求がないことを確認してください。

[root@Kensyo ansible]# ansible-playbook site.yml -i hosts

もしくは、暗号化したファイルのパスワードをファイル保管せず、playbook実行時にパスワード入力をしたい場合には、『–ask-vault-pass』オプションを使用します。

[root@Kensyo ansible]# ansible-playbook site.yml -i hosts --ask-vault-pass

2. Ansible-Vault コマンド一覧

ansible-vault create新しく暗号化されたファイルを作成します。  
ansible-vault edit暗号化されたファイルを編集します。  
ansible-vault rekey暗号化されたファイルのパスワードを変更します。  
ansible-vault encrypt暗号化されていないファイルの暗号化をします。  
ansible-vault decrypt暗号化されたファイルを復号化します。  
ansible-vault view暗号化されたファイルを編集せず表示します。  
ansible-vault encrypt_stringファイルの変数1つごとに暗号化します。  

コマンド使用方法例を以下にまとめます。

ansible-vault create

ファイルを作成し暗号化します。

[root@Kensyo ansible]# ansible-vault create private.yml
New Vault password:
Confirm New Vault password:
ansible_password: p@ssw0rd
[root@Kensyo ansible]# cat private.yml
$ANSIBLE_VAULT;1.1;AES256
39303462656235663230333661666430616237386634393163333361323632636332653736313933
3834346332353466326433633832303766346439313036380a323937356635363466306232396432
61666131383332303634383239626236353338316265663632373632346639336130633533326335
6230323963393737350a316531333535393137623834646530643964333638336665616638656563
64626434613330343235643239623937623534343161343162353063393433656531
ansible-vault edit

暗号化したファイルを修正します。

[root@Kensyo ansible]# ansible-vault edit private.yml
Vault password:
ansible_password: p@ssw0rd  #ファイルを修正し「:wq」で保存すれば編集されます。
ansible-vault rekey

暗号化したファイルのパスワードを変更します。
既存のパスワードを入力してから新しいパスワードを入力してください。

[root@Kensyo ansible]# ansible-vault rekey private.yml
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful
ansible-vault encrypt

暗号化されていないファイルを暗号化します。

[root@Kensyo ansible]# cat private.yml
ansible_password: p@ssw0rd
[root@Kensyo ansible]# ansible-vault encrypt private.yml
New Vault password:
Confirm New Vault password:
Encryption successful
ansible-vault decrypt

暗号化されているファイルを復号化します。

[root@Kensyo ansible]# cat private.yml
$ANSIBLE_VAULT;1.1;AES256
32643030356438383437386164616263626264373239376164306335363636616130383866393863
[root@Kensyo ansible]# ansible-vault decrypt private.yml
Vault password:
Decryption successful
[root@Kensyo ansible]# cat private.yml
ansible_password: p@ssw0rd
ansible-vault view

暗号化されているファイルを編集せずに確認します。

[root@Kensyo ansible]# ansible-vault view private.yml
Vault password:
ansible_password: p@ssw0rd
ansible-vault encrypt_string

一部の変数のみ暗号化します。
『ansible_password: p@ssw0rd』の『p@ssw0rd』のみ暗号化致します。
まず、値を暗号化します。

[root@Kensyo ansible]# ansible-vault encrypt_string p@ssw0rd
New Vault password:
Confirm New Vault password:
!vault |
          $ANSIBLE_VAULT;1.1;AES256
          31343638356537636466616666303663323234393430343931393635356334363231663365323037
          6334666535666633346463613962353631626535396239310a363037393539323938313934356361
          39303566623137663932376539323037646663363462623365373262363862326234313934353234
          3237336166306361610a356162623932663533623237303833306138393266356434336535623237
          3937
Encryption successful

『!vault』から始まる記述をファイルに記載(コピペ)します。
以下を参考にしてください。

[root@Kensyo ansible]# vi private.yml
ansible_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          34383733333636306632313739306338396635633761613636336333643038353464316266653533
          3065616332613464316433393635636438326664333033320a636638343761353035653766356439
          34316163353961303932643836636364323432326339653266363961613830333462383234383738
          3666633764663563320a636562636263343136633063666363323664376261333237353262373837
          3936

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です