我正在尝试创建一个设置修剪/丢弃的 Ansible 任务。我有一个剧本可以处理其他所有事情(LVM、fstrim),但我不知道如何crypttab
正确配置。
我正在尝试使用代替模块附加discard
到不存在的每一行的末尾discard
,但我似乎无法正确获取正则表达式(无论如何我认为这是我的问题)。
我有一个/etc/crypttab
如下所示的文件:
luks-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn UUID=nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn none discard
luks-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn UUID=nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn none
任务如下:
- name: ensure crypttab is configured to issue discards
replace: dest=/etc/crypttab backup=yes
regexp='^(.*(?! discard))$'
replace='\1 discard'
答案1
我非常确定您的问题与正则表达式有关。您需要将前瞻断言移到通配符前面,以便仅匹配不以 结尾的行discard
。例如,^(?!.* discard$)(.*)$
。
进行此项更改后,您还会遇到一个额外的问题,即空行也会匹配 - 这可能是不理想的。使用类似 的方法^(?!.* discard$)(.+)$
来修复此问题,方法是将一个或多个字符与 匹配.+
(而不是零个或多个,.*
)。
或者,您可以使用后视断言,如 所示^(.+)(?<! discard)$
。