Como destruir / excluir / remover um valor variável no Ansible?

4

Existe uma maneira de destruir a variável no Ansible?

Na verdade, eu tenho uma variável {{version}} sendo usada em todas as minhas funções para os respectivos pacotes. Quando eu executo múltiplas funções, o valor da versão de uma função é passada para outra - isso é devido a alguma função que eu não estou dando valor da versão para que ela possa instalar a versão padrão daquele pacote disponível para m / c como ubuntu / redhat etc.

Aqui está o meu modelo de função. O valor de {{version}} do mysql está sendo passado para o rabbitmq.

    roles:
- { role: mysql }
- { role: rabbitmq}

Se eu puder destruir / deletar o valor da versão em todas as funções, isso deve resolver o problema, acredito.

    
por MMA 20.06.2017 / 05:14

3 respostas

6

Como já foi apontado, não é possível cancelar uma variável no Ansible.

Evite essa situação adicionando um prefixo aos nomes de variáveis como rabbitmq_version e assim por diante. IMHO esta é uma prática recomendada.

Além de evitar a situação, você adicionará clareza aos seus host_vars e group_vars .

    
por 20.06.2017 / 11:24
3

Não, não há como desfazer uma variável (nível superior) no Ansible.

A única coisa que você pode fazer é criar um dicionário e armazenar a variável como uma chave neste dicionário. Limpar o dicionário "pai" essencialmente fará com que a expressão condicional dictionary.key is defined funcione.

    
por 20.06.2017 / 06:56
2

você deve usar a variável por função:

  roles:
    - role: mysql
      version: mysql_version
    - role: rabbitmq
      version: rabbitmq_version

ou

  roles:
    - { role: mysql, version: mysql_version }
    - { role: rabbitmq, version: rabbitmq_version }
    
por 27.10.2017 / 12:09