Puppet Ubuntu删除不再需要的包

前端之家收集整理的这篇文章主要介绍了Puppet Ubuntu删除不再需要的包前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
教自己傀儡.

运用
Ubuntu 11.10
Puppet 2.7.1(直接来自apt)

在单个节点上运行一些测试脚本(在http://docs.puppetlabs.com/learning/manifests.html之后).

我制作了一个安装和启动apache2包的清单……一切都很好.

现在我要反过来,我制作一个清除apache2包的清单.这样就完成了,问题是puppet只删除了apache2包,而不是apache2带来的所有包(我认为apache2.2-bin是主要的)…所以apache2服务仍然安装并运行在系统上.

如果我用apt-get做这个,那么我会做一个“apt-get autoremove”但是我怎么能让puppet为我做这个呢?

不幸的是,使用内置资源类型没有好办法,只有两个不太好的选择.

“正确”的方法是为您想要删除的所有包定义包资源:

package { 'apache2.2-common':
    ensure => purged,}
package { 'apache2-utils':
    ensure => purged,}
# etc ...

而’不正确’但更易于管理的方法是设置一个exec资源,以便在删除apache2包时为依赖包运行autoremove:

package { 'apache2':
    ensure => purged,}
exec { 'autoremove':
    command => '/usr/bin/apt-get autoremove --purge -y',# We don't want this running every time the puppet agent runs,# so we'll set it to only run when the apache2 purge actually happens.
    # Note that this would not run on your node that already has the
    # apache2 package removed,since it won't trigger any more changes
    # to the package.
    refreshonly => true,subscribe => Package['apache2'],}

鉴于这两个选项,第二个选项肯定更具吸引力 – 能够尽可能坚持内置类型是很好的,但是当你删除具有大量依赖关系的包时,这是不切实际的.

猜你在找的Ubuntu相关文章