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.

Если бы я столкнулся с этой проблемой, я бы предпринял следующие шаги:

  1. Я бы взял скрипт init.sh, который по умолчанию находится на вашем сервере infxdb, по пути /usr/lib/influxdb/scripts/init.sh и скопировать его в /etc/init.d/influxdb,

  2. Сделайте скрипт исполняемым:chmod u+x /etc/init.d/influxdb

  3. Реруан Кукольный снова.

Если вы не можете найти этот скрипт инициализации, я загрузил его на pastebin.com, вот ссылка (я взял его с моего сервера, на котором работает версия 1.6.4): https://pastebin.com/fkHRGfZH

Если вы хотите, чтобы служба запускалась во время загрузки, запустите:

update-rc.d influxdb defaults

И он скопирует файл, который вы создали в /etc/init.d/influxdb для каждого уровня запуска вы указали.

Другие вопросы по тегам