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