當未指定選項時,Ansible ini_file 模組不會建立部分

當未指定選項時,Ansible ini_file 模組不會建立部分

我使用 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但是,如果您的部分中已經有值,那麼如果您想要沒有選項和值的部分,則必須將其刪除。然後加。抱歉,但我也找不到真正的答案。

相關內容