almaops.vars

OSTRZEŻENIE O DEPRECJACJI

Ta rola Ansible została wycofana na rzecz kolekcji almaops.common.

almaops.vars

Ta rola zawiera zmienne z określonego katalogu.

Pomysł

Podczas opracowywania CI/CD dla dużego projektu stwierdziliśmy, że bardzo wygodnie jest przechowywać zmienne w katalogach dedykowanych dla każdego środowiska, a następnie je ładować. Wkrótce zauważyliśmy, że korzystne jest również rozdzielenie poświadczeń i wspólnych zmiennych na oddzielne katalogi. Katalogi mają taką strukturę:

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

Umieszczamy hosty z tego samego środowiska w jednej grupie (nazwijmy ją na przykład projekt-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 mają zawsze najwyższy priorytet (z wyjątkiem --extra-vars), więc zawsze wiesz, gdzie szukać swoich parametrów środowiskowych.

Zmienne w roli

vars_root: tutaj przechowywane są katalogi ze środowiskami

vars_group: katalog ze zmiennymi środowiskowymi, ta ścieżka jest względna względem vars_root

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

Domyślne wartości roli

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

Przykładowy playbook

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

- hosts: grupa-zawierająca-wszystkie-hospody-dla-środowiska-dev
  roles:
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/vars"
      vars_group: "dev"

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

- hosts: grupa-zawierająca-wszystkie-hospody-dla-środowiska-dev
  roles:
    - role: almaops.vars
      vars_source: "/home/user/my-env"

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

--- playbook.yml ---
- hosts: grupa-zawierająca-wszystkie-hospody-dla-środowiska-dev
  roles:
    # załaduj poświadczenia
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/creds"
      vars_group: "{{ credentials_library }}"
    # załaduj zmienne specyficzne dla tej grupy środowisk (grupa podobnych środowisk)
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/common-vars"
      vars_group: "{{ env_group_name }}"
    # załaduj zmienne specyficzne dla środowiska
    - role: almaops.vars
      vars_root: "{{ playbook_dir }}/env-vars"
      vars_group: "{{ env_name }}"
      
--- group_vars/grupa-zawierająca-wszystkie-hospody-dla-środowiska-dev.yml ---
credentials_library: "dev"
env_group_name: "dev"
env_name: "my-dev-env"

Licencja

MIT

O projekcie

Loading ansible variables from files

Zainstaluj
ansible-galaxy install almaops.vars
Licencja
Unknown
Pobrania
221
Właściciel
Premium IT Consulting