Ansible
Ansible - 在該行特定部分的特定行中添加一個單詞
我想將單詞“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
模組條目可能需要特定的內容,這些內容可能因主機而異。可能需要一個額外的規則或腳本來測試是否設置了適當的文件系統設備,以捕捉正則表達式失敗的低機率但非零機率。