Add cluster join functionality and Kaspersky agent configuration to PMG. Updated Makefile for cluster bootstrap command, enhanced README with new service details, and modified pillar states for KESL and KLN agent integration. Added verification and management for cluster-only services in Salt states.

This commit is contained in:
Ruslan Piatrovich
2026-06-10 17:06:22 +03:00
parent 7230484b44
commit 7373d5520f
10 changed files with 272 additions and 2 deletions
+35
View File
@@ -55,6 +55,8 @@ make check MINION_ID=p-mailgw-x1-01.lmru.tech
- `pmg.node_exporter.*`
- `pmg.smtp_monitoring.*`
- `pmg.pmg_services`
- `pmg.pmg_cluster_only_services`
- `pmg.cluster_join.*`
- `pmg.update_dist_upgrade`
- `pmg.update_auto_reboot`
- `pmg.update_reboot_delay_minutes`
@@ -62,6 +64,8 @@ make check MINION_ID=p-mailgw-x1-01.lmru.tech
- `pmg.manage_hosts_file`
- `pmg.hosts_file_entries`
- `pmg.wazuh.*`
- `pmg.kesl.*`
- `pmg.klnagent.*`
- `pmg.qualys.*`
`pmg.node_exporter.args` по умолчанию включает textfile collector:
@@ -73,6 +77,27 @@ make check MINION_ID=p-mailgw-x1-01.lmru.tech
- recent window counters (`pmg.smtp_monitoring.log_window_seconds`) по логам postfix:
sent, received, deferred, bounced, rejected, tls failures, smtp connections.
`pmg.cluster_join` делает:
- precheck passwordless SSH с новой ноды на `pmg.cluster_join.master_ip`;
- non-interactive `pmgcm join` при заданном `pmg.cluster_join.password`.
Важно: `pmgcm join` использует пароль PMG (`root@pam` на master) для получения ticket
(это не SSH-пароль). Без `pmg.cluster_join.password` state делает skip-уведомление.
Рекомендуется передавать пароль через переменную окружения (без сохранения в `pillar/pmg.sls`):
```bash
export PMG_CLUSTER_JOIN_PASSWORD='***'
PILLAR_B64="$(python3 -c 'import json, os, base64; print(base64.b64encode(json.dumps({\"pmg\": {\"cluster_join\": {\"password\": os.environ[\"PMG_CLUSTER_JOIN_PASSWORD\"]}}}).encode()).decode())')"
ssh root@p-mailgw-x1-02.lmru.tech "cd /root/mailgw-salt && salt-call --local --id p-mailgw-x1-02.lmru.tech --file-root=. --pillar-root=./pillar state.apply pmg.cluster_join pillar=\"\$(python3 -c \"import base64; print(base64.b64decode(\\\"${PILLAR_B64}\\\").decode())\")\""
```
Для полностью автоматического bootstrap SSH-доверия (без паролей) с управляющей машины:
```bash
make cluster-bootstrap MINION_ID=p-mailgw-x1-02.lmru.tech MASTER_HOST=p-mailgw-x1-01.lmru.tech MASTER_IP=10.80.38.152
```
## Отдельное обновление PMG
Перед обновлением:
@@ -105,3 +130,13 @@ State `pmg.update` выполняет:
(по умолчанию: `/var/spool/pmg`, `/var/lib/clamav`, `/tmp/.proxdump_*`) и делает
`systemctl restart kesl` только при изменении этих настроек;
- если `kesl/klnagent64` установлены — включает сервисы и `custom_check` в PMG, если нет — выводит уведомление "ставится через Kaspersky Administration Center"; сервисы включатся вторым прогоном после установки пакетов.
`pmg.security_agents` дополнительно ставит/настраивает `kesl` и `klnagent64`:
- для `kesl`:
- скачивает `.deb` из `pmg.kesl.package_url`;
- формирует `autoinstall.ini` и запускает `/opt/kaspersky/kesl/bin/kesl-setup.pl --autoinstall=...`;
- поднимает сервис `kesl`;
- скачивает `.deb` из `pmg.klnagent.package_url`;
- формирует файл ответов `KLAUTOANSWERS` (минимум: `KLNAGENT_SERVER`,
`KLNAGENT_AUTOINSTALL`, `EULA_ACCEPTED`);
- устанавливает/переустанавливает пакет в тихом режиме и поднимает сервис `klnagent64`.