在每个Puppet运行之前更新apt,除非没有任何改变,在每次Puppet运行后擦除apt缓存

时间:2014-06-20 18:17:44

标签: puppet apt

我正在使用生活在Docker容器内的Puppet代理,因此使用尽可能少的文件系统空间非常重要。因此,在我的Docker bulid的最后,I was running the following

RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

问题是我的Puppet运行尝试安装一个包,并且因为没有可以从中提取的列表,所以它失败了。一个简单的apt-get update允许一切正常运行。

我在他们的存储库中运行最新的Puppet 3客户端。我如何使用阶段来要求每个Puppet运行包装:

  1. 在此之前,只有在此实例的Puppet目录发生更改时才运行apt-get update。 (即:如果没有任何变化,不做任何事情,不要更新,因为这会浪费周期,带宽,资源等。)
  2. 完成所有操作后,运行apt-get clean清除所有内容,并可能运行上面列出的Docker RUN命令。
  3. 如何使用Puppet执行阶段智能地包装Puppet运行,事先更新apt并在之后擦除缓存?

1 个答案:

答案 0 :(得分:0)

如果您使用puppetlabs-apt模块,请定义:

Class['apt'] -> Package<| |>

否则使用:

exec { 'apt-update':
    command => '/usr/bin/apt update'
}

Exec['apt-update'] -> Package <| |>

这种方式apt update将在某些包丢失的情况下执行。