Utknąłem. Wylogowałem się z internetu i nie mogłem znaleźć odpowiedzi.Jak rozróżnić etapy/produkcję z dynamiczną inwentaryzacją?
Używam Ansible od lat, ale zawsze ze statycznymi zapasami. Aby odróżnić różne środowiska, takie jak inscenizacja i produkcja, użyłem różnych plików statycznych, odpowiednio: staging
i production
. Kiedy potrzebne do serwerów przepis postoju, zrobiłbym:
ansible-playbook site.yml -i staging
gdy chciałem zrobić to samo dla produkcji, zrobiłbym:
ansible-playbook site.yml -i production
Zarówno inscenizacja i produkcja potrzebne zmienne z różnymi wartości, więc mam group_vars/staging
i . Wszystko dobrze i zgodnie z najlepszymi praktykami.
Teraz muszę udostępnić instancje EC2 w AWS. Używam this AWS guide. Mam książeczkę z dwoma sztukami. Pierwszy jest uruchamiany przeciwko localhost
, tworzy/wyszukuje wymagane instancje EC2 w AWS i zapełnia grupę za pomocą add_host
. Druga gra używa tej grupy do działania przeciwko instancjom EC2 odkrytym podczas pierwszej gry. Wszystko zgodnie z tym przewodnikiem.
Wszystko działa świetnie, z wyjątkiem jednej rzeczy. Nie mam pojęcia, jak określić, które środowisko należy dostarczyć, a zatem wymagane zmienne nie są ładowane od group_vars/(staging|production)
. Zasadniczo to, czego chcę, to coś podobnego do -i (staging|production)
Użyłem tych wszystkich lat z statycznymi zapasami, ale wydaje się, że używanie -i
nie ma sensu, ponieważ inwentarz jest dynamiczny. Chcę sposobu, aby móc załadować zmienne z group_vars/staging
lub group_vars/production
na podstawie argumentu I przekazać do ansible-playbook
, gdy go uruchomię.
Jak to zrobić? Jaka jest najlepsza praktyka?
Być może mógłbyś zrobić coś z oddzielnymi książkami? Coś jak production.yml i staging.yml. Te skrypty będą zawierać plik site.yml, ale będą również zawierały własne vars. –