One per line. Example: app, 10.0.0.0/24, us-east-1a
main.tf

    
02 / FORMATS

Ten targets, same input.

Terraform · AWS

aws_vpc + aws_subnet resources with availability_zone, ready for terraform apply.

Terraform · Azure

azurerm_virtual_network + azurerm_subnet, with name-derived resource IDs.

Terraform · GCP

google_compute_network + google_compute_subnetwork in your chosen region.

CloudFormation

YAML template with AWS::EC2::VPC and AWS::EC2::Subnet resources.

Bicep

Azure Bicep with virtualNetwork + subnet array. Cleaner than ARM JSON.

Pulumi (TypeScript)

Modern programmatic IaC. Uses @pulumi/aws or @pulumi/azure.

Ansible

Playbook with amazon.aws.ec2_vpc_subnet tasks, idempotent.

Cisco IOS

Interface configs, route statements, and ACL examples ready to paste.

Juniper JunOS

Interface, static route, and firewall filter blocks. Ready for load merge.

Kubernetes YAML

NetworkPolicy, calico IPPool, or Cilium CIDRGroup based on your subnets.

CODE EXAMPLES

Programmatic Terraform generation

The IaC Export tool generates Terraform from a subnet plan in your browser, but you can also do it from a script. The snippets below print a Terraform aws_subnet resource for 10.0.1.0/24. The same template works for CloudFormation (swap to YAML) and Pulumi (swap to the appropriate SDK call).

def aws_subnet_tf(name, cidr):
    return (
        f'resource "aws_subnet" "{name}" {{\n'
        f'  vpc_id     = aws_vpc.{name}.id\n'
        f'  cidr_block = "{cidr}"\n'
        f'  tags = {{\n'
        f'    Name = "{name}"\n'
        f'  }}\n'
        f'}}'
    )

print(aws_subnet_tf("main", "10.0.1.0/24"))
package main

import "fmt"

func awsSubnetTF(name, cidr string) string {
	return fmt.Sprintf(`resource "aws_subnet" "%s" {
  vpc_id     = aws_vpc.%s.id
  cidr_block = "%s"
  tags = {
    Name = "%s"
  }
}`, name, name, cidr, name)
}

func main() {
	fmt.Println(awsSubnetTF("main", "10.0.1.0/24"))
}
function awsSubnetTF(name, cidr) {
  return [
    `resource "aws_subnet" "${name}" {`,
    `  vpc_id     = aws_vpc.${name}.id`,
    `  cidr_block = "${cidr}"`,
    `  tags = {`,
    `    Name = "${name}"`,
    `  }`,
    `}`
  ].join('\n');
}

console.log(awsSubnetTF('main', '10.0.1.0/24'));
#!/usr/bin/env bash
# Render a Terraform aws_subnet resource for a given CIDR.

aws_subnet_tf() {
  local name=$1 cidr=$2
  cat <<EOF
resource "aws_subnet" "${name}" {
  vpc_id     = aws_vpc.${name}.id
  cidr_block = "${cidr}"
  tags = {
    Name = "${name}"
  }
}
EOF
}

aws_subnet_tf "main" "10.0.1.0/24"
public class TfSubnet {
    static String awsSubnetTF(String name, String cidr) {
        return String.format(
            "resource \"aws_subnet\" \"%s\" {%n" +
            "  vpc_id     = aws_vpc.%s.id%n" +
            "  cidr_block = \"%s\"%n" +
            "  tags = {%n" +
            "    Name = \"%s\"%n" +
            "  }%n" +
            "}",
            name, name, cidr, name);
    }
    public static void main(String[] args) {
        System.out.println(awsSubnetTF("main", "10.0.1.0/24"));
    }
}
#include <stdio.h>

void aws_subnet_tf(const char *name, const char *cidr) {
    printf("resource \"aws_subnet\" \"%s\" {\n", name);
    printf("  vpc_id     = aws_vpc.%s.id\n", name);
    printf("  cidr_block = \"%s\"\n", cidr);
    printf("  tags = {\n");
    printf("    Name = \"%s\"\n", name);
    printf("  }\n");
    printf("}\n");
}

int main(void) {
    aws_subnet_tf("main", "10.0.1.0/24");
    return 0;
}
resource "aws_subnet" "main" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
  tags = {
    Name = "main"
  }
}
REFERENCES

Common prefix references