1

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

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

node default {
    include apache
}

我知道这不是正确的代码。但我想先检查 hasstatus,如果服务状态为假,那么我想启动服务并发送一封电子邮件。

谢谢 Sanket Dangi


我在 puppet master 中配置了 tagmail.conf 并且还启用了 puppet 报告,但无法接收到我的 gmail 帐户的邮件。我可以看到关于 puppet master 的 puppet agent 报告,但没有收到邮件。我需要为此配置邮件服务器吗?

My Tagmail Conf : 
all: xxxxxxx@gmail.com
4

1 回答 1

7

Puppet 不是命令式 shell 脚本,您需要在执行使您进入状态 Z 的操作 Y 之前检查 X 的值。相反,您指定您想要状态 Z 并且 Puppet 检查当前状态并处理转换。

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

只需将其放在清单旁边的package行中:

service { "mysql":
  ensure  => running,
  enable  => true,
  require => Package["mysql-server"],
}

require 行确保在评估或启动服务之前安装包。

要发送通知,您可以使用 Puppet 中的标记邮件报告功能。首先在 master 上设置一个 tagmail 文件(参考文档),如下所示/etc/puppet/tagmail.conf

mysql, apache: wwwadmins@example.com

在master的puppet.conf中,设置:

[master]
reports = tagmail

确保客户端在 puppet.conf 中启用了报告:

[agent]
report = true

这应该会触发与带有“mysql”或“apache”标签(类名、模块名等)的任何资源相关的电子邮件。

于 2011-12-30T17:42:51.560 回答