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/контейнеров
|
||||
│ └── standalone.yml # Настройки для автономных серверов
|
||||
├── templates/
|
||||
│ └── config.yaml.j2 # Шаблон конфигурации
|
||||
│ ├── config.yaml.j2 # Шаблон конфигурации
|
||||
│ └── sensusagent.service.j2 # Шаблон systemd сервиса
|
||||
└── 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`
|
||||
|
||||
```yaml
|
||||
@ -126,7 +146,9 @@ collectors_config:
|
||||
timeout: "5s"
|
||||
```
|
||||
|
||||
## Шаблон конфигурации
|
||||
## Шаблоны
|
||||
|
||||
### Шаблон конфигурации
|
||||
|
||||
Файл `templates/config.yaml.j2` автоматически генерирует `config.yaml` на основе переменных групп:
|
||||
|
||||
@ -153,6 +175,28 @@ collectors:
|
||||
{% 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. Добавление нового хоста
|
||||
|
@ -61,25 +61,17 @@
|
||||
fi
|
||||
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
|
||||
ansible.builtin.raw: |
|
||||
cat >/etc/systemd/system/sensusagent.service <<'UNIT'
|
||||
[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
|
||||
cp {{ tmp_dir }}/sensusagent.service /etc/systemd/system/sensusagent.service
|
||||
systemctl daemon-reload
|
||||
|
||||
- name: Enable and start service
|
||||
|
@ -11,3 +11,9 @@ collectors_base_config:
|
||||
uptime:
|
||||
interval: "60s"
|
||||
timeout: "5s"
|
||||
|
||||
# Настройки systemd сервиса
|
||||
service_user: root
|
||||
service_group: root
|
||||
service_restart_sec: 3
|
||||
agent_mode: kafka
|
||||
|
@ -15,3 +15,7 @@ collectors_config:
|
||||
uptime:
|
||||
interval: "60s"
|
||||
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