Rozglądam się, jak odróżnić środowiska produkcyjne od scenicznych dzięki Ansible. Natknąłem się to dokumentacja.
Mam wrażenie, że Ansible ma zmienną podobną do ansible.hostname
oznaczony etykietą ec2_tag_environment_production
. Jednak gdy próbuję dodać to do mojego playbooka,to pomyłka! Nie mam nic przeciwko temu, że to pomyłka (mogę to naprawić), ale widzę, że to błąd w niewłaściwym playbooku. Na przykład, jeśli uruchomię poradnik skierowany do serwera scenicznego, spróbuje uruchomić zakładkę produkcji. Oto, na co składa się mój główny przewodnik:
---
- name: Running Production Playbook
include: production.yml
when: ec2_tag_environment_production = "production"
- name: Running Stage playbook
include: stage.yml
when: ec2_tag_environment_production = "staging"
Dodałem środowisko: inscenizacja | produkcja jako tag w AWS. Czy ktoś może mi powiedzieć, co należy zrobić, aby to naprawić?
Odpowiedzi:
2 dla odpowiedzi № 1Skrypt inwentaryzacji dynamicznej EC2 dla pytań zadawanych przez Ansible dla hostów EC2. Jeśli host jest oznaczony tagiem environment
, a następnie fakt ec2_tag_environment
będzie dostępne dla tej instancji, a wartość tego faktu jest wartością znacznika w EC2.
W twoim przypadku:
---
- name: Running Production Playbook
include: production.yml
when: ec2_tag_environment == "production"
- name: Running Stage playbook
include: stage.yml
when: ec2_tag_environment == "staging"
Możesz jednak użyć dynamicznego:
- include: "{{ ec2_tag_environment }}.yml"