Chef
在 chroot(打包程序)中安裝 Chef:未啟動服務
我正在嘗試使用 packer.io 為我已經使用 Chef (
chef-solo
特別是)自動部署的伺服器創建機器映像,使用amazon-chroot
建構器和chef-solo
配置器(圍繞它的一些 shell 配置步驟用於初始化 / 清理的東西)。此方法在系統的某個位置安裝一個 EBS 卷,然後
chroot
進入其中並在那裡執行 Chef 配置過程。問題是,一些 Chef 食譜創建並啟動服務,我無法讓它們不在 chroot 中啟動。我希望他們不要開始,原因有兩個:
- 我正在嘗試獲得更清潔的機器圖像
- 在建構過程結束時,在 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