Puppet 根据服务状态执行伪代码

Puppet 根据服务状态执行伪代码,puppet,Puppet,我们如何编写一个puppet清单代码来标识服务(httpd)是否在puppet客户机/代理上运行。如果没有,它应该启动该服务并发送电子邮件 class apache { package { mysql-server: ensure => installed } if hasstatus == "false" { service { "mysql": ensure => running, require =

我们如何编写一个puppet清单代码来标识服务(httpd)是否在puppet客户机/代理上运行。如果没有,它应该启动该服务并发送电子邮件

class apache {
    package { mysql-server: ensure => installed }
    if hasstatus == "false" {
        service { "mysql":
            ensure => running,
            require => Package["mysql-server"],
        }
    }
}

node default {
    include apache
}
我知道这不是正确的代码。但我想先检查hasstatus,如果服务状态为false,那么我想启动服务并发送电子邮件

谢谢 桑克特丹吉


我在puppet master中配置了tagmail.conf,还启用了puppet报告,但无法接收发送到gmail帐户的邮件。我可以看到傀儡特工关于傀儡主人的报告,但没有收到邮件。我需要为此配置邮件服务器吗

My Tagmail Conf : 
all: xxxxxxx@gmail.com

Puppet不是一个命令式shell脚本,您需要在执行操作Y(将您带到状态Z)之前检查X的值。相反,您指定希望状态Z,Puppet检查当前状态并处理转换

这意味着,在决定是否启动服务之前,您不需要检查服务的状态,而是声明mysql服务应该正在运行,Puppet确保了这一点

只需将其放在清单的
程序包
行旁边:

service { "mysql":
  ensure  => running,
  enable  => true,
  require => Package["mysql-server"],
}
require行确保在评估或启动服务之前安装包

要发送通知,可以使用Puppet中的tagmail报告功能。首先在主机上的
/etc/puppet/tagmail.conf
上设置一个tagmail文件():

mysql, apache: wwwadmins@example.com
在master's puppet.conf中,设置:

[master]
reports = tagmail
确保客户端在puppet.conf中启用了报告:

[agent]
report = true

然后,这将触发与任何带有“mysql”或“apache”标记(类名、模块名等)的资源相关的电子邮件。

Puppet不是一个命令式shell脚本,在执行操作Y之前需要检查X的值,从而进入状态Z。相反,指定希望状态Z和Puppet检查当前状态并处理转换

这意味着,在决定是否启动服务之前,您不需要检查服务的状态,而是声明mysql服务应该正在运行,Puppet确保了这一点

只需将其放在清单的
程序包
行旁边:

service { "mysql":
  ensure  => running,
  enable  => true,
  require => Package["mysql-server"],
}
require行确保在评估或启动服务之前安装包

要发送通知,可以使用Puppet中的tagmail报告功能。首先在主机上的
/etc/puppet/tagmail.conf
上设置一个tagmail文件():

mysql, apache: wwwadmins@example.com
在master's puppet.conf中,设置:

[master]
reports = tagmail
确保客户端在puppet.conf中启用了报告:

[agent]
report = true
然后,这将触发与带有“mysql”或“apache”标记(类名、模块名等)的任何资源相关的电子邮件