1. Проверка зависимостей — выполнить первым, результат нужен до рестарта:
which sshpass # нужен для входа по паролю
/opt/terraform-web/venv/bin/python -c "import yaml, sse_starlette; print('deps ok')"
2. Постоянный чекаут vm-maker (сейчас его нет — это новая сущность):
sudo -u tf-runner GIT_SSH_COMMAND="ssh -i /home/tf-runner/.ssh/id_rsa_tfweb -o UserKnownHostsFile=/home/tf-runner/.ssh/known_hosts" \
git clone git@gitlab.amur-cit.ru:terraform/vm-maker.git /opt/terraform-web/ansible-root
sudo chmod 600 /opt/terraform-web/ansible-root/modules/cit_vm/files/ansible/ssh_keys/id_rsa
sudo chown -R tf-runner:tf-runner /opt/terraform-web/ansible-custom
sudo mkdir -p /opt/terraform-web/backend/logs/ansible
sudo chown tf-runner:tf-runner /opt/terraform-web/backend/logs/ansible
3. Переменные в /etc/terraform-web.env (все со значениями по умолчанию — задавать только при других путях):
ANSIBLE_ROOT=/opt/terraform-web/ansible-root
ANSIBLE_CUSTOM=/opt/terraform-web/ansible-custom
ANSIBLE_LOG_DIR=/opt/terraform-web/backend/logs/ansible
ANSIBLE_REPO_URL=git@gitlab.amur-cit.ru:terraform/vm-maker.git
GIT_SSH_KEY=/home/tf-runner/.ssh/id_rsa_tfweb
ANSIBLE_RUN_TIMEOUT=3600
ANSIBLE_LOG_RETENTION_DAYS=30
4. Миграция — только безопасным конвейером, не alembic upgrade head по проду:
TS=$(date +%F_%H%M)
pg_dump -U tfweb_user -h localhost -Fc terraform_web > /opt/terraform-web/backend/backups/pre_mig_$TS.dump
cd /opt/terraform-web/backend
/opt/terraform-web/venv/bin/alembic current # запомнить <cur>
/opt/terraform-web/venv/bin/alembic upgrade <cur>:head --sql > /tmp/mig_$TS.sql
Пришлите mig_$TS.sql — проверю перед применением (ожидается один CREATE TABLE ansible_runs, шесть CREATE INDEX и UPDATE alembic_version). Дальше тест на копии и psql --single-transaction по рунбуку.
5. Рестарт и проверка:
sudo systemctl restart terraform-web terraform-admin
sudo systemctl status terraform-web terraform-admin
Затем открыть вкладку «Инструменты» → под-вкладка «Окружение»: там семь строк готовности (ansible-playbook, sshpass, чекаут, custom-дерево, collections, SSH-ключ, tools_linux.yaml) — все должны быть с ✅.
6. Cron (от tf-runner) — git pull чекаута + очистка старше 30 дней:
0 4 * * * /opt/terraform-web/venv/bin/python /opt/terraform-web/backend/ansible_maintenance.py >> /opt/terraform-web/backend/logs/ansible_maintenance.log 2>&1