Ansible: preenchendo um modelo que contém interpolações imutáveis

Ansible: preenchendo um modelo que contém interpolações imutáveis

Preciso fazer um playbook que pegue um arquivo de modelo, interpole algumas variáveis ​​e coloque o arquivo resultante em outro diretório.

A primeira parte do problema é que o arquivo resultante será usado como outro manual do Ansible, portanto, o arquivo de origem contém outras interpolações e essas interpolações devem ser preservadas como estão. Como exemplo, vamos supor que o arquivo de origem contenha algo assim:

key1: {{ value1 }}
key2: {{ value2 }}

O valor de key1deve ser interpolado pelo meu manual (se tornará os valores da value1variável), mas ao mesmo tempo value2precisa ser mantido exatamente como está (será {{ value2 }}.

A segunda parte do problema é que não posso simplesmente modificar o arquivo de origem e adicionar barras invertidas antes das chaves, porque esse arquivo está sendo atualizado por outros processos. Além disso, como o arquivo de modelo é atualizado de tempos em tempos, não posso prever quais variáveis ​​precisam ser ignoradas após a próxima atualização. Só sei que preciso interpolar value1, mas não sei quais são os nomes das outras variáveis ​​(hoje tem value2e value3, amanhã os desenvolvedores renomearam value2e value2_deprecatedadicionaram value3em algum lugar).

Posso perguntar ao Ansible que preciso value1apenas interpolar?

Obrigado.

Responder1

P:"O modelo contém interpolações e essas interpolações devem ser preservadas como estão."

A: Declarar variáveis ​​padrão

    lbr: '{{ "{{" }}'
    rbr: '{{ "}}" }}'
    value1: '{{ lbr }} value1 {{ rbr }}'
    value2: '{{ lbr }} value2 {{ rbr }}'

e crie o modelo

shell> cat template.yml.j2
key1: {{ value1 }}
key2: {{ value2 }}

P:"Preciso interpolar apenas o valor1."

R: Substitua o valor padrão, por exemplo

    - template:
        src: template.yml.j2
        dest: playbook.yml
      vars:
        value1: value1

shell> cat playbook.yml 
key1: value1
key2: {{ value2 }}

informação relacionada