Chef

在 chroot(打包程序)中安裝 Chef:未啟動服務

  • January 9, 2015

我正在嘗試使用 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 特定的解決方案。

後綴服務使用一個初始化腳本,所以我猜他們是直接呼叫初始化腳本(而不是通過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

引用自:https://serverfault.com/questions/641086