Исходный код, который вы пишете как разработчик, важно, но это только одна часть всего приложения, которая входит в производство. Чтобы развернуть приложение, вам понадобятся ресурсы, такие как Gateways API, ведра S3 или VPCS. Настройка этих ресурсов — это задача, которую вы не хотите делать вручную. Как насчет создания вашей инфраструктуры в качестве кода, используя тот же язык, в котором вы построили свое приложение. Вот что Пулуби позволяет вам делать!
Большинство ресурсов, развернутых для любого из основных облачных поставщиков, должны быть развернуты внутри VPC. Итак, давайте пройдемся по шагам, чтобы создать VPC, используя SDK Pulumi Go. Полный проект доступен на Github Отказ
Новый проект
Если вы еще этого не сделали, вы можете взять быстрое вторые и отправиться на Веб-сайт пуламов создать новую учетную запись. Это бесплатно навсегда для личного пользования! Как только вы сделали это и установили Выступ Вы готовы начать. Чтобы пойти, вам нужно создать новый проект Pulumi. В командной строке вы можете указать, какой шаблон вы хотите использовать ( Go
в этом случае). Вы сможете указать имя проекта (с флагом - имя
), описание (с флагом - description
flag) и именем стека (с --stack
Флаг).
pulumi new go \ --name builder \ --description "An awesome Pulumi infrastructure-as-code Stack" \ --stack retgits/builderstack
В приведенном выше примере я использовал имя проекта строитель
и стек называется RetGits/Buillerstack
Отказ
Используя Go Modules
Текущий шаблон Go все еще полагается на деп
Для управления зависимостями, но с введением модулей Go вы, вероятно, хотите использовать это для управления зависимостями. К счастью, переключение с деп
к Иди модулей
Требуются только три команды.
go mod init github.com/retgits/builder go mod tidy rm Gopkg.*
Первая команда создает новый модуль GO в каталоге, где вы запускаете команду. Модуль нуждается в имени и в этом примере имя модуля — github.com/retgits/builder
Отказ Вторая команда принимает вход от Gopkg.toml
и создает записи в Go.mod
для каждой записи. Третья команда удаляет Gopkg
файлы.
Переменные конфигурации по умолчанию
Для окончательного развертывания AWS Pulumi необходимо знать, как подключиться к AWS. Для подключения, пулуби использует провайдер (Больше на этом позже). Конфигурация для этого провайдера может быть установлена через командную строку: SULUMI CONFIG SET AWS: <опция>
Отказ
pulumi config set aws:profile default pulumi config set aws:region us-east-1
Пример выше, имеет необходимый параметр AWS: регион
который говорит пулуби, в каком области развертываюсь (в этом случае US-East-1
) и дополнительный параметр AWS: Профиль
Который говорит Pulumi профиль для использования (в этом случае по умолчанию
). Профили, которые вы можете выбрать, являются те, которые вы создали, используя AWS Configure
.
Добавление дополнительных переменных конфигурации
Как Лучшая практика AWS предлагает вам добавлять теги на каждый ресурс, который вы создаете (по крайней мере, те, которые поддерживают теги). Теги — это простые пары ключа/значения, которые могут облегчить управление, поиск и фильтровать ресурсы. Теги, которые я использую, когда я развернул код AWS, а те, которые находятся в образце Версия (Потому что инфраструктура — как-код облегчает версию вашей инфраструктуры тоже), Автор (так что вы можете увидеть, кто сделал развертывание), команда (так что вы можете увидеть, какая команда сделала развертывание), а особенность (Ресурсы, как правило, являются частью более крупного приложения, так что с этим вы можете отфильтровать все ресурсы для приложения, который вы ищете). Если вы хотите изменить теги, не стесняйтесь сделать это в исходном коде. Чтобы создать VPC, вам понадобятся два параметра. Во-первых, Название VPC и во-вторых, вам нужно указать блок CIDR.
tags:version: "0.1.0" tags:author:tags:team: tags:feature: myFirstVPCWithPulumi vpc:name: myPulumiVPC vpc:cidr-block: "172.32.0.0/16"
Существует два способа добавления переменных конфигурации на конфигурацию Pulumi. Вы можете использовать командную строку, как PULUMI CONFIGE Набор Теги: версия "0.1.0"
или вы можете добавить их непосредственно в файл yaml. Файл YAML со всей конфигурацией называется Пулуби. <Имя вашего проекта> .yaml
Отказ
Использование переменных конфигурации в вашем коде
Переменные конфигурации, которые вы добавили в файл YAML, доступны через пулуби. Контекст
объект. Вы можете использовать Getconfig ()
Метод для поиска вашего ключа, и вы получите строку и логию взамен. Логин говорит, может ли контекст находить ключ, который вы ищете. Чтобы сделать этот процесс немного проще и предоставить возможность иметь значения по умолчанию, вы можете добавить метод, такой как ниже.
// getEnv searches for the requested key in the pulumi context and provides either the value of the key or the fallback. func getEnv(ctx *pulumi.Context, key string, fallback string) string { if value, ok := ctx.GetConfig(key); ok { return value } return fallback }
Сделать все это работа
Теперь, когда большая часть кода готов, пришло время создать VPC. В следующем коде вы можете увидеть карта [строка] интерфейс {}
называется Теги который используется для течения всех ресурсов, созданных для этого проекта. Пулумы создает VPC, выполняя EC2.NewVPC ()
Отказ Как вы, вероятно, хотите узнать идентификатор вновь созданного VPC, пулуби облегчает вывод от AWS и экспорт Это как выходы, так что вы можете увидеть их в Пулочная консоль .
func main() { pulumi.Run(func(ctx *pulumi.Context) error { // Prepare the tags that are used for each individual resource so they can be found // using the Resource Groups service in the AWS Console tags := make(map[string]interface{}) tags["version"] = getEnv(ctx, "tags:version", "unknown") tags["author"] = getEnv(ctx, "tags:author", "unknown") tags["team"] = getEnv(ctx, "tags:team", "unknown") tags["feature"] = getEnv(ctx, "tags:feature", "unknown") tags["region"] = getEnv(ctx, "aws:region", "unknown") // Create a VPC for the EKS cluster cidrBlock := getEnv(ctx, "vpc:cidr-block", "unknown") vpcArgs := &ec2.VpcArgs{ CidrBlock: cidrBlock, Tags: tags, } vpcName := getEnv(ctx, "vpc:name", "unknown") vpc, err := ec2.NewVpc(ctx, vpcName, vpcArgs) if err != nil { fmt.Println(err.Error()) return err } // Export IDs of the created resources to the Pulumi stack ctx.Export("VPC-ID", vpc.ID()) return nil }) }
Запуск кода
В то время как большинство других языков полагаются на диспетчер пакетов языка для установки плагинов пулалумов (также называемых поставщиками ), GO нет. Чтобы развернуть AWS, вам нужно будет вручную установить провайдер AWS. Чтобы установить последнюю версию (как написание этого блога) поставщика AWS, вы можете запустить команду ниже.
pulumi plugin install resource aws v1.17.0
Последнее, что нужно сделать, это запустить пуловка вверх
Чтобы сказать пулуби, чтобы пойти создать свой VPC!
$ pulumi up Previewing update (builderstack): Type Name Plan + pulumi:pulumi:Stack builder-builderstack create + └─ aws:ec2:Vpc myPulumiVPC create Resources: + 2 to create Do you want to perform this update? yes Updating (builderstack): Type Name Status + pulumi:pulumi:Stack builder-builderstack created + └─ aws:ec2:Vpc myPulumiVPC created Outputs: VPC-ID: "vpc-" Resources: + 2 created Duration: 11s Permalink: https://app.pulumi.com/retgits/builder/builderstack/updates/1
Постоянная ссылка в нижней части вывода требует от консоли пуловой консоли, где вы можете увидеть все детали выполнения вашего приложения и созданные ресурсы.
Консоль пульвы также имеет действительно полезные ссылки на консоль AWS, чтобы увидеть ресурсы.
Оригинал: «https://dev.to/retgits/how-to-create-a-vpc-in-aws-using-pulumi-and-golang-3ncp»