У меня есть такая кукольная служба:
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, чтобы добавить поддержку специально для включения новых экземпляров. В вашем запросе функции я бы предложил ссылку на Объяснение Леннарта экземпляров единиц для фона.