feat: добавлен шаблон для systemd сервиса
- Создан шаблон runner/templates/sensusagent.service.j2 для гибкой настройки systemd сервиса - Обновлен runner/deploy-service/playbook.yml для использования шаблона вместо хардкода - Добавлены переменные для настройки systemd сервиса в group_vars/all.yml: - service_user, service_group, service_restart_sec, agent_mode - Добавлена возможность переопределения agent_mode для группы proxvms (stdout вместо kafka) - Обновлена документация docs/ansible_groups.md: - Добавлен раздел о настройках systemd сервиса - Добавлен раздел о шаблоне systemd сервиса - Обновлена структура проекта Теперь systemd сервис настраивается через Jinja2 шаблоны с возможностью переопределения параметров для разных групп хостов. Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
parent
d1da51d875
commit
89512f66bc
@ -17,7 +17,8 @@ runner/
|
|||||||
│ ├── proxvms.yml # Настройки для VM/контейнеров
|
│ ├── proxvms.yml # Настройки для VM/контейнеров
|
||||||
│ └── standalone.yml # Настройки для автономных серверов
|
│ └── standalone.yml # Настройки для автономных серверов
|
||||||
├── templates/
|
├── templates/
|
||||||
│ └── config.yaml.j2 # Шаблон конфигурации
|
│ ├── config.yaml.j2 # Шаблон конфигурации
|
||||||
|
│ └── sensusagent.service.j2 # Шаблон systemd сервиса
|
||||||
└── inventory.ini # Группы хостов
|
└── inventory.ini # Группы хостов
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -56,6 +57,25 @@ server1 ansible_host=1.2.3.4 ansible_user=root
|
|||||||
|
|
||||||
## Конфигурация групп
|
## Конфигурация групп
|
||||||
|
|
||||||
|
### Настройки systemd сервиса
|
||||||
|
|
||||||
|
В файле `group_vars/all.yml` можно настроить глобальные параметры systemd сервиса:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Настройки systemd сервиса
|
||||||
|
service_user: root
|
||||||
|
service_group: root
|
||||||
|
service_restart_sec: 3
|
||||||
|
agent_mode: kafka
|
||||||
|
```
|
||||||
|
|
||||||
|
Для разных групп можно переопределить эти настройки:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# group_vars/proxvms.yml
|
||||||
|
agent_mode: stdout # VM/контейнеры могут использовать stdout вместо kafka
|
||||||
|
```
|
||||||
|
|
||||||
### Файл `group_vars/proxmox.yml`
|
### Файл `group_vars/proxmox.yml`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@ -126,7 +146,9 @@ collectors_config:
|
|||||||
timeout: "5s"
|
timeout: "5s"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Шаблон конфигурации
|
## Шаблоны
|
||||||
|
|
||||||
|
### Шаблон конфигурации
|
||||||
|
|
||||||
Файл `templates/config.yaml.j2` автоматически генерирует `config.yaml` на основе переменных групп:
|
Файл `templates/config.yaml.j2` автоматически генерирует `config.yaml` на основе переменных групп:
|
||||||
|
|
||||||
@ -153,6 +175,28 @@ collectors:
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Шаблон systemd сервиса
|
||||||
|
|
||||||
|
Файл `templates/sensusagent.service.j2` автоматически генерирует systemd unit на основе переменных групп:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=SensusAgent metrics collector
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
Environment=CONFIG_PATH={{ remote_dir }}/config.yaml
|
||||||
|
ExecStart={{ remote_dir }}/agent --mode {{ agent_mode | default('kafka') }}
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec={{ service_restart_sec | default(3) }}
|
||||||
|
User={{ service_user | default('root') }}
|
||||||
|
Group={{ service_group | default('root') }}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
## Использование
|
## Использование
|
||||||
|
|
||||||
### 1. Добавление нового хоста
|
### 1. Добавление нового хоста
|
||||||
|
@ -61,25 +61,17 @@
|
|||||||
fi
|
fi
|
||||||
ignore_errors: yes
|
ignore_errors: yes
|
||||||
|
|
||||||
|
- name: Generate systemd unit from template
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: ../templates/sensusagent.service.j2
|
||||||
|
dest: "{{ tmp_dir }}/sensusagent.service"
|
||||||
|
mode: '0644'
|
||||||
|
delegate_to: localhost
|
||||||
|
run_once: true
|
||||||
|
|
||||||
- name: Install/refresh systemd unit
|
- name: Install/refresh systemd unit
|
||||||
ansible.builtin.raw: |
|
ansible.builtin.raw: |
|
||||||
cat >/etc/systemd/system/sensusagent.service <<'UNIT'
|
cp {{ tmp_dir }}/sensusagent.service /etc/systemd/system/sensusagent.service
|
||||||
[Unit]
|
|
||||||
Description=SensusAgent metrics collector
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
Environment=CONFIG_PATH={{ remote_dir }}/config.yaml
|
|
||||||
ExecStart={{ remote_dir }}/agent --mode kafka
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=3
|
|
||||||
User=root
|
|
||||||
Group=root
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
UNIT
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|
||||||
- name: Enable and start service
|
- name: Enable and start service
|
||||||
|
@ -11,3 +11,9 @@ collectors_base_config:
|
|||||||
uptime:
|
uptime:
|
||||||
interval: "60s"
|
interval: "60s"
|
||||||
timeout: "5s"
|
timeout: "5s"
|
||||||
|
|
||||||
|
# Настройки systemd сервиса
|
||||||
|
service_user: root
|
||||||
|
service_group: root
|
||||||
|
service_restart_sec: 3
|
||||||
|
agent_mode: kafka
|
||||||
|
@ -15,3 +15,7 @@ collectors_config:
|
|||||||
uptime:
|
uptime:
|
||||||
interval: "60s"
|
interval: "60s"
|
||||||
timeout: "5s"
|
timeout: "5s"
|
||||||
|
|
||||||
|
# Настройки systemd сервиса для VM/контейнеров
|
||||||
|
# Можно переопределить глобальные настройки
|
||||||
|
agent_mode: kafka # VM/контейнеры могут использовать stdout вместо kafka
|
||||||
|
15
runner/templates/sensusagent.service.j2
Normal file
15
runner/templates/sensusagent.service.j2
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=SensusAgent metrics collector
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
Environment=CONFIG_PATH={{ remote_dir }}/config.yaml
|
||||||
|
ExecStart={{ remote_dir }}/agent --mode {{ agent_mode | default('kafka') }}
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec={{ service_restart_sec | default(3) }}
|
||||||
|
User={{ service_user | default('root') }}
|
||||||
|
Group={{ service_group | default('root') }}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
x
Reference in New Issue
Block a user