web-dev-qa-db-fra.com

Ansible: vérifier si la variable est égale à la chaîne

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:

  • J'utilise Ansible 1.7.2
24
Jordan Ell

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
32
Ramon de la Fuente