J'ai une variable ansible transmise sur la ligne de commande en tant que telle:
ansible-playbook -e environment=staging ansible/make_server.yml
Je veux charger certaines variables dans mon rôle en fonction de la valeur de l'environnement. J'ai essayé beaucoup de méthodes différentes telles que:
- include_vars: staging_vars.yml
when: environment | staging
et
- include_vars: staging_vars.yml
when: "{{environment}} == "staging"
et
- include_vars: staging_vars.yml
when: "{{environment}} | match('staging')"
mais rien ne semble fonctionner. Comment puis-je faire cela?
Détails:
Soyez prudent avec une variable appelée environment
, cela peut causer des problèmes car Ansible l'utilise en interne. Je ne me souviens pas si c'est dans les documents, mais voici un fil de liste de diffusion:
https://groups.google.com/forum/#!topic/ansible-project/fP0hX2Za4I
Nous utilisons une variable appelée stage
.
Il semble que vous vous retrouverez avec un tas de ceux-ci d'affilée:
- include_vars: testing_vars.yml
when: stage == "testing"
- include_vars: staging_vars.yml
when: stage == "staging"
- include_vars: production_vars.yml
when: stage == "production"
Mais vous pouvez aussi simplement inclure votre environnement:
- include_vars: "{{ stage }}_vars.yml"
Ou utilisez le vars_files
au niveau du playbook:
vars_files:
- vars/{{ stage }}_vars.yml