almaops.vars

非推奨警告

このAnsibleロールはコレクション almaops.common に置き換えられました。

almaops.vars

このロールは特定のディレクトリからの変数を含んでいます。

アイデア

大規模プロジェクトの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

同じ環境のホストを1つのグループ(例えば project-a-env01 と呼ぶ)に入れ、group_vars の適切なファイルに変数をロードするディレクトリを指定します(以下の例のように)。

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

ロール変数

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

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

vars_source: 指定された場合、このディレクトリからのみ変数をロードします

ロールのデフォルト

vars_source: "{{ vars_root }}/{{ vars_group }}"

例のプレイブック

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

- hosts: dev環境にいるすべてのホストを含むグループ
  roles:
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/vars"
      vars_group: "dev"

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

- hosts: dev環境にいるすべてのホストを含むグループ
  roles:
    - role: almaops.vars
      vars_source: "/home/user/my-env"

このスニペットは、playbook_dir/creds/dev、playbook_dir/env-vars/dev、playbook_dir/common-vars/my-dev-envからすべての*.ymlファイルを含めます:

--- playbook.yml ---
- hosts: dev環境にいるすべてのホストを含むグループ
  roles:
    # 認証情報をロード
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/creds"
      vars_group: "{{ credentials_library }}"
    # この環境グループ(類似環境のグループ)特有の変数をロード
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/common-vars"
      vars_group: "{{ env_group_name }}"
    # 環境特有の変数をロード
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/env-vars"
      vars_group: "{{ env_name }}"
--- group_vars/group-containing-all-hosts-for-dev-env.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"

ライセンス

MIT

プロジェクトについて

Loading ansible variables from files

インストール
ansible-galaxy install almaops.vars
ライセンス
Unknown
ダウンロード
221
所有者
Premium IT Consulting