Skip to content

Post Deployment Verification

michel-heon edited this page Mar 12, 2026 · 10 revisions

Post-Deployment Verification

🇫🇷 Cette page est également disponible en français : fr_Post-Deployment-Verification

After deployment, verify that all VIVO services are running correctly.


Automated Diagnostic

A companion tool runs all post-deployment checks in a single command from your workstation — no manual SSH sessions required.

Prerequisites: Git, make, SSH access to the VM, and your .pem key.

git clone git@github.com:Cotechnoe/vivo-azure-marketplace-docs.git
cd vivo-azure-marketplace-docs
make diag IP=<vm-public-ip>

If your SSH user or key path differ from the defaults:

make diag IP=<vm-public-ip> SSH_USER=azureuser SSH_KEY=~/.ssh/your-key.pem

The script runs 12 checks and prints a colour-coded summary:

# Check What it verifies
1 cloud-init Provisioning completed successfully
2 First-boot /etc/vivo/.first-boot-done present (or log confirms completion)
3 Install config /etc/vivo/install.conf loaded with correct values
4 Systemd services nginx / tomcat / solr are active and enabled
5 Disk usage /data (or root) usage below warning threshold
6 HTTP/HTTPS Port 80 redirects (301) and port 443 returns 200
7 TLS certificate Certificate expiry from the running nginx
8 UFW firewall Ports 8983 (Solr) and 8080 (Tomcat) are explicitly DENY
9 Solr ping vivocore core responds OK (tested from inside the VM)
10 SPARQL endpoint /api/sparqlQuery responds (200 or 403 — both acceptable)
11 Tomcat heap JVM -Xms/-Xmx settings are configured
12 Error scan No ERROR/Exception lines in first-boot and Tomcat logs

Exit codes: 0 = all passed · 1 = one or more FAIL · 2 = SSH connection error

Typical healthy output:

════════════════════════════════════════════════════════
  OK  : 16   FAIL: 0   WARN: 2
════════════════════════════════════════════════════════

Expected WARNs:

  • First-boot marker absent — downgraded to WARN when the log confirms the boot completed. The marker file is created by the first-boot script; if absent it is not critical.
  • /data not found — normal on VMs without a separate data disk. The root filesystem usage is reported as a fallback.

Assign a DNS Name

VMs deployed through the Azure Marketplace receive a DNS name automatically. If you created the VM via the Portal wizard or a test script, the DNS name may be absent.

Assign a DNS label in one command (requires az CLI logged in with the appropriate subscription):

make set-dns IP=<vm-public-ip>

To specify a custom label instead of the default vivo-<ip-dashes> pattern:

make set-dns IP=<vm-public-ip> DNS=my-vivo-instance

The command prints the resulting FQDN, e.g. my-vivo-instance.canadacentral.cloudapp.azure.com.


Check cloud-init status

SSH into the VM and run:

sudo cloud-init status --long

Expected output when successful:

status: done

If status is running, first-boot is still in progress — wait a few minutes and retry.


Check services

systemctl is-active tomcat solr nginx

All three should return active.


Check VIVO responds

curl -sk -o /dev/null -w "%{http_code}" http://localhost:8080/

Expected: 200


Access VIVO in a browser

Navigate to https://<public-ip>/

The VM automatically provisions a trusted Let's Encrypt certificate during first boot (~2–5 min). If you connect immediately after deployment, you may briefly see a browser security warning for the self-signed fallback cert. Wait a few minutes and reload, or see HTTPS-TLS-Certificate for details.


Default credentials

Field Default value
Login (email) value of vivoAdminEmail parameter
Password value of vivoAdminPassword parameter

Log in at https://<public-ip>/ and change the admin password on first login.


View the VM initialization log

For detailed information about what happened during deployment:

sudo tail -100 /var/log/vivo-first-boot.log

Clone this wiki locally