Я пытаюсь настроить некоторые пользовательские службы с помощью Ansible и systemd.
На Ubuntu и RHEL 7 я получаю
# systemctl --user status
Failed to get D-Bus connection: Connection refused
Для Ubuntu я уточнил ошибку, это из-за этого:
https://docs.ansible.com/ansible/latest/modules/systemd_module.html
запустите systemctl в рамках заданной области диспетчера служб, либо в качестве области системы по умолчанию (система), либо в качестве области действия текущего пользователя (пользователя), либо в качестве области всех пользователей (глобально). Для того, чтобы systemd мог работать с «пользователем», у исполняющего пользователя должен быть запущен собственный экземпляр dbus (требование systemd). Пользовательский процесс dbus обычно запускается во время обычного входа в систему, но не во время выполнения задач Ansible. В противном случае вы, вероятно, получите ошибку «Не удалось подключиться к шине: нет такого файла или каталога».
Обычно DBus нужно запускать перед systemd --user
может работать. Я тоже не знаю, как это сделать, но я думаю, что могу обойти это другими способами.
Однако главный блокировщик прямо сейчас: как проверить, в общем, доступность функциональности?
Я попытался systemctl show
и нет явной «пользовательской» функции. Флаг "+ PAM" от Features
линия? Я знаю, что systemd хотя бы частично использует PAM для его реализации, но не знаю, нужен ли он для других функций.
Как я могу проверить, что "мой" systemd поддерживает --user
надежно? Есть файл, который я могу проверить? Команда? Что-то другое? DBus voodoo?