概要
yamlに埋め込むパスワードをansible-vaultを使用して暗号化する
encrypt_string を使用して、yaml に埋め込む暗号化変数を作成
※iniファイルに対してはできないです
環境
対応
vault実行用のパスワードファイルを作成する
本来は暗号化実行時にvault実行用のパスワードを求められるが、それを避けるために
vault実行用パスワードファイル「vault_password.txt」を作成した
パスワードは「password」
9/10 追記:ファイルは .vault_password.txt のように隠しファイルにしたほうが良い
変数にセットするパスワードを暗号化する
以下の白抜き箇所「Ansi7.2.0」を暗号化する
ansible-vault encrypt_string --vault-password-file ~/vault_password.txt 'Ansi7.2.0' --name 'ansible_become_password'
ansible-vault encrypt_string –vault-password-file vaul実行用パスワードファイル ‘変数にセットするパスワード’ –name ‘変数’
ansible_become_password変数にパスワードAnsi7.2.0をセットするため、上記のような記述にした
実行結果
実行結果は上の通り 実行すると毎回結果が変わる
ansible_become_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
64646464313237666334356130343530333063623839353465666135636265336566623363633835
6330373764323063366463313462333332656636613162620a663866326138336665643332383761
66396430613262306533666234343032633566383836306135346264643164623866636165323966
6533326335663833640a653435646663326639333031303332393337346362393064346534646135
3939
実行結果のうち、最後の数字までコピーし、インベントリymlファイルに貼り付ける
9/10 追記:パスワードが履歴に残ってしまうため、以下のようにパスワードを標準入力するほうが良い
ansible-vault encrypt_string --vault-password-file ~/.vault_password.txt --stdin-name 'ansible_become_password'
標準入力時にAnsi7.2.0とパスワードを入力し、ctrl+dを2回実行する。この際、Enterは入力しない
ansible.cfgファイルでvault実行用のパスワードファイルを指定する
.vault_password_file = vault実行用パスワードファイル
パスワードファイルを指定しないとansible実行時に以下のようなエラーが出た
Attempting to decrypt but no vault secrets found
ansible playbook実行結果
9/10 追記:ansible valutはymlファイル内で記入位置が少しでも正しい位置からずれていると、エラーがでる模様。
正しい位置に貼り付けないと・・
[WARNING]: Skipping ‘ansible_become_password’ as this is not a valid group definition
実行時に警告が出てうまく動作しない
一文字分ずれていると・・
実行時に警告が出てうまく動作しない
[WARNING]: * Failed to parse /home/test_user/inventory.yml with auto plugin: no root ‘plugin’ key
found, ‘/home/test_user/inventory.yml’ is not a valid YAML inventory plugin config file
[WARNING]: * Failed to parse /home/test_user/inventory.yml with yaml plugin: Invalid data from
file, expected dictionary and got: Ansi7.2.0
[WARNING]: * Failed to parse /home/test_user/inventory.yml with ini plugin: Invalid host pattern
‘all:’ supplied, ending in ‘:’ is not allowed, this character is reserved to provide a port.
[WARNING]: Unable to parse /home/test_user/inventory.yml as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match ‘all’
コメント