如何在SaltStack中使用正则表达式注释掉整行

时间:2018-06-05 14:14:39

标签: regex salt-stack

背景

我想在/etc/fstab注释掉以下一行:

/dev/mapper/rhel-swap   swap                    swap    defaults        0 0

在阅读Salt documentation on salt.states.file.comment后,我在.sls

中想到了这一点
Permanently Disable Swap Memory:
  file.comment:
    - name: /etc/fstab
    - regex: swap

(我也试过^swap。)

输出

      ID: Permanently Disable Swap Memory on Cassandra Nodes
Function: file.comment
    Name: /etc/fstab
  Result: True
 Comment: Commented lines successfully
 Started: 08:13:09.809454
Duration: 25.587 ms
 Changes:
          ----------
          /etc/fstab:
              updated

结果:该行仍未被注释掉。注意Salt安装后/etc/fstab中的最后一行:

/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=69cb98f5-5325-4168-a28c-c1219081ae16 /boot                   xfs     defaults        0 0
/dev/mapper/rhel-home   /home                   xfs     defaults        0 0
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
~

问题

  • 尽管Salt的成功输出,为什么不会注释掉这条线?

  • 文档说我需要包含前导^锚点,但是不匹配行的开头?如何使用^进行正则表达式工作,并且还匹配出现在行中间的单词swap

其他信息

  • 环境:Red Hat 7

1 个答案:

答案 0 :(得分:1)

不确定为什么它最初没有工作,但这是正常的正则表达式:^(\/).*swap.*$。这匹配任何以/开头且包含单词swap的行。

这是完整的盐步骤:

Permanently Disable Swap Memory:
  file.comment:
    - name: /etc/fstab
    - regex: ^(\/).*swap.*$