最近使用 Puppet 的过程中,发现用 dpkg 做 Package 的 Provider 时总是会在报告里留下 ensure changed 'purged' to 'present'
这样子的日志,即使这个包已经被安装过了还是如此。
于是我的 Foreman 就被这样的日志强暴了三天。。。
问了下 Eric 酱,好像只能自建 APT 仓库了,Debian 官方的 Wiki 里有好多种建立 APT 仓库的工具。
这里我使用 reprepro,功能足够,设置简单,嗯,就它了。
安装 Reprepro
1 | apt-get install -y reprepro |
配置 Reprepro
首先呢,创建一个文件夹来存放你的仓库咯,我放在 /data/repo/ 这个目录。
1 | mkdir -p /data/repo/conf |
然后需要创建 distributions
这个文件用来标识发行版,我管理的机器主要有三个发行版,以下的内容按自己实际情况修改:
1 | Origin: Aveline Swan |
添加包
在 /data/repo 这个目录执行 reprepro includedeb 发行版 deb包位置
命令添加既可。
设置 Web 服务
这里我直接使用了 nginx,配置文件如下:
1 | server { |
添加 APT 仓库到服务器
在 Puppet Master 上执行 puppet module install puppetlabs/apt
安装 apt 模块。
然后在 site.pp 里添加
1 | include apt |
如果你的仓库里不包含源码的话,记得要把 include_src 这个设置为 false
,不然会报错。