freehck.var_loader

freehck.var_loader

Ta rola obejmuje zmienne z określonego katalogu.

Pomysł

Podczas rozwijania CI/CD dla dużego projektu stwierdziliśmy, że bardzo wygodnie jest przechowywać zmienne środowiskowe w katalogach specyficznych dla każdego środowiska, a następnie je ładować. Potem zauważyliśmy, że przydatne jest podzielić dane uwierzytelniające i ogólne zmienne na oddzielne katalogi. Katalogi mają po prostu taką strukturę:

.
├── 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

Wkładamy hosty z tego samego środowiska do jednej grupy (nazwijmy ją np. project-a-env01) i określamy w odpowiednim pliku pod group_vars katalogi, z których mają być ładowane zmienne (jak w poniższym przykładzie).

Zaletą tego podejścia jest to, że dołączone zmienne zawsze mają najwyższy priorytet (z wyjątkiem --extra-vars), więc zawsze wiesz, gdzie szukać parametrów środowiska.

Zmienne w roli

var_loader_root: tutaj przechowywane są katalogi ze środowiskami

var_loader_group_name: katalog ze zmiennymi środowiskowymi, ta ścieżka jest względna do var_loader_root

var_loader_src: jeśli określono, rola załaduje zmienne tylko z tego katalogu

Domyślne ustawienia roli

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

Przykład pliku playbook

Ten fragment załaduje wszystkie pliki *.yml z playbook_dir/vars/dev:

- hosts: grupa-z-wszystkimi-hostami-dla-środowiska-dev
  roles:
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/vars"
      var_loader_group_name: "dev"

Ten fragment załaduje wszystkie pliki *.yml z /home/user/my-env:

- hosts: grupa-z-wszystkimi-hostami-dla-środowiska-dev
  roles:
    - role: freehck.var_loader
      var_loader_src: "/home/user/my-env"

Ten fragment załaduje wszystkie pliki *.yml z: playbook_dir/creds/dev, playbook_dir/env-vars/dev, playbook_dir/common-vars/my-dev-env:

--- playbook.yml ---
- hosts: grupa-z-wszystkimi-hostami-dla-środowiska-dev
  roles:
    # ładuj dane uwierzytelniające
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/creds"
      var_loader_group_name: "{{ credentials_library }}"
    # ładuj zmienne specyficzne dla tej grupy środowisk (grupa podobnych środowisk)
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/common-vars"
      var_loader_group_name: "{{ env_group_name }}"
    # ładuj zmienne specyficzne dla środowiska
    - role: freehck.var_loader
      var_loader_root: "{{ playbook_dir }}/env-vars"
      var_loader_group_name: "{{ env_name }}"
      
--- group_vars/grupa-z-wszystkimi-hostami-dla-środowiska-dev.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"

Licencja

MIT

Informacje o autorze

Dmitrii Kashin, freehck@freehck.ru

O projekcie

loader for environment variables

Zainstaluj
ansible-galaxy install freehck.var_loader
Licencja
Unknown
Pobrania
2.5k
Właściciel