chroot(打包程序)中的 Chef 安装:未启动服务

chroot(打包程序)中的 Chef 安装:未启动服务

我正在尝试使用 packer.io 为服务器创建机器映像,该服务器的部署已使用 Chef 自动化(chef-solo具体来说),使用amazon-chroot构建器和chef-solo配置器(带有一些 shell 配置步骤,用于初始化/清理工作)。

此方法在系统上的某个位置安装 EBS 卷,然后chroot将其放入其中并在那里运行 Chef 配置过程。问题是,一些 Chef 配方会创建并启动服务,而我无法让它们不在 chroot 中启动。我希望它们不启动有两个原因:

  1. 我正在尝试获取更干净的机器镜像
  2. 在构建过程结束时,在 chroot 中运行服务可防止 Packer 卸载 EBS 卷,从而完成该过程

我已经/usr/sbin/policy-rc.d正确创建(如 Packer 文档中所述)并且还执行以下操作以停止initctl工作:

dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

(当然,我在构建过程结束时会恢复此设置)。但是,某些服务(特别是 Chef 安装的postfix服务)在安装后仍能自行启动。

关于我应该采取什么额外措施来阻止服务启动,有什么建议吗?

欢迎提供 Debian / Ubuntu 特定的解决方案。

答案1

Postfix 服务使用 init 脚本,因此我猜测他们直接调用 init 脚本(而不是通过invoke-rc.d)。尝试创建一个名为的文件/lib/lsb/init-functions.d/00-policy-rc.d

if test -e /usr/sbin/policy-rc.d; then
    /usr/sbin/policy-rc.d || exit $?
fi

相关内容