📌 Ansible ってなに?
Ansible を知らない、または Ansible をインストールしていない方は、まず以下の記事を参考にしてください。
📌 Ansible Vault ってなに?
Ansible Vault は、Ansible で扱う機密情報(パスワードや API キーなど)を暗号化して管理するための機能です。
通常の Playbook では、環境変数や別の管理ツールで機密情報を扱うことが一般的ですが、Ansible Vault を使用することで、Ansible のワークフローの中で安全に機密情報を扱うことができます。
📌 ファイルの作成
それでは secrets.yml
にパスワードを保存してみましょう 👀
以下のコマンドで secrets.yml
を作成ます。
ansible-vault create secrets.yml
パスワード入力を求められるので、Vault のパスワードを設定します。
New Vault password:
その後、エディタが開くので、暗号化したい情報を記述します。📝
📌 ファイルの編集
パスワードの値を間違えたり、項目を追加したいときは以下のコマンドを実行します。
ansible-vault edit secrets.yml
📌 ファイルの内容確認
暗号化された secrets.yml
の内容を確認するには、以下のコマンドを実行します。
ansible-vault view secrets.yml
📌 パスワードの入力の省略方法
Ansible Vault を使用すると、毎回パスワード入力を求められますが、以下の方法で省略できます。
echo "your-vault-password" > .vault_pass
chmod 600 .vault_pass
その後、--vault-password-file
オプションをつけてコマンドを実行すると、パスワードの入力を省略できます。
例1: secrets.yml
を編集する
ansible-vault edit secrets.yml --vault-password-file .vault_pass
例2: playbook
を実行する
ansible-playbook -i hosts.ini playbooks/create_admin_user.yml --vault-password-file .vault_pass
📌 (応用)group_vars と host_vars
🔁 group_vars の例(全ホスト共通の変数)
mkdir -p group_vars
ansible-vault create group_vars/all.yml
作成した all.yml に変数を記述すれば、どの Playbook にも vars_files を書かずにその変数にアクセスできます。
🔁 host_vars の例(特定ホスト用の変数)
mkdir -p host_vars
ansible-vault create host_vars/web01.yml
対象ホスト(例:web01)に紐づく変数ファイルを作成することで、Playbookやインベントリに変数を明示しなくても自動的に適用されます。
host_vars/web01.yml
password_admin: SpecialPassForWeb01
📂 構成例
project/
├── inventory.yml
├── group_vars/
│ └── all.yml
├── host_vars/
│ └── web01.yml
├── playbooks/
│ └── create_admin_user.yml
└── .vault_pass
これでファイルの場所に依存せず、共通変数を安定して使えます。