我想将单词“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 模块来做到这一点?
答案1
这可以用 来完成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
模块条目可能需要特定的东西,这些东西可能因主机而异。可能需要使用额外的规则或脚本来测试是否设置了适当的文件系统设备,以捕获正则表达式失败的低但不为零的可能性。