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

Как включить службу с экземпляром systemd с помощью марионетки?

У меня есть такая кукольная служба:

service { "getty@ttyUSB0.service": 
    provider => systemd,
    ensure => running,
    enable => true,
}

Когда я пытаюсь применить эту конфигурацию на своем клиенте, возникает следующая ошибка:

err: /Stage[main provided//Node[puppetclient visible/Service[getty@ttyUSB0.service]] / enable: изменение с false на true не удалось: не удалось включить getty@ttyUSB0.service:

Служба работает нормально, и я могу убедиться, что она запускается при загрузке системы, добавив символическую ссылку на getty.target.wants:

ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyUSB0.service

Конечно, я мог бы пойти дальше и удалить «enable => true» из определения службы и вручную включить символическую ссылку в конфигурацию марионетки, но разве марионетка не должна позаботиться об этом? Я что-то ужасно не так делаю?

Поставщик systemd в Puppet сегодня использует только две команды для службы enable штат:

  • systemctl is-enabled <unit>, проверка кода возврата для текущего состояния включения
  • systemctl enable/disable <unit> изменить это

Команда enable выдает ошибку, когда вы включаете экземпляр службы getty @, который еще не существует:

$ sudo systemctl enable getty@ttyUSB0.service
Failed to issue method call: No such file or directory

Затем это вызывает ошибку, отображаемую в Puppet (хотя stderr, похоже, не отображается).

Мне кажется, что в systemd есть пробел из-за того, что вы не можете включить новые экземпляры шаблона. Уже есть BZ # 752774 в Fedora, но комментарии предполагают, что это может не быть добавлено в ближайшее время.

Возможно, вам лучше подать запрос функции против Puppet, чтобы добавить поддержку специально для включения новых экземпляров. В вашем запросе функции я бы предложил ссылку на Объяснение Леннарта экземпляров единиц для фона.