freehck.var_loader

freehck.var_loader

このロールは特定のディレクトリから変数を読み込みます。

アイデア

大規模なプロジェクトのCI/CDを開発している際に、環境変数を各環境に特化したディレクトリに保存し、それを読み込むのが非常に便利であることがわかりました。その後、認証情報と共通変数を別のディレクトリに分けると便利だと感じました。ディレクトリの構成は次のようになります:

.
├── common-vars
│   ├── project-A
│   │   └── dev
│   └── project-B
│       └── dev
├── credentials
│   ├── project-A
│   │   ├── dev
│   │   └── prod
│   └── project-B
│       ├── dev
│       └── prod
└── env-vars
    ├── project-A-env01
    ├── project-A-env02
    ├── project-A-prod
    ├── project-B-env01
    ├── project-B-env02
    └── project-B-prod

同じ環境のホストを一つのグループ(例えば project-a-env01 と呼びます)にまとめ、group_vars の適切なファイルで変数を読み込むディレクトリを指定します(下記の例のように)。

このアプローチの利点は、含まれている変数が常に最大の優先順位を持つため(--extra-varsを除く)、環境パラメータをどこで探せばよいかが常に理解できることです。

ロール変数

var_loader_root: 環境を格納するディレクトリ

var_loader_group_name: 環境変数のディレクトリ、このパスは var_loader_root に対して相対的です

var_loader_src: 指定された場合、このディレクトリだけから変数が読み込まれます

ロールのデフォルト

var_loader_src: "{{ var_loader_root }}/{{ var_loader_group_name }}"

例プレイブック

このスニペットは、playbook_dir/vars/dev からすべての *.yml ファイルを読み込みます:

- hosts: dev環境の全ホストを含むグループ
  roles:
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/vars"
      var_loader_group_name: "dev"

このスニペットは、/home/user/my-env からすべての *.yml ファイルを読み込みます:

- hosts: dev環境の全ホストを含むグループ
  roles:
    - role: freehck.var_loader
      var_loader_src: "/home/user/my-env"

このスニペットは、次の全ての *.yml ファイルを読み込みます: playbook_dir/creds/dev、playbook_dir/env-vars/dev、playbook_dir/common-vars/my-dev-env

--- playbook.yml ---
- hosts: dev環境の全ホストを含むグループ
  roles:
    # 認証情報を読み込む
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/creds"
      var_loader_group_name: "{{ credentials_library }}"
    # この環境グループ(類似の環境のグループ)に特化した変数を読み込む
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/common-vars"
      var_loader_group_name: "{{ env_group_name }}"
    # 環境特有の変数を読み込む
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/env-vars"
      var_loader_group_name: "{{ env_name }}"
      
--- group_vars/dev環境の全ホストを含むグループ.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"

ライセンス

MIT

著者情報

Dmitrii Kashin, freehck@freehck.ru

プロジェクトについて

loader for environment variables

インストール
ansible-galaxy install freehck.var_loader
ライセンス
Unknown
ダウンロード
2.5k
所有者