refactor: убран суффикс -raw из названий папок Ansible ролей

- Переименованы папки:
  - delete-raw → delete
  - delete-service-raw → delete-service
  - deploy-raw → deploy
  - deploy-service-raw → deploy-service

- Обновлены пути в Makefile для всех команд:
  - make deploy
  - make delete
  - make deploy-service
  - make delete-service
  - make update-service
  - make update

- Обновлены пути в документации
- Добавлены новые команды make update-service и make update
- Обновлен deploy/playbook.yml для использования шаблонов конфигурации

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
Sergey Antropoff 2025-09-15 14:55:41 +03:00
parent 7316b507ad
commit 330397f331
7 changed files with 52 additions and 12 deletions

View File

@ -2,7 +2,7 @@ SHELL := /bin/sh
PROJECT_NAME := agent
.PHONY: build build-linux build-darwin build-windows run agent test lint docker-clean collectors collectors-darwin collectors-linux collectors-windows
.PHONY: kafka-topic kafka-once kafka-consume
.PHONY: kafka-topic kafka-once kafka-consume update-service update
build:
# Платформозависимая сборка агента (как у collectors)
@ -130,25 +130,25 @@ agent: collectors build
deploy: build-linux collectors-linux
# Деплой на удалённый хост через Ansible raw (без Python на целевой стороне)
docker run --rm -e ANSIBLE_HOST_KEY_CHECKING=False -v $$PWD:/workspace -v $$HOME/.ssh:/root/.ssh:ro -w /workspace cytopia/ansible:latest-tools \
ansible-playbook -i runner/inventory.ini runner/deploy-raw/playbook.yml -e LOCAL_BIN_DIR=/workspace/bin/agent -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
ansible-playbook -i runner/inventory.ini runner/deploy/playbook.yml -e LOCAL_BIN_DIR=/workspace/bin/agent -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
delete:
# Очистка установленного агента (raw, без Python на целевой стороне)
docker run --rm -e ANSIBLE_HOST_KEY_CHECKING=False -v $$PWD:/workspace -v $$HOME/.ssh:/root/.ssh:ro -w /workspace cytopia/ansible:latest-tools \
ansible-playbook -i runner/inventory.ini runner/delete-raw/playbook.yml -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
ansible-playbook -i runner/inventory.ini runner/delete/playbook.yml -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
deploy-service: build-linux collectors-linux
# Деплой и запуск через systemd (raw, без Python на целевой стороне)
docker run --rm -e ANSIBLE_HOST_KEY_CHECKING=False -v $$PWD:/workspace -v $$HOME/.ssh:/root/.ssh:ro -w /workspace cytopia/ansible:latest-tools \
ansible-playbook -i runner/inventory.ini runner/deploy-service-raw/playbook.yml -e LOCAL_BIN_DIR=/workspace/bin/agent -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
ansible-playbook -i runner/inventory.ini runner/deploy-service/playbook.yml -e LOCAL_BIN_DIR=/workspace/bin/agent -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
delete-service:
# Остановка и очистка systemd-варианта без Python на целевой стороне
docker run --rm -e ANSIBLE_HOST_KEY_CHECKING=False -v $$PWD:/workspace -v $$HOME/.ssh:/root/.ssh:ro -w /workspace cytopia/ansible:latest-tools \
ansible-playbook -i runner/inventory.ini runner/delete-service-raw/playbook.yml -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
ansible-playbook -i runner/inventory.ini runner/delete-service/playbook.yml -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
# Очистка установленного агента на удаленном хосте
docker run --rm -e ANSIBLE_HOST_KEY_CHECKING=False -v $$PWD:/workspace -v $$HOME/.ssh:/root/.ssh:ro -w /workspace cytopia/ansible:latest-tools \
ansible-playbook -i runner/inventory.ini runner/delete-raw/playbook.yml -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
ansible-playbook -i runner/inventory.ini runner/delete/playbook.yml -e ansible_ssh_private_key_file=/root/.ssh/id_rsa -e ansible_become=true -e ansible_become_method=sudo
@ -191,3 +191,19 @@ kafka-once:
kafka-consume:
@docker run --rm edenhill/kcat:1.7.1 -b 10.99.0.90:9092 -t sensus.metrics -o -5 -C -q -J | cat
# Обновление сервиса (удаление + развертывание через systemd)
update-service:
# Обновление systemd-сервиса: остановка, удаление, развертывание
@echo "🔄 Обновление systemd-сервиса..."
@$(MAKE) delete-service
@$(MAKE) deploy-service
@echo "✅ Обновление systemd-сервиса завершено"
# Обновление агента (удаление + развертывание без systemd)
update:
# Обновление агента: удаление, развертывание
@echo "🔄 Обновление агента..."
@$(MAKE) delete
@$(MAKE) deploy
@echo "✅ Обновление агента завершено"

View File

@ -220,7 +220,13 @@ collectors_config:
./runner/test-config-generation.sh
# Развернуть на конкретной группе
ansible-playbook -i runner/inventory.ini runner/deploy-service-raw/playbook.yml --limit proxmox
ansible-playbook -i runner/inventory.ini runner/deploy-service/playbook.yml --limit proxmox
# Обновление systemd-сервиса (рекомендуется)
make update-service
# Обновление агента без systemd
make update
```
## Примеры конфигураций

View File

@ -53,4 +53,21 @@ docker compose logs -f agent
docker compose exec agent sh -c 'ls -la /bin/agent/collectors'
```
## Команды обновления
Для обновления агента на удаленных серверах:
```bash
# Обновление systemd-сервиса (рекомендуется)
make update-service
# Обновление агента без systemd
make update
```
Эти команды автоматически выполняют:
1. Остановку и удаление старой версии
2. Развертывание новой версии
3. Запуск обновленного агента

View File

@ -22,12 +22,13 @@
{{ local_bin_dir }}/agent {{ ansible_user }}@{{ ansible_host }}:{{ tmp_upload_dir }}/agent
delegate_to: localhost
- name: Copy config via scp (from controller) to tmp
ansible.builtin.command: >
scp -B -i {{ ansible_ssh_private_key_file | default('~/.ssh/id_rsa') }}
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
{{ local_bin_dir }}/config.yaml {{ ansible_user }}@{{ ansible_host }}:{{ tmp_upload_dir }}/config.yaml
- name: Generate config.yaml from template
ansible.builtin.template:
src: ../templates/config.yaml.j2
dest: "{{ tmp_upload_dir }}/config.yaml"
mode: '0644'
delegate_to: localhost
run_once: true
- name: Copy collectors directory via scp -r (from controller) to tmp
ansible.builtin.command: >