![Очень медленное преобразование переменных хоста в файл env с помощью ansible](https://rvso.com/image/768904/%D0%9E%D1%87%D0%B5%D0%BD%D1%8C%20%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%20%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D1%85%D0%BE%D1%81%D1%82%D0%B0%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%20env%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20ansible.png)
У меня есть следующая задача в 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 }}"
Он создает .env
файл построчно, но это ОЧЕНЬ медленно. Есть ли способ получше?
Файл .yml выглядит так:
env_file:
key1: "value1"
key2: "value2"
Полученный файл имеет формат:
KEY1="value1"
KEY2="value2"
Обработка каждой строки занимает около 20 секунд, и это действительно занимает много времени.
решение1
Попробуйте использовать template
модуль и написать файл Jinja2. Это, как правило, быстрее, чем lineinfile
при работе с циклами.