5.9 KiB
Логирование операций
- env:
изменение Release_Version
- две переменные: HOST_NAME=devhanapp \ prodhanapp.ihan.ru. TELEMETRYGEN_IMAGE=ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen@sha256:9461e2c7213219467e5f775ea8652d15c990afb4d1ca94e62344f2025a7587d1
- Обновить образы:
API_BACKEND_IMAGE=cr.selcloud.ru/han-images/han-api-backend@sha256:5ec8336ce56de41880398f68a2174530ba4dde9cd8ae6151c42f1631ab29bc35 SMS_SERVICE_IMAGE=cr.selcloud.ru/han-images/sms-service@sha256:404685c45b7391a78f95c014ce8fdff64a84ccd7ae5b280e7a65b524c109d898 BITRIX_LOCAL_APP_IMAGE=cr.selcloud.ru/han-images/bitrix-local-app@sha256:442889dc20e76f2a16d093adb4ae3ae38508535bafda82654755d1da50693183 NGINX_IMAGE=cr.selcloud.ru/han-images/nginx@sha256:2cd7d32967b400c15bb6aaa18e97e99d429b2b6f2bfd54b965fc7d42a91a228e
- Скопировать проект:
$Release = "1.0.1"
tar --exclude=backend/.env `
--exclude='backend/**/__pycache__' `
--exclude='backend/**/.pytest_cache' `
--exclude='backend/**/.ruff_cache' `
-czf "vm1-backend-$Release.tar.gz" `
-C C:/Users/MI/Documents/Assistent/HAN_chat_specification/VM1_app/codebase backend
Get-FileHash "vm1-backend-$Release.tar.gz" -Algorithm SHA256
scp "vm1-backend-$Release.tar.gz" devVM1Deploy:/var/lib/han-deploy/incoming/
RELEASE='1.0.1'
EXPECTED_SHA256='900C7AF2AEC061CFA112F82F8511A8A21F43EDB356EA3EF8C3205F49B6F1DF8F'
ARCHIVE="/var/lib/han-deploy/incoming/vm1-backend-${RELEASE}.tar.gz"
printf '%s %s/n' "$EXPECTED_SHA256" "$ARCHIVE" | sha256sum --check -
tar -tvzf "$ARCHIVE"
if tar -tzf "ARCHIVE" | grep -Eq '(^/|(^|/)\.\.(/|)|^backend/.env$)'; then
echo 'unsafe path or .env' >&2; exit 1
fi
if tar -tzf "ARCHIVE" | grep -Ev '^backend(/|)' | grep -q .; then
echo 'archive has files outside backend' >&2; exit 1
fi
if tar -tvzf "$ARCHIVE" | awk '$1 ~ /^[lh]/ {found=1} END {exit !found}'; then
echo 'symlink/hardlink is forbidden' >&2; exit 1
fi
TARGET="/opt/han-chat/releases/${RELEASE}"
test ! -e "$TARGET"
install -d -m 0755 -o root -g root "$TARGET"
tar --extract --gzip --file "$ARCHIVE" --directory "$TARGET"
--no-same-owner --no-same-permissions
test -f "$TARGET/backend/docker-compose.yml"
chmod 0755
"$TARGET/backend/deployment/scripts/setup-vm.sh"
"$TARGET/backend/deployment/preflight.sh"
"$TARGET/backend/deployment/scripts/tls-deploy-hook.sh"
"$TARGET/backend/deployment/secrets/han-compose"
"$TARGET/backend/deployment/secrets/han-secrets"
test -x "$TARGET/backend/deployment/scripts/setup-vm.sh"
test -x "$TARGET/backend/deployment/preflight.sh"
test -x "$TARGET/backend/deployment/scripts/tls-deploy-hook.sh"
test -x "$TARGET/backend/deployment/secrets/han-compose"
test -x "$TARGET/backend/deployment/secrets/han-secrets"
if find "$TARGET/backend" -type l -print -quit | grep -q .; then exit 1; fi
chown -R root:root "$TARGET"
chmod -R go-w "$TARGET"
ln -s "releases/${RELEASE}" /opt/han-chat/.current-new
mv -Tf /opt/han-chat/.current-new /opt/han-chat/current
cd /opt/han-chat/current/backend/
sudo apt update
sudo apt install -y dos2unix
find . -type f (
-name '.sh' -o -name '.py' -o -name '.service' -o -name '.sudoers' -o -name 'han-compose' -o -name 'han-secrets' -o -name 'han-message-safety-mode' -o -name '.yml' -o -name '.conf*' -o -name 'preflight.sh' -o -name '.yaml' -o -name '.md' -o -name '.toml' -o -name 'Dockerfile' -o -name '.acl*' -o -name '.tsx' -o -name '.ts' -o -name '.java' -o -name '.js' -o -name '.ps1' -o -name '.xml' -o -name '.dockerignore' -o -name '.env*' -o -name '.css' -o -name '.ftl' -o -name '.TAG' -o -name 'validate-env' -o -name '.properties' -o -name '*org.keycloak.Factory' -o -name '.html'
) -exec dos2unix {} +
find -type f -exec file {} ; | grep -i 'CRLF'
sudo apt remove -y dos2unix sudo apt purge -y dos2unix
/usr/local/sbin/han-vm1-compose --profile ops run --rm migrate-api alembic current /usr/local/sbin/han-vm1-compose --profile ops run --rm migrate-bitrix-local alembic current
/usr/local/sbin/han-vm1-compose --profile ops run --rm migrate-api /usr/local/sbin/han-vm1-compose --profile ops run --rm migrate-bitrix-local
Проверка применения миграции /usr/local/sbin/han-vm1-compose --profile ops run --rm migrate-bitrix-local alembic current /usr/local/sbin/han-vm1-compose --profile ops run --rm migrate-bitrix-local alembic heads
scp C:/Users/MI/.ssh/devDeploy.pub
C:/Users/MI/.ssh/devAdmin.pub `
devVM1Deploy:/var/lib/han-deploy/incoming/
install -m 0600 -o root -g root /var/lib/han-deploy/incoming/devDeploy.pub /root/bootstrap/deploy.pub install -m 0600 -o root -g root /var/lib/han-deploy/incoming/devAdmin.pub /root/bootstrap/admin.pub
rm -f /var/lib/han-deploy/incoming/devDeploy.pub /var/lib/han-deploy/incoming/devAdmin.pub
cd /opt/han-chat/current/backend
export OTEL_HOST_COLLECTOR_VERSION='0.117.0'
export OTEL_HOST_COLLECTOR_SHA256='90710c909a30fc3b89dd0e389c13f9e57ebbb87d6a0dc51fdde0bf03499a5f25'
DEPLOY_AUTHORIZED_KEY_FILE=/root/bootstrap/deploy.pub
ADMIN_AUTHORIZED_KEY_FILE=/root/bootstrap/admin.pub
HARDEN_SSH=true SKIP_APT_UPGRADE=true
/opt/han-chat/current/backend/deployment/scripts/setup-vm.sh
/usr/local/bin/otelcol-contrib validate
--config=/opt/han-chat/current/backend/deployment/observability/otel-host-collector.yaml
chmod 0755 /opt/han-chat/current/backend/scripts/validate-env /opt/han-chat/current/backend/deployment/preflight.sh
systemctl restart han-stack@production.service если ошибка systemctl status han-stack@production.service docker pull cr.selcloud.ru/han-images/nginx@sha256:2cd7d32967b400c15bb6aaa18e97e99d429b2b6f2bfd54b965fc7d42a91a228e docker pull cr.selcloud.ru/han-images/sms-service@sha256:404685c45b7391a78f95c014ce8fdff64a84ccd7ae5b280e7a65b524c109d898
systemctl start han-host-otel-collector@production.service
Canary test: CONFIG_FILE=/etc/han/vm1.env ./deployment/scripts/verify-observability.sh
rm -f /root/bootstrap/deploy.pub /root/bootstrap/admin.pub