Назад | Перейти на главную страницу

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

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

Этот метод монтирует том 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.

Служба 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