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
ansible-galaxy install almaops.vars