(Relacionado a retornos de chamada ou ganchos e séries reutilizáveis de tarefas, em funções Ansible ):
Existe uma maneira melhor de acrescentar uma lista ou adicionar uma chave a um dicionário no Ansible do que (ab) usando uma expressão de modelo jina2?
Eu sei que você pode fazer algo como:
- name: this is a hack
shell: echo "{% originalvar.append('x') %}New value of originalvar is {{originalvar}}"
mas não há realmente nenhum tipo de meta tarefa ou auxiliar para fazer isso?
Parece frágil, parece não estar documentado e depende de muitas suposições sobre como as variáveis funcionam no Ansible.
Meu caso de uso são várias funções (extensões de servidor de banco de dados) que precisam fornecer alguma configuração a uma função base (o servidor de banco de dados). Não é tão simples quanto anexar uma linha ao arquivo de configuração do servidor db; cada alteração se aplica à mesma linha , por exemplo, as extensões bdr
e pg_stat_statements
deve aparecer na linha de destino:
shared_preload_libaries = 'bdr, pg_stat_statements'
A maneira Ansible de fazer isso é apenas processar o arquivo de configuração várias vezes (uma vez por extensão) com uma regexp que extrai o valor atual, analisa e depois reescreve? Em caso afirmativo, como você torna esse idempotente em várias execuções?
E se a configuração for mais difícil do que isso para analisar e não for tão simples quanto acrescentar outro valor separado por vírgula? Pense nos arquivos de configuração XML.