Mar*_*els 5 ubuntu varnish puppet apt
我正在尝试让 Puppet 将我们的 Varnish 3 服务器升级到 Varnish 4,这是一个需要更新配置文件的重大更新,否则它将无法启动。这是在 Ubuntu 12.04 上。
Varnish 模块基本上是用这些类和依赖项构建的:
Class['varnish::repo']
-> Class['varnish::install']
-> Class['varnish::tools']
-> Class['varnish::config']
~> Class['varnish::service']
Run Code Online (Sandbox Code Playgroud)
我已经更新了APT-回购网址varnish::repo
,设置ensure=>latest
在varnish::install
并提供了一个更新的配置文件varnish::config
。到现在为止还挺好。
当 Puppet 运行这些依赖项时,运行会在该varnish::install
阶段失败,因为 Apt 会在升级 Varnish 守护进程后立即尝试重新启动它,而没有给 Puppet 替换配置文件的机会。类中的失败varnish::install
会导致依赖链中断,并导致其余类也失败。结果是损坏的 Varnish 安装需要手动恢复。
你如何处理这个问题?
我考虑过使用policy-rc.d
,它本质上是告诉 Apt 不要执行服务的自动停止和启动。我尝试在升级之前创建文件并在升级之后将其删除。
file {'/usr/sbin/policy-rc.d':
ensure => $ensure,
content => "#!/bin/sh\nexit 101",
owner => 'root',
group => 'root',
mode => '0755',
}
Run Code Online (Sandbox Code Playgroud)
当然创建和删除是一个问题,因为 Puppet 将其视为重复资源。
你问我为什么要在安装后再次删除该策略?因为我们过去常常unattended-upgrades
执行较小的安全升级,而我希望在这些情况下允许自动重启服务,但在这种情况下则不然。此外,policy-rc.d 影响所有服务,而不仅仅是 Varnish。
也许我想错了,但是我可以以某种方式告诉 Puppet 或 Apt 等待重新启动,直到配置文件也被替换吗?
归档时间: |
|
查看次数: |
497 次 |
最近记录: |