メインコンテンツまでスキップ

Ansible

infra-core に含まれる Ansible に関するディレクトリについての説明。

ディレクトリ構造

以下のような構造となっている。

$ tree -L 1 ansible/
ansible/
├── README.md
├── ansible-common
├── ansible-proxmox
├── ansible.cfg
├── group_vars
├── hosts.yml
├── secrets
├── setup_admin.yml
├── setup_cache.yml
├── setup_database.yml
├── setup_dify.yml
├── setup_gateway.yml
├── setup_honeypot.yml
├── setup_minecraftpanel.yml
├── setup_minecraftproxy.yml
├── setup_minecraftv2.yml
├── setup_monitor.yml
├── setup_personaldev.yml
├── setup_steamg.yml
├── setup_unbound.yml
└── vault_pass.sh

ansible-commonansible-proxmox は git submodule として管理されている。

  • ansible-common
    • 全てのホスト共通のプレイブック、タスクなどを管理するディレクトリ
  • ansible-proxmox
    • Proxmox に関するプレイブック、タスクなどを管理するディレクトリ

その他のファイルについては以下の通り。

  • ansible.cfg
    • Ansible の設定ファイル
  • group_vars
    • グループごとの変数を管理するディレクトリ
  • hosts.yml
    • ホスト情報を管理するファイル
  • secrets
    • 機密情報を管理するディレクトリ
  • setup_$GROUP.yml
    • 実行用のプレイブック
  • vault_pass.sh
    • Ansible Vault のパスワードを取得するスクリプト

ホスト情報

hosts.yml にホスト情報が記述されている。 ここに記述されたホスト情報はベタ書きされているため、適宜修正が必要。 例えば、以下のような場合に修正が必要。

  • IP アドレスが変更された場合
  • ホストが追加された場合
  • ホストが削除された場合
警告

もし、古いホスト情報が残っている場合、意図しないホストに対してプレイブックが実行される可能性があるため注意が必要。

機密情報

secrets ディレクトリに機密情報が格納されている。 具体的には ansible_vault.env というファイルが存在し、このファイルに Ansible Vault のパスワードが記述されている。

ANSIBLE_VAULT_PASSWORD=

ここに記述されているパスワードは Ansible Vault で暗号化されたファイルを復号するために使用される。

ヒント

ansible_vault.env に記述されたパスワードは、vault_pass.sh 経由で取得される。 ansible.cfgvault_password_filevault_pass.sh が指定されている。

[defaults]
vault_password_file=vault_pass.sh

プレイブック

setup_$GROUP.yml は各グループごとのプレイブックとなっている。

プレイブックの実行方法は以下の通り。

cd ansible
ansible-playbook -i hosts.yml setup_$GROUP.yml

$GROUP はホストグループを指定する。 例えば、以下のようなホストグループが存在する。

  • admin
    • 管理者用ホスト
  • cache
    • キャッシュサーバ用ホスト
  • database
    • データベースサーバ用ホスト