CDK для террафора
Hashicorp недавно объявил CDKTF
Комплект облачного развития для террафора, который в настоящее время поддерживает Python3.
и TeampScript
Отказ
С CDKTF
Мы можем написать код террафора в Python3.
или TeampScript
вместо HCl
Какой язык по умолчанию для террафора.
Ну, я думал о том, чтобы дать ему попробовать и проверить, как это работает с Python3.
.
Чтобы установить самый последний стабильный выпуск CDKTF, используйте NPM.
npm install --global cdktf-cli
Чтобы получить на сегодняшний день с версией разработки режущей кромки
npm install --global cdktf-cli@next
После того, как установка сделана, вы можете проверить установку CDKTF через CDKTF.
Commands: cdktf deploy [OPTIONS] Deploy the given stack cdktf destroy [OPTIONS] Destroy the given stack cdktf diff [OPTIONS] Perform a diff (terraform plan) for the given stack cdktf get [OPTIONS] Generate CDK Constructs for Terraform providers and modules. cdktf init [OPTIONS] Create a new cdktf project from a template. cdktf login Retrieves an API token to connect to Terraform Cloud. cdktf synth [OPTIONS] Synthesizes Terraform code for the given app in a directory. [aliases: synthesize] Options: --version Show version number [boolean] --disable-logging Dont write log files. Supported using the env CDKTF_DISABLE_LOGGING. [boolean] [default: true] --log-level Which log level should be written. Only supported via setting the env CDKTF_LOG_LEVEL [string] -h, --help Show help [boolean] Options can be specified via environment variables with the "CDKTF_" prefix (e.g. "CDKTF_OUTPUT")
Хорошо, теперь, давайте сделаем некоторую реальную работу, мы создадим проект, в котором мы будем развернуть nginx на вершине Docker, используя CDKTF
и python3. Для примера Tearpcript, пожалуйста, проверьте Terraform-CDK Отказ
Создайте каталог по любому имени в нашем случае, мы будем использовать ниже Python-Docker
mkdir python-docker && cd $_
Инициализируйте проект с помощью команды init. Мы будем использовать --локал
Флаг, чтобы состояние инфраструктуры будет храниться локально.
cdktf init --template=python --local
Убедитесь, что вы проходите Python
И не Python3
еще вы получите ниже ошибки
Invalid values: Argument: template, Given: "python3", Choices: "python", "typescript"
CDKTF
Сгенерирует шаблон для нас в нашем случае, мы будем использовать Docker, чтобы получить работу nginx, поэтому убедитесь, что поменяйте провайдер в cdktf.json.
{ "language": "python", "app": "pipenv run ./main.py", "terraformProviders": ["docker"], "codeMakerOutput": "imports" }
Запустите команду GET, чтобы загрузить зависимости для использования Docker с Python.
cdktf get
Теперь добавьте свой код в main.py
Файл для строительства докера
Сначала импортируйте поставщик Docker, это означает, что импорт – это локальный каталог, созданный вышеуказанной командой
from imports.docker import Image, Container
А позже добавьте ниже код
docker_image = Image(self, 'nginx-latest', name='nginx:latest', keep_locally=False) Container(self, 'nginx-cdktf', name='nginx-python-cdktf', image=docker_image.name, ports=[ { 'internal': 80, 'external': 8000 }], privileged=False)
Добавьте зависимости в Пипнв
Файл в нашем случае
[packages] constructs="3.0.4" cdktf="0.0.12"
Pipenv бросит ошибку, если вы не определяете версию для пакетов
Беги Пипнв
Чтобы получить все зависимости для установки Pipenv, проверьте официальный сайт пиронв
pipenv install
Теперь компилируйте и генерируйте конфигурацию террафора
cdktf synth
Приведенная выше команда создаст папку, называемую CDKTF.OUT, которая содержит все конфигурацию Terraform JSON, которая была сгенерирована.
Мы можем запустить обычные команды Terraform
cd cdktf.out terraform init terraform plan terraform apply
ИЛИ
Мы можем развернуть
cdktf deploy
Давайте посмотрим демо
Оригинал: “https://dev.to/abhishekamralkar/getting-started-with-cdk-for-terraform-5d9l”