[Настройка Linux, DevOps] Что нового добавилось в Terraform v0.13
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Добавлений немного, но их стоит знать, ведь это поможет расширить ваши возможности при работе с Terraform.Давайте рассмотрим самые нужные новые фичи при работе с модулями.Разворачивать инфраструктуру будем в aws. Создадим три vpc и сети для dev, stage и prod контуров.
source - сообщает Terraform, где найти исходный код для желаемого child модуля.
Источники бывают разные, мы будем использовать локальный путь к модулю env, для упрощения кода указываем, какой именно контур vpc_cidr - диапазон IPv4-адресов для нашего VPC в формате блока CIDR. Переменные следующие:
variable "vpc_network_cidr" {
default = {
dev = "172.16.1.0/24"
stage = "172.17.1.0/24"
prod = "172.18.1.0/24"
}
}
variable "region" {
default = "eu-west-2"
}
Как видим, используется модуль. Его структура довольно проста:
cidr_block – это про диапазон IPv4-адресов для вашего VPC в формате блока CIDR. Размеры блоков должны быть между маской сети / 16 и маской сети / 28 tags - создает тег с ключом "Имя" и указанным вами значением vpc_id - идентификатор VPC для создания
Переменные для модуля следующие:
variable "vpc_cidr" {
default = "172.16.0.0/16"
}
variable "env" {
default = "dev"
}
variable "public_subnet_cidrs" {
default = [
"172.16.1.0/24"
]
}
variable "private_subnet_cidrs" {
default = [
"172.16.2.0/24"
]
}
Допустим, мы хотим создать модуль vpc-prod только после того, как создадутся два предыдущих. В Terraform v0.13 это можно сделать с помощью следующего добавления:depends_on = [module.vpc-dev, module.vpc-stage] в секции module "vpc-prod".На выходе, после запуска создания инфраструктуры, можно увидеть, что сначала одновременно создались сети для dev и stage контуров и, только после их создания, создалась сеть и vpc для prod контура.
В самом AWS созданные нами vps и сети будут выглядеть следующим образом:
Еще одно из нововведений - это возможность использовать цикл. Из плюсов – ваш код значительно уменьшится.Циклы создаются с помощью count и for_each. В предыдущих версиях Terraform функции for_each и count позволяли систематически создавать несколько экземпляров ресурсов из одного блока ресурсов на основе данных из других частей модуля.Terraform 0.13 предоставляет аналогичную возможность для целых модулей, позволяя одному блоку модуля систематически создавать несколько экземпляров модуля.
Мета-аргумент for_each принимает карту или набор строк и создает экземпляр для каждого элемента в этой карте или наборе. С каждым экземпляром связан отдельный объект инфраструктуры и каждый отдельно создается, обновляется или уничтожается при применении конфигурации.В нашем случае мы используем карту: each.key и each.value.
each.key - ключ карты, соответствующий этому экземпляру.each.value - значение карты, соответствующее этому экземпляру. Мета-аргумент count принимает целое число и создает указанное количество экземпляров модуля. С каждым экземпляром связан отдельный объект инфраструктуры и каждый отдельно создается, обновляется или уничтожается при применении конфигурации.count.index - номер отдельного индекса (начиная с 0), соответствующий этому экземпляру.
Делаем terraform apply и видим, что те, которые count , будут с индексом вида [0], те которые for_each будут с именами контуров внутри.
В самом AWS созданные нами vps и сети будут выглядеть следующим образом:
Данная статья была опубликована в преддверии старта курса Administrator Linux. Advanced. Узнать подробнее о курсе можно по ссылке. А также предлагаем вам посмотреть запись бесплатного демо-урока по теме «Кластерная файловая система Lustre».
ЗАБРАТЬ СКИДКУ
===========
Источник:
habr.com
===========
Похожие новости:
- [IT-инфраструктура, DevOps] Неужели нельзя обойтись без кафок и рэббитов, когда принимаешь 10 000 ивентов в секунду
- [Управление продуктом] Что делать в ситуациях, когда глубинное интервью идет не по плану?
- [Программирование, Symfony] Новое в Symfony 5.2: атрибуты PHP 8 (перевод)
- [Open source, PHP, Программирование] PHP 8 продолжает развитие опенсорсного языка программирования (перевод)
- [Git, Управление продуктом, Конференции, DevOps] Acceleration Community Meetup 28/01
- [Настройка Linux, Разработка под Linux, Kubernetes] Теперь в Debian комфортнее работать с k8s. Сопровождающий добавил 200 зависимостей и вынудил комитет одобрить монолит
- [DevOps] Стать инженером DevOps в 2021 году: подробное руководство (перевод)
- [Системное администрирование, Системное программирование, DevOps] Режим высокой доступности HashiCorp Vault (HA) (перевод)
- [Системное администрирование, Программирование, IT-инфраструктура, DevOps] Тонкости настройки CI/CD: как работает GitLab runner, когда использовать Docker-in-Docker и где пригодится Argo CD
- [Высокая производительность, Amazon Web Services, Microsoft Azure, Google Cloud Platform, Облачные сервисы] Cockroach Labs провела тесты облачных провайдеров
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_devops, #_terraform, #_aws, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
), #_nastrojka_linux (
Настройка Linux
), #_devops
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:48
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Добавлений немного, но их стоит знать, ведь это поможет расширить ваши возможности при работе с Terraform.Давайте рассмотрим самые нужные новые фичи при работе с модулями.Разворачивать инфраструктуру будем в aws. Создадим три vpc и сети для dev, stage и prod контуров. source - сообщает Terraform, где найти исходный код для желаемого child модуля. Источники бывают разные, мы будем использовать локальный путь к модулю env, для упрощения кода указываем, какой именно контур vpc_cidr - диапазон IPv4-адресов для нашего VPC в формате блока CIDR. Переменные следующие: variable "vpc_network_cidr" {
default = { dev = "172.16.1.0/24" stage = "172.17.1.0/24" prod = "172.18.1.0/24" } } variable "region" { default = "eu-west-2" } cidr_block – это про диапазон IPv4-адресов для вашего VPC в формате блока CIDR. Размеры блоков должны быть между маской сети / 16 и маской сети / 28 tags - создает тег с ключом "Имя" и указанным вами значением vpc_id - идентификатор VPC для создания Переменные для модуля следующие: variable "vpc_cidr" {
default = "172.16.0.0/16" } variable "env" { default = "dev" } variable "public_subnet_cidrs" { default = [ "172.16.1.0/24" ] } variable "private_subnet_cidrs" { default = [ "172.16.2.0/24" ] } В самом AWS созданные нами vps и сети будут выглядеть следующим образом: Еще одно из нововведений - это возможность использовать цикл. Из плюсов – ваш код значительно уменьшится.Циклы создаются с помощью count и for_each. В предыдущих версиях Terraform функции for_each и count позволяли систематически создавать несколько экземпляров ресурсов из одного блока ресурсов на основе данных из других частей модуля.Terraform 0.13 предоставляет аналогичную возможность для целых модулей, позволяя одному блоку модуля систематически создавать несколько экземпляров модуля. Мета-аргумент for_each принимает карту или набор строк и создает экземпляр для каждого элемента в этой карте или наборе. С каждым экземпляром связан отдельный объект инфраструктуры и каждый отдельно создается, обновляется или уничтожается при применении конфигурации.В нашем случае мы используем карту: each.key и each.value. each.key - ключ карты, соответствующий этому экземпляру.each.value - значение карты, соответствующее этому экземпляру. Мета-аргумент count принимает целое число и создает указанное количество экземпляров модуля. С каждым экземпляром связан отдельный объект инфраструктуры и каждый отдельно создается, обновляется или уничтожается при применении конфигурации.count.index - номер отдельного индекса (начиная с 0), соответствующий этому экземпляру. Делаем terraform apply и видим, что те, которые count , будут с индексом вида [0], те которые for_each будут с именами контуров внутри. В самом AWS созданные нами vps и сети будут выглядеть следующим образом: Данная статья была опубликована в преддверии старта курса Administrator Linux. Advanced. Узнать подробнее о курсе можно по ссылке. А также предлагаем вам посмотреть запись бесплатного демо-урока по теме «Кластерная файловая система Lustre». ЗАБРАТЬ СКИДКУ =========== Источник: habr.com =========== Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_nastrojka_linux ( Настройка Linux ), #_devops |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:48
Часовой пояс: UTC + 5