我正在尝试创建一个设置修剪/丢弃的 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'
我很确定您的问题与正则表达式有关。您需要将前瞻断言移到通配符前面,以便仅匹配不以
discard
. 例如,^(?!.* discard$)(.*)$
。一旦您进行了更改,您将遇到一个额外的问题,即空行也会匹配 - 可能是不可取的。使用类似的方法通过将一个或多个字符与(而不是零个或多个,)
^(?!.* discard$)(.+)$
匹配来解决此问题。.+
.*
或者,您可以使用后向断言,如
^(.+)(?<! discard)$
.