I’m a fairly seasoned computer guy but this is my first time deploying Hashicorp products, although I’ve admired them from afar
I would like a few minutes of your time to review my architecture rollout plan and poke holes in it or give me advice on the Hashicorp pieces, with Vault being the first.
Scenario
New everything, switches, servers, etc. and the requirement to automatically bootstrap everything as much as possible. This will start with a single server running Debian Trixie and plugged into the network - I’ll call this the control station. This station will run a combination of Ansible, Vault, Packer, Terraform, and Ubuntu Mass to deploy a Proxmox cluster. I’ll give more detail about the plan a little later but start with the summary questions in case you don’t want to read a lot.
Before a single machine is deployed, a lot of sensitive information needs to be generated and stored so I plan to spin up a single instances of Vault on the control station, and have Ansible and the various tools store info there. Also will use Vault to create PKI certs and be the root and intermediate CA. After the cluster is created (three nodes), I’m hoping to spin up three Vault VMs and migrate the Vault data off of the control node into the master Vault cluster.
Q1 - To get the Vault data into the master cluster and off of the control station, would it be easiest just to spin up the Proxmox VM Vault nodes one at a time, have them join the control station’s Vault in a cluster, and after all three Vault VMs are running I can kill off the Vault instance running on the control station? Does this make sense or is there a better way to do it? Note that the control station is going away eventually after the cluster is bootstrapped.
Q2 - The cluster will have three Proxmox hosts. On each host will be a VM (I’ll call them infracore VMs) that runs Vault, Consul, and Nomad. Also on each host will be a VM that hosts the apps (I’ll call them appvms) that are deployed via Nomad. I’ve read varied recommendations on which of the three Hashicorp products to deploy first. If I was just reasoning about it without knowing much detail about the products, I would assume I would deploy Nomad first on the infracore VMs and then deploy Vault and Consul with Nomad since Nomad is the deploy control plane. However, since so much will depend on Vault I’m thinking I might want to reduce the variables and NOT deploy it on Nomad. Given that thinking (or you can argue against my thinking of course), assuming I’m deploying Vault directly in the OS, does it matter which I deploy next, Consul or Nomad? Would it be fine to deploy Consul via Nomad? All of this is the biggest conundrum in my head hehe.
Rollout Plan
If you’re interested, here is a summary draft of the rollout plan:
- Ansible spins up Vault on control station (ansible running against localhost)
- Ansible spins up DNS and Netbox on control station. Some data will be auto-populated into Netbox by scripts so that Netbox can be the source of truth and Ansible, Terraform, and Maas etc. can get data like IP addresses, mac addresses, etc. from Netbox as it needs to.
- Ansible configures KVM on control station
- Packer build an image for and Ubuntu Maas region and rack controller.
- Terraform deploy Mass image as a VM running on control station.
- Ansible configure Maas VM
- Packer build Proxmox images for Maas
- Plug in the three servers to the network and let Maas install Proxmox on them
- Packer build base image for cluster VM node running Debian 13 (Trixie)
- Terraform deploy the three infracore VMS
- Ansible configures Vault cluster on the infracore VMs
- Do the migration approach from the result of Q1 above to get the Vault data over into the cluster and then kill the local Vault instance that is on the control station.
- After Vault migrated, ansible deploy Consul and Nomad in the order that resulted from Q2 above.
- Terraform deploy the three appvms and then Ansible configures them with vault, consul, and nomad agents.
- Deploy PostgreSQL in some type of HA cluster configuration on Nomad
- Migrate Netbox data to PostgreSQL, spin up Netbox on Nomad running against the new Postgres “cluster”. Too bad some of the apps don’t officially support Cockroachdb

- Kill off Netbox on the control station.
- Migrate Mass vm to Proxmox cluster and kill off the Maas VM on the control station
- Now the cluster is ready for other app deployments. This will include Authentik and some other things.
If you’ve read this far, seriously thank you for your time. I wish a case of the drink of your choice to magically appear on your doorstep.
Regards