Я пробовал настроить новый сервер через нашего марионеточного мастера. Это должно было быть быстрым делом, все там работало довольно надежно и все еще находится на старых серверах.
Просто новый сервер - первый, на котором запущена Ubuntu 18, и марионетка, похоже, не может запускать службы. Вот пример ошибки, которую я получаю при попытке убедиться, что служба запущена:
Error: /Stage[main]/Influxdb/Service[influxdb]/ensure: change from stopped to running failed: Could not find init script for 'influxdb'
В выводе отладки я вижу следующее:
Executing: '/usr/sbin/service influxdb status'
Service[influxdb](provider=debian): Could not find influxdb in /etc/init.d
Service[influxdb](provider=debian): Could not find influxdb.sh in /etc/init.d
На самом деле в /etc/init.d нет файла, относящегося к службе, но это никогда не требовалось раньше. Если я сбегу sudo /usr/sbin/service influxdb status
с консоли команда работает. Так почему же марионеточный агент не может точно управлять службой?
Обратите внимание, что я не на 100% уверен, что проблема связана с ubuntu 18. Это единственное существенное, о чем я могу думать, что изменилось, и, по-видимому, были некоторые изменения с systemd в Ubuntu 18, хотя я еще не совсем понял о том, какие они есть. Я хотел бы получить решение, которое не требует от меня переписывать все мои служебные файлы и иметь марионеточную настройку, которая работает на серверах, на которых все еще работает старая ОС, а также на серверах с новой. Может ли кто-нибудь помочь мне в этом?
Если бы я столкнулся с этой проблемой, я бы предпринял следующие шаги:
Я бы взял сценарий infxdb init.sh, который по умолчанию можно найти на вашем сервере Infxdb в пути /usr/lib/influxdb/scripts/init.sh
и скопируйте его в /etc/init.d/influxdb
.
Сделайте скрипт исполняемым: chmod u+x /etc/init.d/influxdb
Снова запустите Puppet.
Если вы не можете найти этот сценарий инициализации, то я загрузил его на pastebin.com, вот ссылка (я взял ее с моего сервера, на котором работает версия 1.6.4): https://pastebin.com/fkHRGfZH
Если вы хотите, чтобы служба запускалась во время загрузки, запустите:
update-rc.d influxdb defaults
И он скопирует файл, который вы создали в /etc/init.d/influxdb
для каждого указанного вами уровня запуска.
Таким образом, причиной этого является использование слишком старой версии Puppet на более новой ОС. Puppet 4.10.12 (который использует OP) не знает об Ubuntu 18.04 и о том, что он использует systemd в качестве выбранной системы инициализации. Эвристика в этой версии Puppet в основном знает, что systemd используется в версиях Ubuntu с 15.04 по 17.10 включительно. В версии Puppet 5.3.6, в которой официально добавлена поддержка Ubuntu 18.04, эта версия добавлена в список известных версий, использующих systemd. В более поздних версиях Puppet логика изменилась так, что systemd используется во всех версиях Ubuntu. Кроме версии с 10.04 по 14.10, которые должны упростить задачу, когда выйдет следующий выпуск Ubuntu.