The real container on the validators is named validator-agent (the image is cloud-ip-validator-validator-agent); the playbook used the image name as the container name, so it would have started a second agent next to the old one with the same validator_id. The clone on the validators is owned by root, so git must run as root (git_user), otherwise fetch fails with "cannot open .git/FETCH_HEAD: Permission denied". Preflight now stops when the host has another container of this agent (by name or image) besides container_name. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
51 lines
3.0 KiB
YAML
51 lines
3.0 KiB
YAML
---
|
||
# Параметры доставки validator-agent (не секреты). Любой из них можно
|
||
# переопределить в командной строке: -e deploy_ref=<коммит|тег>.
|
||
# Параметры запуска самого агента (адрес control-api, токен, способы
|
||
# самопроверки, таймауты) лежат в env-файле, см. local_env_file.
|
||
|
||
# SSH: пользователь и ключ одинаковы на jump-хосте и на валидаторах. Путь к
|
||
# ключу — на jump-хосте (ключ с правами 0600). Для docker и записи env-файла
|
||
# сценарий повышает права через sudo (become).
|
||
ansible_user: debian
|
||
ansible_ssh_private_key_file: ~/.ssh/vk_cloud_priv.key
|
||
|
||
# --- git-клон на валидаторе ---------------------------------------------
|
||
repo_dir: /opt/cloud-ip-validator
|
||
repo_remote: origin
|
||
# Ветка, тег или коммит, который нужно выкатить (откат: -e deploy_ref=<коммит>).
|
||
deploy_ref: main
|
||
# Пользователь, от имени которого выполняется git в клоне (через sudo): владелец
|
||
# клона. На валидаторах клон принадлежит root, репозиторий читается без учётных
|
||
# данных. Пусто — git работает от SSH-пользователя без sudo.
|
||
git_user: root
|
||
|
||
# --- образ и контейнер --------------------------------------------------
|
||
image_name: cloud-ip-validator-validator-agent
|
||
# Имя контейнера на валидаторах (имя образа — другое, см. image_name).
|
||
container_name: validator-agent
|
||
platform: linux/amd64
|
||
dockerfile: deploy/docker/validator-agent/Dockerfile
|
||
# Сколько образов с метками ревизий хранить (кроме latest); старые удаляются.
|
||
keep_images: 3
|
||
|
||
# --- запуск контейнера (как в deploy/docker/RUN.txt) --------------------
|
||
restart_policy: unless-stopped
|
||
capabilities: [NET_RAW]
|
||
log_max_size: 10m
|
||
log_max_file: "3"
|
||
stop_timeout: 10
|
||
|
||
# --- проверка после запуска ---------------------------------------------
|
||
verify_retries: 10
|
||
verify_delay: 3
|
||
|
||
# --- env-файл на jump-хосте ---------------------------------------------
|
||
# Параметры запуска агента. Рабочий файл создаётся из validator-agent.env.example
|
||
# и в git не попадает. Файл можно зашифровать: ansible-vault encrypt <файл>
|
||
# (тогда запускайте с --ask-vault-pass или --vault-password-file).
|
||
local_env_file: "{{ playbook_dir }}/../env/validator-agent.env"
|
||
# Куда файл копируется на валидатор (путь закрыт .gitignore репозитория,
|
||
# переживает git reset).
|
||
remote_env_file: "{{ repo_dir }}/deploy/docker/.env.validator"
|