付録H ansible-vault を使用した Ansible パスワード変数の暗号化
パスワードの格納に使用する Ansible 変数を暗号化するには ansible-vault
を使用し、プレーンテキストとして読み込めないようにします。たとえば、group_vars/all.yml
で、ceph_docker_registry_username
および ceph_docker_registry_password
変数をサービスアカウントの認証情報またはカスタマーポータルの認証情報に設定できます。サービスアカウントは共有されるように作られていますが、カスタマーポータルのパスワードのセキュリティーを確保する必要があります。ceph_docker_registry_password
の暗号化に加えて dashboard_admin_password
と grafana_admin_password
も暗号化することを推奨します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ansible 管理ノードへのアクセス
手順
- Ansible 管理ノードにログインします。
/usr/share/ceph-ansible/
ディレクトリーに移動します。[admin@admin ~]$ cd /usr/share/ceph-ansible/
ansible-vault
を実行して、新しい vault パスワードを作成します。例
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password:
vault パスワードを再入力して確定します。
例
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password:
暗号化するパスワードを入力し、CTRL+D を 2 回入力してエントリーを完了します。
構文
ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password: Reading plaintext input from stdin. (ctrl-d to end input) PASSWORD
PASSWORD はパスワードに置き換えます。
例
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password: Reading plaintext input from stdin. (ctrl-d to end input) SecurePassword
パスワードの入力後に Enter は押さないようにしてください。暗号化文字列のパスワードの一部として、改行が追加されてしまいます。
ceph_docker_registry_password_vault: !vault |
で開始し、数字の行 2-3 行で終了する出力をメモし、次の手順で使用します。例
[admin@admin ceph-ansible]$ ansible-vault encrypt_string --stdin-name 'ceph_docker_registry_password_vault' New Vault password: Confirm New Vault password: Reading plaintext input from stdin. (ctrl-d to end input) SecurePasswordceph_docker_registry_password_vault: !vault | $ANSIBLE_VAULT;1.1;AES256 38383639646166656130326666633262643836343930373836376331326437353032376165306234 3161386334616632653530383231316631636462363761660a373338373334663434363865356633 66383963323033303662333765383938353630623433346565363534636434643634336430643438 6134306662646365370a343135316633303830653565633736303466636261326361333766613462 39353365343137323163343937636464663534383234326531666139376561663532 Encryption successful
スペースや改行なしで、パスワード直後に開始される出力が必要となります。
group_vars/all.yml
を編集し、上記からの出力をファイルに貼り付けます。例
ceph_docker_registry_password_vault: !vault | $ANSIBLE_VAULT;1.1;AES256 38383639646166656130326666633262643836343930373836376331326437353032376165306234 3161386334616632653530383231316631636462363761660a373338373334663434363865356633 66383963323033303662333765383938353630623433346565363534636434643634336430643438 6134306662646365370a343135316633303830653565633736303466636261326361333766613462 39353365343137323163343937636464663534383234326531666139376561663532
以下を使用して、暗号化されたパスワードの下に行を追加します。
例
ceph_docker_registry_password: "{{ ceph_docker_registry_password_vault }}"
注記上記のように 2 つの変数を使用する必要があります。これは、Ansible のバグ が原因で、vault 値を直接 Ansible 変数に割り当てる時に、文字列のタイプが破損するためです。
ansible-playbook
の実行時に vault パスワードを要求するように Ansible を設定します。/usr/share/ceph-ansible/ansible.cfg
を開いて編集し、[defaults]
セクションに以下の行を追加します。ask_vault_pass = True
必要に応じて、ansible-playbook を実行するたびに
--ask-vault-pass
を渡すことができます。例
[admin@admin ceph-ansible]$ ansible-playbook -v site.yml --ask-vault-pass
site.yml
またはsite-container.yml
を再実行して、暗号化されたパスワードに関連するエラーがないことを確認します。例
[admin@admin ceph-ansible]$ ansible-playbook -v site.yml -i hosts --ask-vault-pass
-i hosts
オプションは、/etc/ansible/hosts
のデフォルトの Ansible インベントリーの場所を使用していない場合にのみ必要です。
関連情報
- サービスアカウントの情報については、Red Hat コンテナーレジストリーの認証 を参照してください。