В пространстве инфраструктуры как код (IaC) одним из самых полезных инструментов, появившихся в последние несколько лет, является Terraform Windows от HashiCorp. Возможность версионирования инфраструктуры, автоматизации развертывания ресурсов и выполнения на разных облачных провайдерах является огромным преимуществом для любого DevOps и рабочего процесса автоматизации.
Одним из вариантов использования Terraform является CI/CD. С помощью Terraform вы можете:
Мои последние видео
- создавать тестовую среду
- развертывать приложение
- выполнять интеграционные тесты
- удалять тестовую среду
Все эти шаги выполняются автоматически. И не требуется наличие центра обработки данных!
Предварительные требования
Эта статья является пошаговым руководством по установке и настройке Terraform Windows. Если вы хотите следовать инструкции, убедитесь, что у вас есть следующие предварительные требования.
- A Windows 10 device
- Учетная запись AWS
- Установленный и настроенный AWS CLI на вашем устройстве. Вы можете узнать, как его установить здесь, а как настроить здесь.
- (По желанию) Visual Studio Code с расширением Terraform
Установка приложения Terraform Windows
Чтобы использовать мощь Terraform, сначала установите его на выбранной вами операционной системе. В этой статье я сосредоточусь на Windows. Но помните, что Terraform может работать и на других операционных системах. Если у вас не Windows, посмотрите документацию по установке.
The Hard Way
Если вы не можете использовать менеджер пакетов или хотите понять, как работает процесс установки, вы можете установить Terraform вручную. Вы можете сделать это, скачав бинарный файл и добавив его в переменную среды окружения системы. Если это выглядит сложно, заверяю вас, есть более простой способ, который вы узнаете в следующем разделе.
- Загрузите соответствующую версию Terraform с страницы загрузки HashiCorp. В моем случае это версия для Windows 64 бит.
- Создайте папку на вашем диске C:\, куда вы можете поместить исполняемый файл Terraform. Я предпочитаю помещать установщики в подпапку (например, C:\tools), где можно хранить бинарные файлы.
- После завершения загрузки найдите файл в Проводнике. Извлеките zip-файл в созданную вами папку на шаге 2.
- Откройте меню “Пуск” и введите “окружение”; первым появившимся должен быть Редактировать переменные среды системы. Нажмите на это, и вы увидите это окно.

5. Нажмите на Переменные среды… внизу, и вы увидите следующее:

6. В разделе внизу, где написано Системные переменные, найдите переменную с именем Path и нажмите “Изменить”. Затем вы увидите список мест, где Windows может найти бинарные файлы, которые ей могут понадобиться по какой-то причине.
7. Нажмите Новый и добавьте путь к папке, где расположен файл terraform.exe, в конец списка. После завершения должно выглядеть так:

8. Нажмите OK в каждом открытом вами меню, пока не останется больше ни одного.
9. Чтобы убедиться, что Windows обнаруживает новый путь, откройте новое окно CMD/PowerShell и введите refreshenv
.
10. Проверьте успешность установки, введя terraform --version
. Если возвращается версия, вы готовы к работе.
Простой способ
Уф, это было много работы! Было бы ужасно делать это каждый раз, когда вам нужно установить новое программное обеспечение на вашем устройстве. Давайте вместо этого воспользуемся менеджером пакетов. Есть несколько менеджеров пакетов, которые можно использовать для установки Terraform в Windows. Для Windows мой любимый – это Chocolatey. Это делает установку, удаление и обновление программного обеспечения таким же простым, как однократная команда, и Terraform не исключение.
Чтобы установить Terraform с помощью Chocolatey, выполните следующие шаги:
- Откройте приглашение CMD/PowerShell от имени администратора и установите Chocolatey, используя команду с их страницы установки.
- Как только это будет завершено, выполните
choco install terraform
. При желании вы также можете добавить-y
в конце, чтобы автоматически согласиться с установкой на вашем устройстве.
После выполнения этой команды вы получите что-то вроде этого:
3. Проверьте успешность установки, введя terraform --version
.
Путь Linux
I can almost hear what you’re thinking. Wait a minute Chris, didn’t you say this was going to cover installing Terraform on Windows?
Да, и он все еще существует. Но одной из функций в Windows 10 является Подсистема Windows для Linux, или WSL. Это позволяет запускать команды Linux в Windows.
- Установите WSL. Я не буду подробно рассматривать здесь установку и настройку WSL, но если вы хотите следовать за мной и еще не настроили это. Мой видеоролик TechSnips по этой теме можно найти ниже.
2. В вашем оболочке WSL выполните apt-get install unzip
. Вам понадобится это для извлечения бинарных файлов Terraform позже.
3. Загрузите Terraform, запустив wget https://releases.hashicorp.com/terraform/0.12.6/terraform_0.12.6_linux_amd64.zip
. Не забудьте заменить версию и архитектуру на ту, которая лучше всего подходит для вашего устройства. Вы можете найти полный список выпусков Terraform здесь.
4. Запустите команду unzip terraform_0.12.6_linux_amd64.zip terraform
, чтобы распаковать содержимое zip-архива в папку с именем terraform.
5. После распаковки ZIP-файла вам нужно переместить его в доступное место в системном пути. К счастью, в Linux есть папка, в которую пользователи могут добавлять исполняемые файлы по умолчанию. Переместите исполняемый файл Terraform туда, выполнив команду mv terraform /usr/local/bin/
. Папка /usr/local/bin уже установлена в вашем системном пути.
6. Проверьте успешность установки, выполнив команду terraform --version
.
Автоматизация создания инстанса AWS Terraform EC2
Теперь, когда у вас установлен Terraform, вы можете начать использовать его. В этом посте я собираюсь продемонстрировать создание простого инстанса AWS Terraform EC2. Но помните, что Terraform может развертывать сотни различных типов инфраструктуры.
Для начала вам понадобится каталог, из которого будут запускаться скрипты Terraform EC2. Важно иметь отдельный каталог для каждой среды. На момент написания этого текста у Terraform нет способа фильтровать, что он выполняет. Он будет выполнять каждый скрипт в вашем текущем рабочем каталоге.
Настройка скрипта TF
-
В вашем командном или PowerShell-консоли, запущенной с правами администратора, выполните команды
mkdir hello-terraform
, а затемcd ./hello-terraform
. - После создания каталога вам понадобится скрипт Terraform. Ниже приведен пример того, который вы можете использовать. Это типичный скрипт Terraform, использующий провайдер AWS для создания ресурса экземпляра AWS.
Если вы хотите весь скрипт, скопируйте его ниже. Если вы хотите понять, что делает этот скрипт, прочтите ниже.
# Terraform HCL
3. Сохраните приведенный выше скрипт как main.tf
в вашем рабочем каталоге.
Понимание скриптов TF
Прежде чем продолжить, рассмотрите блок ниже и то, что он объявляет.
#Terraform HCL
Этот блок сообщает Terraform EC2, какой провайдер использовать. Есть провайдеры для всех основных облачных поставщиков, а также некоторых внутриоблачных поставщиков. Если вы продвинутый пользователь и знаете, как писать на Golang, вы также можете написать свой собственный провайдер.
Этот блок сообщает Terraform использовать провайдер AWS и ключи доступа в файле ~/.aws/credentials
под именем профиля default
. Этот файл создается при настройке AWS CLI с помощью команды aws config
, как указано в предварительных требованиях.
Также стоит отметить, что ~/
является сокращением для текущего каталога пользователя. Если вы переходите с Windows, это эквивалентно $env:USERPROFILE
или %USERPROFILE%
. Однако Terraform на данный момент не поддерживает такую нотацию.
Следующий блок описывает экземпляр EC2 Terraform и что нужно использовать для его создания. Если вы посмотрите документацию Terraform для aws_instance, вы увидите, что некоторые параметры обязательны, а некоторые – опциональны. В данном случае обязательными параметрами являются идентификатор AMI (ami-07d0cf3af28718ef8
) для Ubuntu 18.04 LTS и тип экземпляра t2.micro
.
Передавая блок тегов с ключом Name
и значением HelloTerraform
, этот тег также будет назначен созданному экземпляру. Это опционально.
# Terraform HCL
Теперь, когда скрипт настроен, вызовите его, запустив terraform init
из вашего рабочего каталога. Это загрузит все зависимости и провайдера в папку с именем .terraform
. Если все пройдет успешно, вы должны получить что-то вроде этого:
Перед тем как вносить изменения, Terraform EC2 позволяет вам увидеть, что будет создано, выполнив terraform plan
. Вот что это выведет:
# будет создан aws_instance.ubuntu
Создание экземпляра AWS EC2: Создание
Теперь вы готовы запустить его сами, запустив terraform apply
. Ниже вы увидите вывод подобный terraform plan
, но с добавленным запросом подтверждения того, что вы действительно хотите применить эти изменения.
Как только вы введете ‘да’, Terraform EC2 начнет создание экземпляра Terraform EC2, вызывая API AWS с ключом доступа из вашего файла учетных данных. Это может занять некоторое время. После завершения вы увидите что-то вроде:
Уничтожение экземпляра AWS EC2
Когда вы закончите с тестовой средой, вы можете уничтожить экземпляр.
В вашем cmd/PowerShell-консоли введите terraform destroy
. Как и при команде apply
, вы увидите список ресурсов, которые Terraform собирается уничтожить, затем запрос перед самим уничтожением.
Как только вы введете ‘да’, Terraform EC2 начнет уничтожать экземпляр и подтвердит, когда он закончит.