Как включить инстанцированный сервис systemd с помощью puppet?

9

У меня есть следующий кукольный сервис:

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

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

err: /Stage[main]//Node[puppetclient]/Service[getty@ttyUSB0.service]/enable: сбой при изменении с ложного на истинное: не удалось включить getty@ttyUSB0.service:

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

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

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

Клейтон Лоуден
источник

Ответы:

6

Поставщик 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 есть пробел в том, что вы не можете включить новые экземпляры шаблона. В Fedora уже есть BZ # 752774 , но комментарии показывают, что он может быть добавлен не в ближайшее время.

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

Доминик Клил
источник