Загрузка данных


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