我使用 Ansible 建立 ini 格式的設定檔。當我使用ini_file
帶有選項和值對的模組時,它按預期工作,例如:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
option: foo
value: bar
結果會是:
[lol]
foo = bar
但是我希望存在一個沒有選項的特定部分,如下所示:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
但它所做的只是報告ok
任務並繼續下一個任務。
當我使用詳細模式時,我可以看到:ok: [localhost] => {"changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}
如何使用該模組建立無選項部分?
答案1
ini 是一個非正式的標準,但根據我的理解,沒有選項的部分沒有太大意義。這是我的第一個猜測,為什麼這沒有在 Ansible 中實現。
ini
我建議使用 -Module而不是文件行模組確保 ini 檔案中存在某個部分。
答案2
使用模板來建立配置文件,這是一個正確的方法。僅使用ini_file
模組來編輯文件。盡量避免使用 lineinfile 模組,將其作為最後的手段。
規則 0)如果可能的話,請使用模板模組,它可以為您提供完全的控制和驗證。 Brian Coca(紅帽 Ansible 資深軟體工程師。)
答案3
解決方法是使用不允許值,並在選項中使用空白/註解程式碼。
- ini_file:
dest: '/tmp/telegraf.conf'
section: '[inputs.interrupts]'
option: ' ## no configuration'
allow_no_value: yes
state: absent
但是,如果您的部分中已經有值,那麼如果您想要沒有選項和值的部分,則必須將其刪除。然後加。抱歉,但我也找不到真正的答案。