ボールトのパスワード
まず、ボールトのパスワードファイルが実行可能なスクリプトである可能性があることを理解する必要があります。この場合、Ansibleはそれを実行し、パスワードを出力として受け取ることを期待します。
たとえば、gpg-agent
またはkeychain
を使用して実際のパスワードを保存し、必要に応じてロックを解除できます。詳しくは、このブログ投稿をご覧ください:https : //benincosa.com/?p=3235
少し偏執狂の場合は、次のように、パスワードスクリプトが呼び出されたときに通知を追加できます。
#!/bin/bash
PARENT_PROCESS=$(ps -p $PPID -o args | tail -n 1)
osascript -e "display notification \"Vault password used by ${PARENT_PROCESS}\" with title \"Ansible\" sound name \"default\""
gpg --batch --use-agent --no-tty --decrypt key.gpg 2>/dev/null
このボールトパスワードスクリプトはkey.gpg
、実際のボールトキーとして使用され、スクリプトが使用されると親プロセス名とともにポップアップ通知(MacOSの場合)も表示します。Gpg-agentは一定期間ロック解除パスワードをキャッシュするため、プレイブックを起動するたびにパスワードを入力する必要はありません。
に設定vault_password_file = ./vault_pass.sh
するだけansible.cfg
です。
環境
あなたはazure_rm.py
動的在庫スクリプトとして使用すると述べました。つまり、環境変数を使用できるようにするには、ansible-playbookを開始する前に、環境変数に認証情報を設定する必要があります。
次の2つのファイルを作成できます。
secure_env
(ボールトで暗号化):
export AZURE_SECRET=xxx;export AZURE_SUBSCRIPTION_ID=xxx;
set_env
(プレーンテキスト):
echo -n "Setting secure vars... "
eval $(ansible-vault view secure_env)
echo "done."
新しいターミナルを開いて自動化タスクを実行するときは、以下を実行する必要があります。
source set_env
この時点で、bashが評価されset_env
、secure_env
(Ansible Vaultを介して復号化されます)。このコマンドの後、現在のシェルにAzure資格情報が定義されているため、通常どおりにプレイブックを実行できます。
ansible-playbook provision-my-azure-instances.yml
したがって、この2つのアプローチを使用するkey.gpg
とsecure_env
、リポジトリにを格納できます。次に、新しい端末呼び出しでsource set_env
1回、gpgパスワードを1回入力します(key.gpgの将来の使用をロック解除するため)。その後ansible-playbook
、パスワードなしで何回でも電話をかけます。