В этой статье я буду ссылаться на свою предыдущую статью о создании vpc с нуля. Нажмите здесь, чтобы понять шаги, которые я вам покажу. Terraform может сделать ваше развертывание инфраструктуры эффективным и простым. Во-первых, что такое терраформ? Вы можете найти все, что вам нужно знать о terraform здесь.
Давайте начнем!!
Теперь, когда мы создали наш vpc вручную через консоль was, теперь давайте посмотрим на автоматизацию всего процесса с помощью кода.
Предпосылки
Терраформ установлен
Аккаунт AWS
IDE на ваш выбор
Аккаунт GitHub
Шаг 1
Используя код Visual Studio в качестве редактора по моему выбору, я установил расширение hashicorp, чтобы правильно отформатировать свой код, чтобы легко использовать ресурсы терраформирования.
Вы хотели бы перейти к своему .aws/credentials PATH, чтобы ввести свои ключи доступа/секретные ключи aws, как показано ниже.
[sam-user] aws_access_key_id = XXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Прежде всего, защита ваших ключей доступа и секретных ключей aws очень важна, так как вы будете использовать их для подключения к terraform.
Первый файл, который мы создадим, — это файл Provider.tf, в нем мы настроим нашего провайдера aws, чтобы он ссылался на наш доступ/секретный ключ aws для подключения к terraform. нажмите здесь, чтобы просмотреть документацию.
Шаг 2
Создать Vpc
Ознакомьтесь с документацией terraform по ресурсам vpc: нажмите здесь
В приведенном выше коде мы создали файл main.tf для создания ресурсов нашей инфраструктуры. Используя документацию terraform, было создано имя ресурса sample_vpc. Затем мы выбрали наш CIDR для использования. Пожалуйста, нажмите здесь, чтобы узнать больше о диапазоне cidr.
Шаг 3
Создадим наши подсети:
Мы собираемся создать как частную, так и публичную подсеть для подключения к vpc. Ссылка на документацию здесь
шаг 4
Создать интернет-шлюз
Это шлюз для связи с вашим vpc. В приведенном ниже коде показано, как vpc_id прикреплен к sample_igw.
шаг 5
Создать таблицу маршрутов
Здесь мы подключаем нашу таблицу маршрутов к созданному vpc и подключаем его к интернет-шлюзу. Также приведенный ниже код показывает связь таблицы маршрутов с общедоступной подсетью, которую мы создали ранее. См. документацию здесь
шаг 6
Создать группу безопасности
Это помогает подключиться к экземпляру ec2. Если вы заметили в коде, есть правило «вход» и «выход». Вход разрешает входящий трафик, давайте рассмотрим его как входящее правило, а выход разрешает выход трафика, то есть исходящее правило.
От порта: к порту: указывает вход и выход всего трафика, как указано в 0. Кроме того, у нас есть протокол «-1», что означает, что разрешены все протоколы tcp, udp… и т. д. cidr_blocks может быть списком IP-адресов. В коде я добавил свой личный ip.
Имейте в виду, что здесь нам не нужен тег, потому что у группы безопасности уже есть атрибут имени.
шаг 7
Создайте свою пару ключей и экземпляр ec2
Процесс создания пары ключей очень важен, так как вы будете использовать этот ключ для подключения к вашему экземпляру ec2. Код ниже не раскрывает мой ключ, потому что я использовал файловую функцию terraform. См. здесь для получения дополнительной информации.
Кроме того, вы заметите файл «userdata.tpl» ниже. В этом файле есть весь мой скрипт конфигурации для загрузки моего экземпляра.
В вашем терминале сделайте;
ssh-keygen -t ed25519
Это создаст пару открытого и закрытого ключей, как показано выше. Затем в пути к файлу замените id_ed25519 на имя пары ключей›, в моем случае это samplekey.
почему ed25519? отметьте здесь, в качестве альтернативы, вы также можете ознакомиться со статьей Рисан Багджа здесь .
Примечание: это можно сделать напрямую, используя код terraform из документации здесь или. вы можете просто сделать это через терминал.
На приведенной ниже диаграмме показан список ключей, которые у меня есть в этом каталоге, мы сосредоточимся только на вновь созданных ключах «samplekey & samplekey.pub». Я использовал команду linux, которая помогает определить права доступа к этим файлам в этом каталоге.
do ;
chmod 400 samplekey
Это изменит разрешение вашего закрытого ключа только на чтение.
Теперь разверните свою инфраструктуру на aws из terraform:
# aws_vpc.sample_vpc will be created + resource "aws_vpc" "sample_vpc" { + arn = (known after apply) + cidr_block = "10.111.0.0/16" + default_network_acl_id = (known after apply) + default_route_table_id = (known after apply) + default_security_group_id = (known after apply) + dhcp_options_id = (known after apply) + enable_classiclink = (known after apply) + enable_classiclink_dns_support = (known after apply) + enable_dns_hostnames = true + enable_dns_support = true + id = (known after apply) + instance_tenancy = "default" + ipv6_association_id = (known after apply) + ipv6_cidr_block = (known after apply) + ipv6_cidr_block_network_border_group = (known after apply) + main_route_table_id = (known after apply) + owner_id = (known after apply) + tags = { + "Name" = "sam-user-vpc" } + tags_all = { + "Name" = "sam-user-vpc" } } Plan: 9 to add, 0 to change, 0 to destroy.
Перейдите в консоль и посмотрите, как работает ваш экземпляр.
Чтобы подключиться к вашему экземпляру ec2, вы можете выполнить шаги в консоли aws, нажав «подключиться», и вы попадете на эту страницу.
В следующей статье я покажу вам, как использовать переменные, модули и другие атрибуты terraform, чтобы сделать автоматизацию эффективной и действенной.
Счастливая Терра!!
См. мой github для необработанного кода. Спасибо