Works with
Providers
Conn3x is built on OpenTofu, so every provider in the OpenTofu Registry works, as it is. Create the server with whichever cloud you already use, and hand its address to a circuit in the same plan.
Search every providerWhere servers usually come from
- DigitalOceandigitalocean/digitaloceanDroplets, VPCs, firewalls and DNS.Used in the Conn3x tutorials
- AWShashicorp/awsEC2 instances, VPCs, security groups and everything else in AWS.
- Hetzner Cloudhetznercloud/hcloudServers, networks, firewalls and load balancers.
- Google Cloudhashicorp/googleCompute Engine instances, networks and the rest of Google Cloud.
- Azurehashicorp/azurermVirtual machines, networks and the rest of Azure.
- Akamai (Linode)linode/linodeLinodes, VPCs, firewalls and DNS.
- Vultrvultr/vultrInstances, bare metal, VPCs and firewalls.
- Scalewayscaleway/scalewayInstances, private networks and security groups.
- Oracle Cloudoracle/ociCompute instances, VCNs and the rest of OCI.
- Proxmox VEbpg/proxmoxVirtual machines and containers on your own Proxmox cluster.
- Cloudflarecloudflare/cloudflareDNS records for the servers you create, and the rest of Cloudflare.
- TLShashicorp/tlsGenerate SSH keys and certificates as part of the plan.
One plan, from the cloud to the config
The server's address is an expression, not a file you copy it into. The plan creates the server first, then shows every step headed for it, waiting on an address that doesn't exist yet.
resource "digitalocean_droplet" "web" {
name = "web1"
image = "rockylinux-10-x64"
region = "nyc3"
size = "s-1vcpu-1gb"
ssh_keys = [var.ssh_key_id]
# user_data installs a host key made in the plan; see the tutorial
}
module "web" {
source = "github.com/conn3xorg/circuit-nginx?ref=v0.1.0"
hosts = {
web1 = {
address = digitalocean_droplet.web.ipv4_address
host_key = tls_private_key.host.public_key_openssh
}
}
}The DigitalOcean tutorial walks through it end to end. Using a provider that isn't listed here? It works the same way, and a pull requestadding it is welcome.