Tengo un ansible variable que se pasa en la línea de comando como tal:

ansible-playbook -e environment=staging ansible/make_server.yml

Quiero cargar en algunas variables en mi papel dependeing en el valor de medio ambiente. He intentado un montón de diferentes métodos tales como:

- include_vars: staging_vars.yml
  when: environment | staging

y

- include_vars: staging_vars.yml
  when: "{{environment}} == "staging"

y

- include_vars: staging_vars.yml
  when: "{{environment}} | match('staging')"

pero nada parece funcionar. ¿Cómo puedo hacer esto?

Detalles:

  • Estoy usando ansible 1.7.2

OriginalEl autor Jordan Ell | 2014-12-06

1 Comentario

  1. 28

    Tener cuidado con una variable llamada environment, puede causar problemas porque Ansible utiliza internamente. No recuerdo si es en el docs, pero aquí está una lista de correo hilo:

    https://groups.google.com/forum/#!tema/ansible-proyecto/fP0hX2Za4I0

    Utilizamos una variable llamada stage.

    Parece que va a terminar con un montón de estos en una fila:

    - include_vars: testing_vars.yml
      when: stage == "testing"
    - include_vars: staging_vars.yml
      when: stage == "staging"
    - include_vars: production_vars.yml
      when: stage == "production"
    

    Pero también se puede simplemente incluir su entorno:

    - include_vars: "{{ stage }}_vars.yml"
    

    O bien, utilice el vars_files en un libro de jugadas nivel:

    vars_files:
      - vars/{{ stage }}_vars.yml
    
    El entorno de las obras, pero el ambiente como usted dice se utiliza internamente y Ansible dicen en la documentación que no lo uso. Caso es importante 🙂

    OriginalEl autor Ramon de la Fuente

Dejar respuesta

Please enter your comment!
Please enter your name here