Ansible

Ansible - 在該行特定部分的特定行中添加一個單詞

  • November 25, 2018

我想將單詞“nodev”添加到 /etc/fstab 文件中包含 /home 的行中,

這是之前的文件

UUID=2ea6e2e5-d902-4289-b516-40c175cd481b /                       ext3    defaults        1 1
UUID=114107f7-5b48-44b7-ad38-09b47b1d6b02 /boot                   ext3    defaults        1 2
UUID=830757d1-60ad-4f4a-b41a-cad04d309e9d /home                   ext3    defaults        1 2
UUID=4b309559-2391-4f28-b2f5-38029e278db0 /tmp                    ext3    defaults        1 2
UUID=1dfc4cab-4de4-491f-8bd0-3503e9027717 /var                    xfs     defaults        0 0
UUID=f0846773-528b-42a2-a0dc-7a736595f7e1 /var/log                xfs     defaults        0 0
UUID=25ef70f1-7083-4a9b-a64c-970f5d4ad742 /var/log/audit          xfs     defaults        0 0
UUID=40d2f177-aa5c-43a1-9d85-e21bf2bafb39 swap                    swap    defaults        0 0

這就是我想要的

UUID=2ea6e2e5-d902-4289-b516-40c175cd481b /                       ext3    defaults        1 1
UUID=114107f7-5b48-44b7-ad38-09b47b1d6b02 /boot                   ext3    defaults        1 2
UUID=830757d1-60ad-4f4a-b41a-cad04d309e9d /home                   ext3    defaults,nodev        1 2
UUID=4b309559-2391-4f28-b2f5-38029e278db0 /tmp                    ext3    defaults        1 2
UUID=1dfc4cab-4de4-491f-8bd0-3503e9027717 /var                    xfs     defaults        0 0
UUID=f0846773-528b-42a2-a0dc-7a736595f7e1 /var/log                xfs     defaults        0 0
UUID=25ef70f1-7083-4a9b-a64c-970f5d4ad742 /var/log/audit          xfs     defaults        0 0
UUID=40d2f177-aa5c-43a1-9d85-e21bf2bafb39 swap                    swap    defaults        0 0

我如何使用 ansible 和 lineinfile 模組來做到這一點?

這可以用 來完成lineinfile,也許,假設文件的格式沒有改變,並且defaults可以限制匹配,之後nodev可以添加選項和該行的其餘部分:

- hosts: localhost
 tasks:
   - lineinfile:
       path: /tmp/fstab
       regexp: '^(\S+\s+/home\s+\S+\s+defaults)'
       line: '\1,nodev 1 2'
       backrefs: yes

經測試:

$ ansible-playbook lineinfile.yml
$ diff /tmp/fstab.orig /tmp/fstab

儘管對於掛載點,掛載模組可能不如正則表達式解析fstab. 另一方面,正則表達式不會關心 UUID 是什麼,而mount模組條目可能需要特定的內容,這些內容可能因主機而異。可能需要一個額外的規則或腳本來測試是否設置了適當的文件系統設備,以捕捉正則表達式失敗的低機率但非零機率。

引用自:https://unix.stackexchange.com/questions/483956