systemd_service#
Модуль ansible.builtin.systemd_service использует менеджер systemd для управления различными программными компонентами (службами, таймерами и другими), называемыми systemd units, на управляемых узлах.
Настройки запуска отдельных компонентов хранятся в текстовых файлах особого формата (unit files).
Особенности работы#
Особенности использования модуля ansible.builtin.systemd_service:
на целевом узле должна использоваться система, службы в которой управляются с помощью менеджера systemd;
названия служб могут отличаться в зависимости от операционной системы или дистрибутива;
для работы модуля необходимо указать хотя бы один из параметров:
stateилиenabled;при указании нескольких параметров порядок их применения будет следующим:
enabled.masked.started,stopped,restartedилиreloaded.
Параметры#
Модуль принимает следующие параметры:
- daemon_reexec, daemon-reexec#
Выполнение команды
systemctl daemon-reexecперед выполнением других действий, чтобы перезапустить службу systemd, сохранив при этом текущее состояние.Возможные значения:
false– не выполнять команду;true– выполнить команду.
Значение по умолчанию:
false.
- daemon_reload, daemon-reload#
Выполнение команды
systemctl daemon-reloadперед выполнением других действий, чтобы служба systemd прочитала все изменения.Возможные значения:
false– не выполнять команду.true– выполнить команду. При этом значении командаsystemctl daemon-reloadвыполняется даже в том случае, когда модуль ничего не запускает и не останавливает.
Значение по умолчанию:
false.
- enabled#
Запуск соответствующего компонента при загрузке.
Если параметр используется, необходимо указать параметр
name.Возможные значения:
false– не запускать компонент при загрузке;true– запускать компонент при загрузке.
- force#
Переопределение символических ссылок.
Возможные значения:
false– не переопределять ссылки;true– переопределять ссылки.
- masked#
Маскировка компонента. Замаскированный компонент невозможно запустить.
Если параметр используется, необходимо указать параметр
name.Возможные значения:
false– не маскировать компонент;true– замаскировать компонент.
- name, service, unit#
Название компонента, что совпадает с названием файла настройки. Название файла имеет расширение.
Значение этого параметра обязательно для заполнения, если заданы значения хотя бы одного из этих параметров:
enabled;masked;state.
Особенности работы:
принимает название только одного компонента для работы;
если не указано расширение компонента, по умолчанию используется расширение
.service;при использовании в среде chroot всегда необходимо указывать название компонента с расширением, например,
crond.service;не поддерживает использование подстановочных шаблонов (globs), например,
postgres*.service.
- no_block#
Ожидание завершения запрошенной операции.
Возможные значения:
false– ожидать завершения запрошенной операции.true– не ожидать завершения запрошенной операции. Запланированное задание будет выполнено без блокировки Ansible на время ее выполнения.
Значение по умолчанию:
false.
- scope#
Выполнение команды
systemctlв заданной области управления службами.Особенности работы в области
user:Для корректной работы у пользователя, выполняющего команду, должен быть доступен и запущен собственный экземпляр D-Bus.
D-Bus обычно запускается при входе в систему, а не во время выполнения задач Ansible. Из-за этого вы можете получить следующую ошибку:
Пользователь должен иметь доступ, предоставляемый через установку переменной окружения
XDG_RUNTIME_DIR. См. секцию Примеры.
Возможные значения:
system– системная область;user– область текущего пользователя;global– область всех пользователей.
Значение по умолчанию:
system.
- state#
Действие, которое необходимо сделать с компонентом.
Если параметр используется, необходимо указать параметр
name.Возможные значения:
reloaded– перечитать конфигурацию компонента. Если компонент был отключен, он запустится.restarted– перезапуск компонента.started– запуск компонента, если он остановлен.stopped– остановка компонента, если он запущен.
Примечание
startedиstoppedявляются идемпотентными действиями, которые не запускают команды без необходимости.
Возвращаемые значения#
Модуль ansible.builtin.systemd_service возвращает единственное значение status – cловарь с парами ключ-значение, возвращаемыми командой systemctl show.
Условия возвращения: успешное завершение.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль поддерживает режим проверки. |
|
Модуль не поддерживает режим сравнения. |
|
Модуль поддерживает только POSIX-совместимые ОС. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Запуск#
Следующий пример описывает запуск службы httpd.service, если она не запущена:
- name: Make sure a service unit is running
ansible.builtin.systemd_service:
name: httpd
state: started
Остановка#
Следующий пример описывает остановку службы httpd.service, если она запущена:
- name: Stop service httpd, if running
ansible.builtin.systemd_service:
name: httpd
state: stopped
Перезапуск#
В следующем примере сначала выполняется команда systemctl daemon-reload, а потом происходит полный перезапуск службы crond.service, независимо от текущего состояния:
- name: Restart crond
ansible.builtin.systemd_service:
name: crond
state: restarted
daemon_reload: true
Перезагрузка#
В следующем примере служба httpd.service обновит свои действующие настройки без остановки работы:
- name: Reload httpd
ansible.builtin.systemd_service:
name: httpd.service
state: reloaded
Маскировка#
Следующий пример описывает маскировку службы httpd.service:
- name: Masked httpd
ansible.builtin.systemd_service:
name: httpd
masked: true
Включение автозапуска#
Следующий пример описывает запуск службы httpd.service и включение ее автозапуска при загрузке:
- name: Enable httpd
ansible.builtin.systemd_service:
name: httpd
state: started
enabled: true
Установка области управления службами#
Следующий пример описывает запуск службы myservice в области текущего пользователя с установкой переменной окружения XDG_RUNTIME_DIR:
- name: Run a user service when XDG_RUNTIME_DIR is not set on remote login
ansible.builtin.systemd_service:
name: myservice
state: started
scope: user
environment:
XDG_RUNTIME_DIR: "/run/user/{{ myuid }}"