up:修改配置文件后强制重启服务


21

我如何确保如果通过木偶从主存储库将新版本的配置文件下载到其中一台受管服务器,则相关服务将重新启动。

典型场景-假设有新的munin或apache配置。puppet客户端发现它,覆盖本地文件...以及...-如何确保服务重新启动/重新加载?

非常感谢!

Answers:


23

通知的替代方法是订阅:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

区别在于从另一端描述了该关系。例如,您可以使apache订阅/etc/apache/httpd.conf,但是您将使一个vhost文件通知apache,因为您的apache类不会知道您拥有的每个vhost。

类似的双端情况适用于require和before。这只是在特定情况下更有意义的问题。

正如乍得所提到的,如果您发现p不断地尝试启动服务,那么您需要添加一个模式参数,这是一个正则表达式,可应用于进程列表。默认情况下,puppet将停止并开始重新启动服务。如果添加“ hasrestart => true”,则它将使用“ restart”参数中指定的命令来重新启动服务。


22

看来我发现了一些东西:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

我们将看到它如何工作。无论如何,欢迎您提出关于该主题的想法。


1
是。你可以找到在木偶类型参考的细节在“Metaparameters”(reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters
乍得Huneycutt

1
哦,根据您的操作系统,您可能必须使用服务类型的hasstatus,hasrestart和/或pattern参数。
乍得·休尼卡特

2

(我知道这是一个非常古老的问题,但只是想我会以一种(我认为)更简单的方法投入我的两分钱)

也可以随意使用箭头符号:

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

要么

File['/etc/sshd_config'] ~> Service['sshd']

在第一个示例中,如果您使用箭头,则不需要通知选项
c4f4t0r 2015年

哎呀。我只是复制而忘了拿出来。
伊桑·布劳维尔

1

这适用于Solaris 10 :)

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}

0

有多个等效的符号:

通知

file { '/etc/sshd_config':
    notify => Service[sshd],
}

service { sshd:
    ensure => running
}

订阅

file { '/etc/sshd_config':
   ...
}

service { sshd:
    ensure => running,
    subscribe => File['/etc/sshd_config'],
}

箭头符号

File['/etc/sshd_config'] ~> Service['sshd']

链接声明

file { '/etc/sshd_config':
   ...
}
~> service { sshd:
    ensure => running,
}

如果要触发reload而不是restart,请调整服务声明:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.