AI-Assisted Provisioning
All NetActuate Ansible playbook and Terraform repos include an AGENTS.md file that gives AI coding assistants — Claude Code, Cursor, GitHub Copilot, and others — everything needed to provision infrastructure when given customer-specific variables. Whether you need a single VM for a project or a globally distributed anycast cluster, the AI handles the configuration and deployment.
What the AI Needs From You
The inputs depend on what you are deploying.
For compute VMs (no BGP)
| Input | Where to Find It |
|---|---|
| NetActuate API key | Account → API Access in the portal |
| Contract ID | Scroll to the bottom of Account → API Access in the portal |
| Target PoP location(s) | See locations reference |
| VM plan | See plans reference |
| SSH public key | Your existing key or generate a new one |
For BGP anycast clusters (additional inputs)
| Input | Where to Find It |
|---|---|
| BGP group ID | Networking → BGP or Networking → Anycast groups in the portal |
| ASN | Your own, or request from NetActuate |
| IPv4/IPv6 prefix(es) | Your allocated address space |
Note: Most settings and key IDs are found under Account → API Access, relevant sections in the portal, or provided by NetActuate. Contact support@netactuate.com if unsure where to find a value.
Deploying Compute VMs
For individual developers, project work, AI inference, or batch processing — just VMs with SSH access, no BGP networking.
Single VM
Tell your AI assistant what you need in plain language:
Clone https://github.com/netactuate/netactuate-ansible-compute,
read the AGENTS.md, and deploy a VR1x1x25 in LAX for my project.
API key: (paste key)
Contract ID: 12345
The AI will configure group_vars/all, set up the inventory with one node, add your SSH key, and run the playbook.
Multiple VMs across locations
Clone https://github.com/netactuate/netactuate-ansible-compute,
read the AGENTS.md, and deploy 3 VMs:
- 1x VR4x4x100 in Dallas (DFW)
- 1x VR4x4x100 in Amsterdam (AMS)
- 1x VR2x2x50 in Los Angeles (LAX)
API key: (paste key)
Contract ID: 12345
Describing VMs by specs instead of plan names
You do not need to know the exact plan name. Describe what you need and the AI will match it:
Deploy a VM with 4 CPU, 4GB RAM to Dallas using
https://github.com/netactuate/netactuate-ansible-compute
API key: (paste key)
Contract ID: 12345
The AI will look up the plan reference and select the matching plan (VR4x4x100 in this case).
Using Terraform instead of Ansible
For Terraform-based compute provisioning:
Clone https://github.com/netactuate/netactuate-ansible-terraform-compute,
read the AGENTS.md, and provision 2 VMs in LAX and FRA.
API key: (paste key)
Contract ID: 12345
SSH key ID: 8335
Plan: VR1x1x25
Deploying BGP Anycast Clusters
For globally distributed anycast services — VMs with BIRD2 BGP sessions announcing your prefix from each PoP.
Basic anycast cluster
Clone https://github.com/netactuate/netactuate-ansible-bgp-bird2,
read the AGENTS.md, then provision a 3-node anycast cluster in
LAX, AMS, and SYD with:
ASN: 65000
Prefix: 203.0.113.0/24
Plan: VR8x4x50
API key: (paste key)
BGP group: 12345
Contract ID: ABC001
Claude Code will edit the required files, run the playbooks, and validate that BGP sessions are established.
With a service layer
Clone https://github.com/netactuate/netactuate-ansible-bgp-bird2,
read the AGENTS.md, deploy a 5-node anycast cluster in
LAX, FRA, SIN, LHR, and TYO, then deploy NGINX on all nodes
using https://github.com/netactuate/netactuate-ansible-nginx.
(provide BGP and API variables)
Using Terraform for the infrastructure layer
Clone https://github.com/netactuate/netactuate-terraform-bgp,
read the AGENTS.md, provision BGP-enabled nodes in LAX and AMS,
then hand the inventory to
https://github.com/netactuate/netactuate-ansible-bgp-bird2
for BGP daemon configuration.
(provide API key, contract ID, BGP group, SSH key ID)
Using Claude Code
Point Claude Code at a NetActuate playbook repo. The AGENTS.md is picked up automatically as context. Provide your variables in the initial message and Claude Code will edit the required files, run the playbooks, and validate the deployment.
Using Cursor or GitHub Copilot
Open the cloned repo in your editor. The AGENTS.md is included in the AI context automatically. Provide your variables in the chat panel and ask the assistant to configure and run the playbook.
What AGENTS.md Contains
Each repo's AGENTS.md includes:
- Complete variable reference with types and examples
- Exact files to edit and what to change in each
- Commands to run in order
- Validation steps to confirm success
- Teardown instructions
- Common errors and fixes
Save Your Defaults for Faster Deployments
Every prompt so far includes the repo URL, API key, and other settings. You can ask your AI assistant to remember your NetActuate configuration so future deployments are a single sentence.
One-time setup
Tell your AI assistant to save your defaults:
Remember my NetActuate settings for future use:
Playbook repo: https://github.com/netactuate/netactuate-ansible-compute
API key: (paste key)
Contract ID: 12345
Default OS: Ubuntu 24.04 LTS (20240423)
SSH key: ~/.ssh/id_ed25519.pub
Default plan: VR1x1x25
Default location: LAX
When I ask you to deploy a VM, use these defaults unless I
specify otherwise. Clone the repo, read the AGENTS.md, configure
the playbook with my settings, and run it.
For BGP anycast work, save the additional BGP settings:
Also remember my BGP settings:
BGP repo: https://github.com/netactuate/netactuate-ansible-bgp-bird2
BGP group: 12345
ASN: 65000
IPv4 prefix: 203.0.113.0/24
Anycast IP: 203.0.113.1
After saving defaults
Once saved, deployments become simple one-liners:
Deploy a VM to LAX with 1 GB RAM and 1 CPU
Deploy 3 VMs: one in Dallas, one in Amsterdam, one in Tokyo
Deploy a VM with 4 CPU and 8 GB RAM to Frankfurt
Deploy a 5-node anycast cluster in LAX, AMS, SIN, LHR, and TYO
The AI will use your saved defaults for the repo, API key, contract ID, OS, and SSH key. You only need to specify what changes per deployment: location, size, and count.
How this works in different tools
- Claude Code saves context in its memory system across conversations. Ask it to remember once, and it persists.
- Cursor retains conversation context within a session. Use Cursor Rules (
.cursorrulesfile) to persist defaults across sessions. - GitHub Copilot retains context within a chat session. For persistence, add your defaults to a
.github/copilot-instructions.mdfile in your project.
What to save vs. what to type each time
| Save once | Specify per deployment |
|---|---|
| API key | Location(s) |
| Contract ID | Plan / VM size |
| SSH key | Number of VMs |
| Default OS | Hostname pattern (optional) |
| Repo URL(s) | |
| BGP group, ASN, prefix (if applicable) |
Available Repos
Compute (no BGP)
| Repo | Purpose |
|---|---|
| netactuate-ansible-compute | IaaS VMs via Ansible |
| netactuate-terraform-compute | IaaS VMs via Terraform |
BGP Anycast
| Repo | Purpose |
|---|---|
| netactuate-ansible-bgp-bird2 | Anycast BGP with BIRD2 |
| netactuate-ansible-bgp-frr | Anycast BGP with FRR |
| netactuate-terraform-bgp | Terraform BGP provisioning |
Service Layers (run after BGP)
| Repo | Purpose |
|---|---|
| netactuate-ansible-nginx | NGINX on anycast nodes |
| netactuate-ansible-varnish | Varnish caching layer |
| netactuate-ansible-pdns | PowerDNS authoritative |
| netactuate-ansible-k3s | Self-managed k3s + anycast |
| netactuate-ansible-anycast-dns | KnotDNS anycast DNS |
Need Help?
If you need assistance, visit our support page.