在 Puppet 中使用带有通知的 case 语句

0 linux puppet

class mymodule::scripts::os_check {
  case $operatingsystem  {
    /(?i-mx:centos)/: { notify("You are using CentOS")}
    /(?i-mx:.*)/: { notify("You are using non-CentOS OS") }
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么这运行没有错误,但不显示通知(在操作系统事实 == CentOS 的服务器上)?

我使用 puppet apply os-check.pp 作为独立脚本运行它,只看到目录运行通知。

Cra*_*son 5

尝试这个:

class mymodule::scripts::os_check {
  case $::operatingsystem  {

    'CentOS': {
      notify {'You are using CentOS': }
    }

    default: {
      notify {'You are using non-CentOS OS': }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

几点,没有特定的顺序,在适当的地方用括号括起来:

  • 您应该对所有不包含变量插值(Puppet Lint)的字符串使用单引号。
  • 当您知道它们时,匹配实际值总是更好 - 您是否有任何特定原因尝试匹配正则表达式?
  • operatingsystem事实应使用顶级命名空间变量相匹配$::operatingsystem木偶皮棉
  • 您应该始终为任何 case 语句提供默认选项(Puppet Lint
  • 您的notify语法错误,您应该实例化一个通知资源,而不是尝试将其作为函数调用(Puppet 类型参考