В предыдущем пост Я посмотрел на Пулуби создать VPC. В этом посте я пойду на шаги, чтобы добавить некоторые подсети к нему.
Полный проект доступен на Гадость .
Конфигурация
А подсеть Это логическое разбиение вашей сети, поэтому в случае подсети в VPC они будут разделить VPC на меньшие куски. VPC охватывает все зоны доступности области, в то время как подсеть находится только внутри одной зоны доступности. Чтобы убедиться, что приложение, которое вы запускаете внутри вашего VPC, могут перемещаться из одной зоны доступности в другую, если есть неудача, вам нужно иметь как минимум двумя зонами доступности. Каждая из зон также нужен свой собственный блок CIDR. Конфигурация ниже, которую вы можете скопировать/вставить в файл YAML из предыдущего блога, имеет два параметра. Параметр VPC: подсеть-зоны
Имеет разделенный запятыми список всех зон доступности, в которых необходимо создать подсеть. Параметр VPC: подсеть-IPS
Имеет разделенный запятой список блоков CIDR для каждой из подсетей.
vpc:subnet-zones: "us-east-1a,us-east-1c" vpc:subnet-ips: "172.32.32.0/20,172.32.80.0/20"
Вы можете использовать командную строку, как SULUMI CONFIGN SET VPC: подсеть-зоны «US-EAST-1A, US-EAST-1C»
Чтобы добавить эти новые переменные конфигурации, или вы можете добавить их непосредственно в файл yaml. Файл YAML со всей конфигурацией называется Пулуби. <Имя вашего проекта> .yaml
Отказ
Создание подсетей
Код ниже является расширением из кода, созданного в предыдущем пост Отказ Таким образом, вы можете скопировать/вставить этот фрагмент в свой код GO. Прогулка по коду, он получает конфигурацию для зон ( подсеть
) и блоки CIDR ( подседатели
) из файла yaml. Код читает переменную и разбивает его на разделитель запяты. Для каждой из зон это создаст новую подсеть внутри VPC (см. Подсетерарги
) и дать ему имя на основе имени VPC. Последний шаг в Диапазон
Цикл — это добавить новый идентификатор на массив подсетей для экспорта в консоль пула.
// Create the required number of subnets subnets := make(map[string]interface{}) subnets["subnet_ids"] = make([]interface{}, 0) subnetZones := strings.Split(getEnv(ctx, "vpc:subnet-zones", "unknown"), ",") subnetIPs := strings.Split(getEnv(ctx, "vpc:subnet-ips", "unknown"), ",") for idx, availabilityZone := range subnetZones { subnetArgs := &ec2.SubnetArgs{ Tags: tags, VpcId: vpc.ID(), CidrBlock: subnetIPs[idx], AvailabilityZone: availabilityZone, } subnet, err := ec2.NewSubnet(ctx, fmt.Sprintf("%s-subnet-%d", vpcName, idx), subnetArgs) if err != nil { fmt.Println(err.Error()) return err } subnets["subnet_ids"] = append(subnets["subnet_ids"].([]interface{}), subnet.ID()) } ctx.Export("SUBNET-IDS", subnets["subnet_ids"])
Запуск кода
Как и в предыдущее время, последнее, что нужно сделать, это запустить пуловка вверх
Чтобы сказать пулуби, чтобы пойти добавить подсети к вашим VPC! Если вы используете тот же проект и стек, Pulumi автоматически поймет, что ему необходимо добавить подсети к существующему VPC и не создаст новую VPC.
$ pulumi up Previewing update (builderstack): Type Name Plan pulumi:pulumi:Stack builder-builderstack + ├─ aws:ec2:Subnet myPulumiVPC-subnet-1 create + └─ aws:ec2:Subnet myPulumiVPC-subnet-0 create Outputs: + SUBNET-IDS: [ + [0]: output+ [1]: output ] Resources: + 2 to create 2 unchanged Do you want to perform this update? yes Updating (builderstack): Type Name Status pulumi:pulumi:Stack builder-builderstack + ├─ aws:ec2:Subnet myPulumiVPC-subnet-1 created + └─ aws:ec2:Subnet myPulumiVPC-subnet-0 created Outputs: + SUBNET-IDS: [ + [0]: "subnet- " + [1]: "subnet- " ] VPC-ID : "vpc- " Resources: + 2 created 2 unchanged Duration: 8s Permalink: https://app.pulumi.com/retgits/builder/builderstack/updates/2
Постоянная ссылка в нижней части вывода требует от консоли пуловой консоли, где вы можете увидеть все детали выполнения вашего приложения и созданные ресурсы.
Консоль пульвы также имеет действительно полезные ссылки на консоль AWS, чтобы увидеть ресурсы.
Оригинал: «https://dev.to/retgits/how-to-add-subnets-to-a-vpc-in-aws-using-pulumi-and-golang-37kj»