我们如何编写一个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,那么我想开始服务并发送一封电子邮件。
由于 Sanket Dangi
我已经在puppet master中配置了tagmail.conf,并且还启用了puppet报告但是无法接收到我的gmail帐户的邮件。我可以在puppet master上看到puppet agent报告,但是没有收到邮件。我需要为此配置邮件服务器吗?
My Tagmail Conf :
all: xxxxxxx@gmail.com
答案 0 :(得分:7)
Puppet不是命令式shell脚本,您需要在执行操作Y之前检查X的值,使您进入Z状态。相反,您指定希望状态Z和Puppet检查当前状态并处理转换
这意味着您在决定是否启动服务之前不需要检查服务的状态,而是声明 mysql 服务应该正在运行< / em>和Puppet确保是这种情况。
只需在package
行旁边的清单中显示此内容:
service { "mysql":
ensure => running,
enable => true,
require => Package["mysql-server"],
}
require行确保在评估或启动服务之前安装软件包。
要发送通知,您可以使用Puppet中的tagmail报告功能。首先在主服务器/etc/puppet/tagmail.conf
上设置这样的tagmail文件(reference docs):
mysql, apache: wwwadmins@example.com
在master的puppet.conf中,设置:
[master]
reports = tagmail
确保客户在puppet.conf中启用了报告:
[agent]
report = true
然后应该使用“mysql”或“apache”标签(类名,模块名等)触发与任何资源相关的电子邮件。