Установка Chef в chroot (упаковщик): не запускающиеся сервисы
Я пытаюсь использовать packer.io для создания образа машины для сервера, развертывание которого я уже автоматизировал с помощью Chef (chef-solo
в частности), используя amazon-chroot
строитель и chef-solo
инициатора (с несколькими шагами, обеспечивающими оболочку, обернутыми вокруг него для инициализации / очистки).
Этот метод монтирует том EBS где-то в системе, а затем chroot
s в него и запускает процесс подготовки 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 приветствуются.
1 ответ
Служба postfix использует скрипт инициализации, поэтому я предполагаю, что они вызывают скрипт инициализации напрямую (а не через 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