Puppet больше не может управлять сервисами в Ubuntu 18
Я пытался настроить новый сервер через нашего puppet-master. Это должно было быть быстрым делом, все там работает довольно надежно, и все еще на старых серверах.
Только то, что новый сервер является первым, на котором работает Ubuntu 18, и Puppet, похоже, не может запустить службы. Вот пример ошибки, которую я получаю при попытке убедиться, что служба работает:
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, хотя я еще не совсем ясно на что они точно. То, что я хотел бы, - это решение, которое не требует от меня перезаписи всех моих служебных файлов и установки марионеток, которая работает на серверах, на которых все еще установлена старая ОС, а также на серверах, на которых установлена новая. Кто-нибудь может помочь мне достичь этого?
2 ответа
Так что причиной этого является использование слишком старой версии 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.
Если бы я столкнулся с этой проблемой, я бы предпринял следующие шаги:
Я бы взял скрипт init.sh, который по умолчанию находится на вашем сервере infxdb, по пути
/usr/lib/influxdb/scripts/init.sh
и скопировать его в/etc/init.d/influxdb
,Сделайте скрипт исполняемым:
chmod u+x /etc/init.d/influxdb
Реруан Кукольный снова.
Если вы не можете найти этот скрипт инициализации, я загрузил его на pastebin.com, вот ссылка (я взял его с моего сервера, на котором работает версия 1.6.4): https://pastebin.com/fkHRGfZH
Если вы хотите, чтобы служба запускалась во время загрузки, запустите:
update-rc.d influxdb defaults
И он скопирует файл, который вы создали в /etc/init.d/influxdb
для каждого уровня запуска вы указали.