diff --git a/docs/ansible_groups.md b/docs/ansible_groups.md index ffdd0a9..fda7e86 100644 --- a/docs/ansible_groups.md +++ b/docs/ansible_groups.md @@ -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. Добавление нового хоста diff --git a/runner/deploy-service/playbook.yml b/runner/deploy-service/playbook.yml index 9b4bc66..1c93b76 100644 --- a/runner/deploy-service/playbook.yml +++ b/runner/deploy-service/playbook.yml @@ -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 diff --git a/runner/group_vars/all.yml b/runner/group_vars/all.yml index ffe214d..807b905 100644 --- a/runner/group_vars/all.yml +++ b/runner/group_vars/all.yml @@ -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 diff --git a/runner/group_vars/proxvms.yml b/runner/group_vars/proxvms.yml index 37e3287..adc04e3 100644 --- a/runner/group_vars/proxvms.yml +++ b/runner/group_vars/proxvms.yml @@ -15,3 +15,7 @@ collectors_config: uptime: interval: "60s" timeout: "5s" + +# Настройки systemd сервиса для VM/контейнеров +# Можно переопределить глобальные настройки +agent_mode: kafka # VM/контейнеры могут использовать stdout вместо kafka diff --git a/runner/templates/sensusagent.service.j2 b/runner/templates/sensusagent.service.j2 new file mode 100644 index 0000000..a13b4d3 --- /dev/null +++ b/runner/templates/sensusagent.service.j2 @@ -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