ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как управлять Systemd с помощью Ansible

Начало работы с Ansible

Управление сервисами – одно из основополагающих требований для любого пользователя. С такими инструментами, как Systemd, которые используются во всех основных дистрибутивах Linux, очень важно понимать, как управлять службами.

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

 

Настройка Ansible

Первый шаг – установить и настроить Ansible в вашей системе. В этом примере мы запускаем Ansible в системе Debian 11.

Начните с обновления репозиториев программного обеспечения и установки Ansible:

sudo apt-get update
sudo apt-get install ansible -y

 

После установки мы можем настроить удаленные хосты для управления с помощью узла управления Ansible.

Настроить Ansible Inventory

Откройте терминал и отредактируйте файл инвентаризации, как показано в следующей команде:

sudo vim /etc/ansible/hosts

 

В файле инвентаризации хостов добавьте IP-адреса удаленных хостов, которыми вы хотите управлять с помощью Ansible.

 

Настроить SSH-ключ

Следующим шагом будет создание пары ключей SSH. Это позволяет вам войти на удаленный хост с вашего узла управления Ansible без необходимости вводить пароль.

Начните с генерации ключа SSH с помощью команды:

$ ssh-keygen

 

Следуйте подсказкам команды ssh-keygen, чтобы сгенерировать пару открытого и закрытого ключей.

После завершения используйте команду ssh-copy-id, чтобы скопировать открытый ключ SSH на удаленный хост.

Пример команды такой, как показано:

ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@192.168.100.17

 

Замените имя пользователя и пароль удаленным пользователем и IP-адресом удаленного хоста.

Затем введите пароль для входа на удаленный хост и загрузите пару ключей SSH.

После завершения подключитесь к удаленному хосту по SSH, и вы войдете в систему без запроса пароля.

 

Управление службами с помощью Systemd

Чтобы управлять службами на удаленном хосте с помощью модуля systemd, убедитесь, что служба Systemd и системный менеджер управляют удаленным хостом.

Модуль systemd является частью ядра Ansible и по умолчанию доступен во всех установках Ansible.

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

 

Запуск служб

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

В следующем примере сценария показано, как запустить службу с помощью модуля systemd.

---
- name: Ansible start service
hosts: all
gather_facts: true
tasks:
- name: Start a service with systemd
systemd:
name: apache2
state: started

 

В приведенном выше примере playbook запустит HTTP-сервер Apache2 с помощью systemd.

Убедитесь, что целевая служба установлена ​​и управляется systemd на удаленном хосте, что позволяет избежать ошибок.

Если служба не существует, Ansible выдаст ошибку, как показано на скриншоте ниже:

Как управлять Systemd с помощью Ansible

 

Остановка служб

При остановке служб измените параметр состояния на остановлено, как показано в примере ниже:

---
- name: Ansible stop services
hosts: all
gather_facts: true
tasks:
- name: Stop a service with systemd
systemd:
name: apache2
state: stopped

 

После успешного выполнения целевая служба на удаленном хосте будет остановлена.

 

Перезагрузить услуги

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

Например:

---
- name: Ansible reload a service
hosts: all
gather_facts: true
tasks:
- name: Reload services with systemd
systemd:
name: nginx.service
state: reloaded

 

В приведенном выше примере будет перезагружена служба Nginx, как передано в playbook.

 

Включить службы

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

Модуль Ansible systemd предоставляет вам параметр enabled, который вы можете использовать, чтобы разрешить запуск службы при запуске системы.

Рассмотрим пример сценария, показанный ниже:

---
- name: Ansible enable service
hosts: all
gather_facts: true
tasks:
- name: Enable nginx service
systemd:
name: nginx.service
enabled: true
masked: no

 

Приведенный выше сценарий включает службу Nginx и гарантирует, что она не замаскирована.

 

Управление несколькими службами

Вы также можете использовать параметр with_items для управления несколькими службами. Например, чтобы запускать сразу несколько сервисов, мы можем создать playbook как:

---
- name: Ansible start services
hosts: all
gather_facts: true
tasks:
- name: Start these services
systemd:
name: "{{ item }}"
state: started
with_items:
- apache2
- mysql
- redis-server

 

В приведенном выше примере playbook необходимо перезапустить службы в блоке with_items.

 

Закрытие

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

Exit mobile version