Quickstart

This walks from a cold CentOS 7 image to a migration plan for Rocky 9.

1. Look inside the image

No account or mounting required — this reads magic bytes:

vrtmv assess centos7.vmdk

2. Extract the inventory

vrtmv inventory --image centos7.vmdk
# add --resolve to map packages to canonicals via the API
vrtmv inventory --image centos7.vmdk --resolve

3. Classify the configuration (local, no account)

vrtmv drift --image centos7.vmdk

drift separates /etc into what to carry (real workload config), what to hold back as a caveat (host identity, accounts, SSH keys), what is vendor-default, and what to skip (secrets, generated noise).

4. See feasibility before committing

vrtmv migrate --image centos7.vmdk --target rocky9 --preflight

--preflight reports counts and blocking steps, writes no files, and consumes no usage credit.

5. Produce the migration plan

vrtmv migrate --image centos7.vmdk --target rocky9 -o out/

This writes:

  • out/roles/vrtmv_migration/tasks/main.yml — the Ansible role that rebuilds the workload on Rocky 9;
  • out/vrtmv-attestation.json — the signed, host-specific parity report.

6. Tag it (optional)

Record the migration under an engagement so it becomes a tracked, auditable record:

vrtmv migrate --image centos7.vmdk --target rocky9 -o out/ \
  --engagement acme-2026 --vm-id web01 --migration-type initial

See Tagging VM migrations.