Создание базового шаблона Terraform в Azure с использованием Yeoman
Terraform поддерживает определение, предварительный просмотр и развертывание облачной инфраструктуры. С помощью Terraform можно создавать файлы конфигурации с применением синтаксиса HCL. Синтаксис HCL позволяет указать поставщика облачных служб, например Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации создается план выполнения, который позволяет предварительно просматривать изменения инфраструктуры до их развертывания. После проверки изменений примените план выполнения для развертывания инфраструктуры.
Из этой статьи вы узнаете, как использовать Terraform с Yeoman. Terraform — это инструмент для создания инфраструктуры в Azure. Yeoman упрощает создание модулей Terraform.
В этой статье вы узнаете, как выполнить следующие задачи:
- Создание базового шаблона Terraform с помощью генератора модулей Yeoman.
- Тестирование шаблона Terraform с помощью двух различных методов.
- Запуск модуля Terraform с помощью файла Docker.
- Запуск модуля Terraform в собственном режиме в Azure Cloud Shell.
1. Настройка среды
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Настройка Terraform: если вы еще этого не сделали, настройте Terraform с помощью одного из следующих вариантов:
Visual Studio Code: скачайте Visual Studio Code для своей платформы.
Docker: установите Docker для запуска модуля, созданного генератором Yeoman.
Язык программирования Go. Установка Go в качестве тестовых случаев, созданных Yeoman, — это код с помощью языка Go.
Nodejs:Install Node.js
Установка Yeoman. Выполните следующую команду:
npm install -g yo
.Шаблон Yeoman. Выполните следующую команду, чтобы установить шаблон Yeoman для модуля Terraform:
npm install -g generator-az-terra-module
.
2. Создание каталога для модуля, созданного Yeoman
Шаблон Yeoman создает файлы в текущем каталоге. По этому вам необходимо создать каталог.
Этот пустой каталог необходимо поместить под $GOPATH/src. Дополнительные сведения об этом пути см. в статье Настройка GOPATH.
Перейдите к родительскому каталогу, из которого нужно создать новый каталог.
Выполните следующую команду, заменив заполнитель. В этом примере используется имя каталога
GeneratorDocSample
.mkdir <new-directory-name>
Перейдите в новый каталог:
cd <new-directory-name>
3. Создание шаблона базового модуля
Выполните следующую команду:
yo az-terra-module
Чтобы предоставить следующие сведения, следуйте инструкциям на экране.
Имя проекта модуля Terraform — для примера используется значение
doc-sample-module
.Использовать файл образа Docker? Введите
y
. Если ввестиn
, созданный код модуля будет поддерживать выполнение только в собственном режиме.
Для просмотра созданных конечных файлов, перечислите содержимое каталога.
ls
4. Просмотр созданного кода модуля
Запустите Visual Studio Code.
В строке меню выберите "Открыть папку" > и выберите созданную папку.
Следующие файлы созданы генератором модуля Yeoman:
main.tf
— определяет модуль, именуемыйrandom-shuffle
. Входные данные — этоstring_list
. Выходные данные — это количество перестановок.variables.tf
— определяет входные и выходные переменные, которые использует модуль.outputs.tf
— определяет выходные данные модуля. Здесь это значение, возвращаемоеrandom_shuffle
, которое является встроенным модулем Terraform.Rakefile
— определяет шаги сборки. К этим действиям относятся:build
— проверяет форматирование файла main.tf.unit
— сгенерированная структура модуля не содержит код для модульного теста. Чтобы добавить здесь код, необходимо указать сценарий модульного теста.e2e
— запускает комплексный тест модуля.
test
- Тестовые случаи написаны на языке Go.
- Все коды в тесте — комплексные.
- Комплексные тесты пытаются подготавливать все элементы, определенные в разделе
fixture
. Результаты в файлеtemplate_output.go
сравниваются с предварительно определенными ожидаемыми значениями. Gopkg.lock
иGopkg.toml
: определяет зависимости.
Дополнительные сведения о генераторе Yeoman для Azure https://github.com/Azure/generator-az-terra-module см. в документации по Terratest.
5. Тестирование модуля Terraform с помощью файла Docker
В этом разделе показано, как тестировать модуль Terraform с помощью файла Docker.
Примечание.
В этом примере модуль выполняется не в Azure, а локально.
Убедитесь, что Docker установлен и запущен
Из командной строки введите docker version
.
Полученный результат подтверждает, что платформа Docker установлена.
Введите docker info
, чтобы убедиться, что Docker действительно запущен.
Настройка контейнера Docker
Из командной строки введите
docker build --build-arg BUILD_ARM_SUBSCRIPTION_ID= --build-arg BUILD_ARM_CLIENT_ID= --build-arg BUILD_ARM_CLIENT_SECRET= --build-arg BUILD_ARM_TENANT_ID= -t terra-mod-example .
.Будет отображаться сообщение Успешно создан
В командной строке введите
docker image ls
, чтобы увидеть в списке созданный модульterra-mod-example
.Введите
docker run -it terra-mod-example /bin/sh
. После выполнения командыdocker run
вы перейдете в среду Docker. На этом этапе файл можно обнаружить с помощью командыls
.
Сборка модуля
Выполните следующую команду:
bundle install
Выполните следующую команду:
rake build
Запуск комплексного теста
Выполните следующую команду:
rake e2e
Через несколько секунд появится сообщение Проверка пройдена.
Введите
exit
, чтобы завершить тест и выйти из среды Docker.
6. Создание и тестирование модуля с использованием генератора Yeoman
В этом разделе вы создадите и протестируете модуль в Cloud Shell, используя генератор Yeoman. Использование Cloud Shell вместо файла Docker значительно упрощает процесс. При использовании Cloud Shell все перечисленные ниже продукты предварительно установлены.
- Node.js
- Yeoman
- Terraform
Запуск сеанса Cloud Shell
Запустите сеанс Azure Cloud Shell через портал Azure, shell.azure.com или мобильное приложение Azure.
Откроется страница приветствия Azure Cloud Shell. Выберите Bash (Linux).
Если вы еще не настроили учетную запись хранения Azure, откроется следующий экран. Щелкните Создать хранилище.
Azure Cloud Shell запускается в оболочке, которую вы выбрали ранее, и отображает сведения о только что созданном облачном диске.
Подготовка каталога для хранения модуля Terraform
На этом этапе служба Cloud Shell уже настроила для вас расположение GOPATH в переменных среды. Введите
go env
, чтобы увидеть путь.Создайте каталог $GOPATH, если он еще не существует: ВВОД
mkdir ~/go
.Создайте каталог в каталоге $GOPATH. Этот каталог используется для хранения различных каталогов проектов, созданных в этом примере.
mkdir ~/go/src
Создайте каталог для хранения модуля Terraform, заменив заполнитель. В этом примере используется имя каталога
my-module-name
.mkdir ~/go/src/<your-module-name>
Перейдите в каталог модуля:
cd ~/go/src/<your-module-name>
Создание и тестирование модуля Terraform
Выполните следующую команду и следуйте инструкциям. Когда появится вопрос о необходимости создания файлов Docker, введите
N
.yo az-terra-module
Выполните следующую команду, чтобы установить зависимости:
bundle install
Запустите сборку модуля с помощью следующей команды:
rake build
Запустите тест с помощью следующей команды:
rake e2e
Устранение неполадок с Terraform в Azure
Устранение распространенных проблем при использовании Terraform в Azure
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по