Террафор (3 частью серии)
Это мой первый пост на Террафом ряд. Следовательно, я ограничу свою дискуссию на обзор Terraporm и создания экземпляра EC2, используя террафору в простейших средствах.
Перед приближением Что
Террафор, нам нужно обратиться к Почему
Отказ Во-первых, давайте понять инфраструктуру как код (IAC) и его роль в текущем контексте цифрового преобразования.
Каждый был Gung-Ho вокруг процессов Agile и DEVOPS. Эти практики вокруг разработки программного обеспечения дали огромные преимущества организациям. Следовательно, вызвало необходимость автоматизации мирного и ручного процесса развертываний инфраструктуры в масштабе. Единственная цель инфраструктуры в качестве кода (IAC) состоит в том, чтобы написать и выполнить код — автоматизировать предоставление и управление инфраструктурой. Это требует изменений в психическом мышлении — рассмотреть все аспекты разработки программного обеспечения (особенно инфра обеспечения) в качестве программного обеспечения.
Например, давайте предположим, что нам нужно создать 3-уровня архитектура Наряду с группами безопасности, балансировщики нагрузки, хозяевами Bastion, VPC, подсети, маршруты в облаке AWS. Это может быть легко достигнуто консолью или CLI. Однако после того, как утверждали эти настройки разработки необходимо реплицироваться в нескольких средах. Теперь все могут звучать немного сложным, так как есть сфера ошибки. Здесь террафом приходит к нашему спасению — писать один раз и казнить где угодно.
Есть 2 способа приблизиться к IAC.
Императив
Вместо этого подход определяет определенные команды, необходимые для достижения желаемой конфигурации, и эти команды должны выполняться в правильном порядке.А
декларативный
Подход определяет желаемое состояние системы, в том числе какими необходимыми ресурсами и любые свойства, которые они должны иметь, и инструмент IAC настроит его для вас.
Декларативный подход также сохраняет список текущих состояний вашей системной системы, что делает снять инфраструктуру проще для управления.
Террафор падает в декларативную категорию и использует язык Hashicorp (HCl). Это инструмент с открытым исходным кодом, разработанным Hashicorp и написан на языке Go. устанавливается является одним двоичным, называемым террафом. Этот двоичный файл используется для предоставления инфраструктуры с любого сервера или даже вашего ноутбука. Это очень популярный инструмент для поддержки IAC, поддерживаемый оживленным сообществом. Это облачное агностическое и, следовательно, его можно использовать для развертывания облачной инфраструктуры на нескольких облачных поставщиков.
Под капотом двоичные вызовы террафора призывают вызовы API через Поставщики
и используют существующую инфраструктуру, уже использованную этими провайдерами для своих серверов API. Поставщик несет ответственность за понимание взаимодействия API и воздействия ресурсов. В настоящее время он поддерживает 34 официальных Поставщики и 160+ проверенных провайдеров.
Предварительные условия
- Террафом Установка
- AWS Cloud аккаунт (свободный уровень будет предпочтительным)
- AWS пользователь с программным доступом
- AWS доступа к идентификатору ключа
- AWS секретный ключ доступа
- AWS IAM привилегии для создания экземпляра EC2
AWS CLI Установка
Версия программного обеспечения
- Террафор 0.15+
- AWS CLI 2.0
Обратитесь к моему Более раннее блог Чтобы настроить AWS CLI
Кодовое время
Начнем написать несколько террафом для создания экземпляра AWS EC2.
Создать папку проекта TF-AWS-EC2
mkdir tf-aws-ec2 && cd $_
Создать файл с именем main.tf
Отказ Для целей этой начальной демонстрации мы будем жесткокодировать все значения конфигурации. Для производства хардкодирование не рекомендуется. Мы увидим в дальнейшем учебных пособиях, чтобы написать код террафора в соответствии с лучшими практиками.
touch main.tf
Откройте свой любимый IDE (E.g. VSCode). Скопируйте код ниже в main.tf.
террафом
Блок настраивает требуемый поставщик AWS вместе с соответствующей версией.
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~>3.0" } } }
провайдер
Блок настраивает регион AWS и теги по умолчанию, применимые ко всем ресурсам, созданным через код Terraporm.
provider "aws" { region = "us-east-1" default_tags { tags = { "Environment" = "dev" "Owner" = "g33kzone" } } }
Ресурс
Блок отвечает за создание экземпляра EC2 с данной конфигурацией. Он создает экземпляр EC2 с типом экземпляра «T2.Micro» вместе с указанным AMI.
resource "aws_instance" "web" { instance_type = "t2.micro" ami = "ami-04d29b6f966df1537" tags = { "Name" = "aws-ec2-demo" } }
main.tf
Файл должен содержать следующий код.
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~>3.0" } } } provider "aws" { region = "us-east-1" default_tags { tags = { "Environment" = "dev" "Owner" = "g33kzone" } } } resource "aws_instance" "web" { instance_type = "t2.micro" ami = "ami-04d29b6f966df1537" tags = { "Name" = "aws-ec2-demo" } }
Выполнение кода
Теперь, когда мы написали минимальный код террафора. Давайте начнем выполнять код Это связано с четырьмя основными командами в этом
, строить планы
, Применить
, разрушать
Инициализировать код террафора
# open your shell in the same project folder # download the terraform core components # and initialize terraform in this directory terraform init
Создайте план на основе кода
# Validate changes to be made in AWS after the execution terraform plan
Осуществует общие изменения, которые должны быть сделаны как часть этого выполнения плана.
Примените изменения в плане для достижения желаемого состояния согласно коду Terraform.
# -auto-approve is used to skip manual approval prompt terraform apply -auto-approve
Чистить
Давайте удалите созданную инфраструктуру, чтобы избежать каких-либо расходов.
# running this command will destroy all the resources terraform destroy -auto-approve
Github Repo (филиал — Начало работы
) — https://github.com/g33kzone/tf-aws-ec2
Террафор (3 частью серии)
Оригинал: «https://dev.to/g33kzone/terraform-getting-started-26d1»