Установка Chef в chroot (упаковщик): не запускающиеся сервисы

Я пытаюсь использовать packer.io для создания образа машины для сервера, развертывание которого я уже автоматизировал с помощью Chef (chef-solo в частности), используя amazon-chroot строитель и chef-solo инициатора (с несколькими шагами, обеспечивающими оболочку, обернутыми вокруг него для инициализации / очистки).

Этот метод монтирует том EBS где-то в системе, а затем chroots в него и запускает процесс подготовки 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 использует скрипт инициализации, поэтому я предполагаю, что они вызывают скрипт инициализации напрямую (а не через 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
Другие вопросы по тегам