![Ansible でホスト変数を env ファイルに変換するのが非常に遅い](https://rvso.com/image/768904/Ansible%20%E3%81%A7%E3%83%9B%E3%82%B9%E3%83%88%E5%A4%89%E6%95%B0%E3%82%92%20env%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%81%AE%E3%81%8C%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%81%85%E3%81%84.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
ファイルを 1 行ずつ作成していますが、非常に遅いです。もっと良い方法はありますか?
.yml ファイルは次のようになります。
env_file:
key1: "value1"
key2: "value2"
結果のファイルの形式は次のようになります。
KEY1="value1"
KEY2="value2"
各行の処理には約 20 秒かかり、合計するとかなりの時間がかかります。
答え1
template
モジュールを使用して Jinja2 ファイルを作成してみてください。lineinfile
ループを処理する場合よりも高速になる傾向があります。