systemd_service#

Модуль ansible.builtin.systemd_service использует менеджер systemd для управления различными программными компонентами (службами, таймерами и другими), называемыми systemd units, на управляемых узлах. Настройки запуска отдельных компонентов хранятся в текстовых файлах особого формата (unit files).

Особенности работы#

Особенности использования модуля ansible.builtin.systemd_service:

  • на целевом узле должна использоваться система, службы в которой управляются с помощью менеджера systemd;

  • названия служб могут отличаться в зависимости от операционной системы или дистрибутива;

  • для работы модуля необходимо указать хотя бы один из параметров: state или enabled;

  • при указании нескольких параметров порядок их применения будет следующим:

    1. enabled.

    2. masked.

    3. 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. Из-за этого вы можете получить следующую ошибку:

    Failed to connect to bus: no such file or directory.
    
  • Пользователь должен иметь доступ, предоставляемый через установку переменной окружения XDG_RUNTIME_DIR. См. секцию Примеры.

Возможные значения:

  • system – системная область;

  • user – область текущего пользователя;

  • global – область всех пользователей.

Значение по умолчанию: system.

state#

Действие, которое необходимо сделать с компонентом.

Если параметр используется, необходимо указать параметр name.

Возможные значения:

  • reloaded – перечитать конфигурацию компонента. Если компонент был отключен, он запустится.

  • restarted – перезапуск компонента.

  • started – запуск компонента, если он остановлен.

  • stopped – остановка компонента, если он запущен.

Примечание

started и stopped являются идемпотентными действиями, которые не запускают команды без необходимости.

Возвращаемые значения#

Модуль ansible.builtin.systemd_service возвращает единственное значение status – cловарь с парами ключ-значение, возвращаемыми командой systemctl show.

Условия возвращения: успешное завершение.

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

check_mode

Модуль поддерживает режим проверки.

diff_mode

Модуль не поддерживает режим сравнения.

platform

Модуль поддерживает только 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 }}"