service#

Модуль ansible.builtin.service управляет службами на управляемых узлах.

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

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

  • Поддерживаются различные системы инициализации: BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart.

  • Модуль выступает в роли прокси-сервера (посредника), который перенаправляет выполнение в соответствующий модуль управления службами, например, ansible.builtin.systemd. Это позволяет управлять службами в разнородной среде, не создавая отдельную задачу для каждого типа системы инициализации. Какой модуль будет вызван, определяется параметром use. Если он не указан, Ansible использует модуль ansible.builtin.setup для определения типа системы управления службами. Если модуль ansible.builtin.setup еще не запускался, он будет вызван автоматически.

  • Модуль передает все указанные параметры, однако поскольку разные модули управления службами поддерживают разные параметры, в этом документе описаны только те параметры, которые поддерживаются всеми такими модулями.

  • В системе AIX можно использовать названия групповых подсистем.

  • Утилита командной строки service не является частью какой-либо системы управления службами – это лишь вспомогательный инструмент.

  • Для управления службами на узлах под управлением Windows используйте модуль ansible.windows.win_service.

Параметры#

Модуль принимает следующие параметры:

arguments, args#

Дополнительные аргументы, передаваемые в командную строку при запуске службы.

При использовании узлов с systemd параметр игнорируется.

Значение по умолчанию: "" (пустая строка).

enabled#

Требуется хотя бы один из параметров: state или enabled.

Запуск соответствующей службы при загрузке.

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

  • false – не запускать службу при загрузке;

  • true – запускать службу при загрузке.

name#

Обязательный параметр.

Название службы.

pattern#

Подстрока, которую нужно искать в выводе команды ps, если служба не поддерживает команду status. Если строка найдена, считается, что служба запущена.

При использовании узлов с systemd параметр игнорируется.

runlevel#

Уровень выполнения, с которым будет связана служба.

Параметр используется только в системах с инициализацией OpenRC, например, Gentoo.

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

sleep#

Пауза в секундах между остановкой и запуском службы при state=restarted. Это помогает обойти некорректно работающие сценарии инициализации, которые завершают работу сразу после подачи сигнала о завершении процесса.

При использовании узлов с systemd параметр игнорируется.

state#

Требуется хотя бы один из параметров: state или enabled.

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

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

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

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

  • restarted – перезапуск службы.

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

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

Примечание

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

use#

Модуль управления службами, который необходимо использовать.

По умолчанию модуль ansible.builtin.service автоматически определяет, какую систему инициализации использует целевой узел, и вызывает соответствующий модуль. Это поведение управляется фактом ansible_service_mgr, который собирается с помощью модуля ansible.builtin.setup.

Если по какой-то причине не обнаружена ни одна подходящая система, Ansible использует устаревший модуль ansible.legacy.service, который также пытается определить способ управления службами, но не является эквивалентом команды service.

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

Атрибуты#

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

Атрибут

Описание

action

Модуль имеет соответствующее расширение действия (action plugin), которое выполняет работу на управляющем узле.

async

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

bypass_host_loop

Модуль не выполняется как глобальная задача. Для каждого узла выполняется отдельный цикл с учетом всех ограничений.

check_mode

Поддержка режима проверки зависит от используемого модуля управления службами.

diff_mode

Поддержка режима сравнения зависит от используемого модуля управления службами.

platform

Поддержка системы зависит от наличия подходящего модуля управления службами для конкретной платформы и от того, может ли Ansible определить эту систему с помощью сбора фактов.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Запуск#

Следующий пример демонстрирует запуск службы httpd, если она не запущена:

---
- name: Run service httpd if stopped
  ansible.builtin.service:
    name: httpd
    state: started

Остановка#

Следующий пример демонстрирует остановку службы httpd, если она запущена:

---
- name: Stop service httpd if running
  ansible.builtin.service:
    name: httpd
    state: stopped

Перезапуск#

Следующий пример демонстрирует полный перезапуск службы crond, независимо от текущего состояния:

---
- name: Restart crond
  ansible.builtin.service:
    name: crond
    state: restarted

Перезагрузка#

В следующем примере служба httpd обновит свои действующие настройки без остановки работы:

---
- name: Reload httpd
  ansible.builtin.service:
    name: httpd
    state: reloaded

Включение автозапуска#

Следующий пример демонстрирует запуск службы httpd и включение ее автозапуска при загрузке:

---
- name: Enable httpd
  ansible.builtin.service:
    name: httpd
    state: started
    enabled: true

Проверка статуса службы#

Следующий пример демонстрирует проверку статуса службы cron с помощью параметра pattern:

---
- name: Start cron service, checking process manually
  ansible.builtin.service:
    name: cron
    pattern: /usr/sbin/cron
    state: started

Передача аргумента#

Следующий пример демонстрирует перезапуск службы network с передачей аргумента eth0:

---
- name: Restart network service for interface eth0
  ansible.builtin.service:
    name: network
    state: restarted
    args: eth0