Provision it. Configure it. One plan.
Today that's Terraform, Ansible, and a drawer of glue scripts holding them together. Conn3x does both jobs: one binary, one plan, one state, for your cloud and every server it creates.
$ conn3x plan
+ digitalocean_droplet.web
+ conn3x_package.web__nginx["web1"]
+ conn3x_file.web__page["web1"]
host = (known after apply)
+ conn3x_service.web__running["web1"]
Plan: 4 to add, 0 to change, 0 to destroy.What it does
See everything before it runs
One plan shows the server you're about to create and the exact changes headed for it, line by line. Run it again later and it tells you what someone changed by hand.
Keep your providers
Conn3x is built on OpenTofu, so every Terraform and OpenTofu provider works as it is, and so do the modules and state you already have.
Install nothing on your servers
No Python, no agent. Conn3x connects over SSH, checks the host key every time, and runs plain shell commands, as root or through sudo.
It's early, and Linux first: Rocky, RHEL, AlmaLinux, Fedora, Debian and Ubuntu.
Bring your playbooks
conn3x convert ansible -i inventory site.yml rewrites each task it can prove means the same thing. What it can't, a loop or a Jinja filter, stays in the file with the reason, so nothing gets guessed.
- name: Ship the nginx config
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
mode: "0644"
notify: Reload nginxstep "ship_the_nginx_config" {
file {
path = "/etc/nginx/nginx.conf"
content = file("${path.module}/files/nginx.conf")
mode = "0644"
}
notify = [handler.reload_nginx]
}Two tools, or one
| Terraform or OpenTofu, plus Ansible | Conn3x | |
|---|---|---|
| To install | Two tools, and Python on the controller and every host | One binary |
| State | Terraform state for the cloud, none for the hosts | One state for both |
| Seeing host changes | A separate --check --diff run | In the same plan as the cloud |
| Cloud addresses in host config | Inventory scripts or plugins | An expression |
| Finding drift on hosts | Run the playbook in check mode | conn3x drift, both layers |
Fifteen minutes to your first circuit
All you need is one Linux server you can reach over SSH.