Conversão de host vars em arquivo env muito lenta com ansible

Conversão de host vars em arquivo env muito lenta com ansible

Tenho a seguinte tarefa no ansible:

- name: Set env vars
  lineinfile:
    path: "~/.env"
    mode: 0600
    create: yes
    line: "{{ item.key|upper }}=\"{{ item.value }}\""
    regexp: "^{{ item.key|upper }}="
  loop: "{{ env_file |dict2items }}"

Está criando o .envarquivo linha por linha, mas é MUITO lento. Existe uma maneira melhor?

O arquivo .yml se parece com:

env_file:
  key1: "value1"
  key2: "value2"

O arquivo resultante tem o formato:

KEY1="value1"
KEY2="value2"

Cada linha leva cerca de 20 segundos para ser processada e realmente faz sentido.

Responder1

Tente usar o templatemódulo e escrever um arquivo Jinja2. Tende a ser mais rápido do que lineinfileao lidar com loops.

informação relacionada