Skip to main content

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)

InputWhere to Find It
NetActuate API keyAccount → API Access in the portal
Contract IDScroll to the bottom of Account → API Access in the portal
Target PoP location(s)See locations reference
VM planSee plans reference
SSH public keyYour existing key or generate a new one

For BGP anycast clusters (additional inputs)

InputWhere to Find It
BGP group IDNetworking → BGP or Networking → Anycast groups in the portal
ASNYour 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 (.cursorrules file) to persist defaults across sessions.
  • GitHub Copilot retains context within a chat session. For persistence, add your defaults to a .github/copilot-instructions.md file in your project.

What to save vs. what to type each time

Save onceSpecify per deployment
API keyLocation(s)
Contract IDPlan / VM size
SSH keyNumber of VMs
Default OSHostname pattern (optional)
Repo URL(s)
BGP group, ASN, prefix (if applicable)

Available Repos

Compute (no BGP)

RepoPurpose
netactuate-ansible-computeIaaS VMs via Ansible
netactuate-terraform-computeIaaS VMs via Terraform

BGP Anycast

RepoPurpose
netactuate-ansible-bgp-bird2Anycast BGP with BIRD2
netactuate-ansible-bgp-frrAnycast BGP with FRR
netactuate-terraform-bgpTerraform BGP provisioning

Service Layers (run after BGP)

RepoPurpose
netactuate-ansible-nginxNGINX on anycast nodes
netactuate-ansible-varnishVarnish caching layer
netactuate-ansible-pdnsPowerDNS authoritative
netactuate-ansible-k3sSelf-managed k3s + anycast
netactuate-ansible-anycast-dnsKnotDNS anycast DNS

Need Help?

If you need assistance, visit our support page.