[DevOps] Знакомство с типичными примерами использования встроенных функций Terraform (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Небольшая инструкция по использованию Terraform, чтобы изучить и применить различные типы встроенных функций, в том числе Numeric, String, и Date, и Time в этом инструменте IaC.
ИТ-команды могут использовать Terraform от HashiCorp для развертывания облачных и локальных ресурсов и управления ими. Чтобы оптимизировать использование инструмента, изучите и установите функции Terraform.
Администраторы могут использовать встроенные функции Terraform для выполнения различных математических вычислений, связанных с развертыванием, и для выполнения операций, таких как кодирование и декодирование или захват и отображение временных меток. Язык Terraform поддерживает только встроенные в него функции; специальные или определяемые пользователем функции недоступны.
Используйте это руководство по Terraform, чтобы изучить основы функций, а также некоторые общие способы их использования в корпоративных развертываниях.
Начнем с синтаксиса
Синтакс функции Terraform начинается с имени функции, за которым следуют круглые скобки, содержащие от нуля до нескольких аргументов, разделенных запятыми:
name(arg-1, arg-2, … arg-n)
Например, чтобы получить отметку времени, используйте функцию timestamp(), чтобы увидеть текущую дату и время:
> timestamp()
2019-12-07T07:44:12Z
Чтобы прочитать содержимое из файла по заданному пути и вернуть это содержимое в виде строки, используйте функцию file() и укажите путь к файлу в качестве аргумента:
Поддержка интерполяции для функций Terraform
Язык конфигурации Terraform поддерживает интерполяцию, которая позволяет администраторам передавать функции в виде строки для выполнения различных операций. Эти интерполяции заключены в специальный синтаксис $ {builtinfunction ()}, как показано в следующем примере:
resource "myinstance" "web" {
tags = ["${var.env == "prod" ? var.prod_subnet : var.dev_subnet}"]
}
Используйте консоль Terraform, чтобы наблюдать за интерполяцией и различными функциями в действии. Чтобы применить файл конфигурации в Terraform, используйте вышеупомянутый синтаксис интерполяции для ссылки на переменные и ресурсы и для вызова некоторых встроенных функций.
Давайте посмотрим на пример. В этом руководстве по Terraform у нас есть переменные с именем environment и мы сопоставляем различные среды, такие как тестирование и production, с зонами доступности AWS (AZs). Используйте другую переменную с именем availzone, чтобы сопоставить эти зоны с зонами доступности, например, us-east-1a, us-east-1b и us-east-1c. Это значения, разделенные запятыми, как вы можете видеть ниже:
variable "environment" {
default = {
"test" = "us-east-1"
"prod" = "us-west-2"
}
}
variable "availzone" {
description = "Availability Zones Mapping"
default = {
"us-east-1" = "us-east-1a,us-east-1b,us-east-1c"
"us-west-2" = "us-west-2a,us-west-2b,us-east-1c"
}
}
Чтобы захватить одну AZ, сначала используйте функцию lookup(), чтобы получить список значений, разделенных запятыми, а затем разделите его запятой (,) и функцией split().
Наконец, используйте функцию element() для захвата определенного индекса выбора. Это вернет AZ в виде строки. Поместите все эти функции внутри $ {}, как показано ниже, чтобы язык конфигурации Terraform понимал, что эти функции должны быть интерполированы перед развертыванием.
output "availabiltyzones" {
value = "${element(split(",", lookup(var.availzone,var.environment.prod)), 1)}"
}
Взятые вместе, вышеуказанные шаги будут выглядеть следующим образом:
Список встроенных функций Terraform
Функции Terraform можно разделить на одну из следующих категорий в зависимости от сценария использования.
Числовые функции
Эти функции выполняют числовые операции, такие как вычисление максимума, минимума, степени / экспоненты и логарифма, как показано в следующем примере:
Строковые функции
Язык Terraform также предоставляет встроенные функции для управления строками. Например, функции title(), lower() и upper() изменяют регистр входных строк:
ИТ-специалисты также могут разделить строку, объединить две или более строк и заменить одну подстроку другой:
Функции даты и времени
Функции даты и времени полезны для захвата и отображения отметок времени при применении конфигурации Terraform. Как мы видели в предыдущем примере, встроенная функция timestamp() возвращает дату и время:
Используйте встроенную функцию formatdate(), чтобы расположить дату и время в более удобном формате:
Функции кодирования
Terraform имеет несколько встроенных функций, которые выполняют кодирование и декодирование строки. Например, функция base64encode('string') возвращает строку в кодировке Base64, которая полезна для развертывания ресурсов Azure, которые принимают настраиваемые сценарии в кодировке Base64 для настройки виртуальных машин. В приведенном ниже примере функция file() возвращает содержимое сценария в виде обычного текста, который затем кодируется функцией Base64encode() и передается в атрибут сценария ресурса:
resource "azurerm_virtual_machine_extension" "Example" {
name = "MyVM"
location = "${azurerm_resource_group.test.location}"
resource_group_name = "${azurerm_resource_group.test.name}"
virtual_machine_name = "${azurerm_virtual_machine.test.name}"
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.0"
settings = <
Функции Сбора (Collections)
Некоторые встроенные функции Terraform выполняют несколько операций, таких как определение длины списка или строки, над коллекциями значений:
length([1,12,31,14,5,2])
length("this is a string")
Вы также можете ограничить возврат, чтобы найти только отдельные элементы в списке, или выполнить поиск в списке для определенного элемента:
===========
Источник:
habr.com
===========
===========
Автор оригинала: Prateek Singh
===========Похожие новости:
- [DevOps, Облачные сервисы, Kubernetes] Как сократить время сборки образов Docker в GitLab CI (перевод)
- [Разработка веб-сайтов, DevOps, VueJS, Облачные сервисы] Пишем мессенджер на Vue в облаке Amazon (перевод)
- [Системное администрирование, IT-инфраструктура, Серверное администрирование, DevOps] Сервер Prometheus и TLS (перевод)
- [Программирование, .NET, Amazon Web Services, C#, DevOps] Nuke: настраиваем сборку и публикацию .NET-проекта
- [Open source, Виртуализация, Облачные вычисления, Администрирование баз данных] Изучаем Bash путем написания интерактивой игры, создаем культуру DevOps, а также шпаргалка по MariaDB и MySQL
- [Информационная безопасность, Системное администрирование, DevOps] Лучшие практики при написании безопасного Dockerfile
- [IT-инфраструктура, Администрирование баз данных, Хранение данных, DevOps] Когда-то я внедрял ClickHouse в стартапе, где даже алерты мониторили индийцы — это был Дикий Запад
- [Настройка Linux, DevOps, Kubernetes] Kubernetes или с чего начать, чтобы понять что это и зачем он нужен
- [Системное администрирование, Системное программирование, DevOps] Как управлять многоступенчатым окружением с помощью Ansible (перевод)
- [Настройка Linux, DevOps, Kubernetes] Kubernetes или с чего начать чтобы понять что это и зачем нужно
Теги для поиска: #_devops, #_terraform, #_devops
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:37
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Небольшая инструкция по использованию Terraform, чтобы изучить и применить различные типы встроенных функций, в том числе Numeric, String, и Date, и Time в этом инструменте IaC. ИТ-команды могут использовать Terraform от HashiCorp для развертывания облачных и локальных ресурсов и управления ими. Чтобы оптимизировать использование инструмента, изучите и установите функции Terraform. Администраторы могут использовать встроенные функции Terraform для выполнения различных математических вычислений, связанных с развертыванием, и для выполнения операций, таких как кодирование и декодирование или захват и отображение временных меток. Язык Terraform поддерживает только встроенные в него функции; специальные или определяемые пользователем функции недоступны. Используйте это руководство по Terraform, чтобы изучить основы функций, а также некоторые общие способы их использования в корпоративных развертываниях. Начнем с синтаксиса Синтакс функции Terraform начинается с имени функции, за которым следуют круглые скобки, содержащие от нуля до нескольких аргументов, разделенных запятыми: name(arg-1, arg-2, … arg-n)
Например, чтобы получить отметку времени, используйте функцию timestamp(), чтобы увидеть текущую дату и время: > timestamp()
2019-12-07T07:44:12Z Чтобы прочитать содержимое из файла по заданному пути и вернуть это содержимое в виде строки, используйте функцию file() и укажите путь к файлу в качестве аргумента: Поддержка интерполяции для функций Terraform Язык конфигурации Terraform поддерживает интерполяцию, которая позволяет администраторам передавать функции в виде строки для выполнения различных операций. Эти интерполяции заключены в специальный синтаксис $ {builtinfunction ()}, как показано в следующем примере: resource "myinstance" "web" {
tags = ["${var.env == "prod" ? var.prod_subnet : var.dev_subnet}"] } Используйте консоль Terraform, чтобы наблюдать за интерполяцией и различными функциями в действии. Чтобы применить файл конфигурации в Terraform, используйте вышеупомянутый синтаксис интерполяции для ссылки на переменные и ресурсы и для вызова некоторых встроенных функций. Давайте посмотрим на пример. В этом руководстве по Terraform у нас есть переменные с именем environment и мы сопоставляем различные среды, такие как тестирование и production, с зонами доступности AWS (AZs). Используйте другую переменную с именем availzone, чтобы сопоставить эти зоны с зонами доступности, например, us-east-1a, us-east-1b и us-east-1c. Это значения, разделенные запятыми, как вы можете видеть ниже: variable "environment" {
default = { "test" = "us-east-1" "prod" = "us-west-2" } } variable "availzone" { description = "Availability Zones Mapping" default = { "us-east-1" = "us-east-1a,us-east-1b,us-east-1c" "us-west-2" = "us-west-2a,us-west-2b,us-east-1c" } } Чтобы захватить одну AZ, сначала используйте функцию lookup(), чтобы получить список значений, разделенных запятыми, а затем разделите его запятой (,) и функцией split(). Наконец, используйте функцию element() для захвата определенного индекса выбора. Это вернет AZ в виде строки. Поместите все эти функции внутри $ {}, как показано ниже, чтобы язык конфигурации Terraform понимал, что эти функции должны быть интерполированы перед развертыванием. output "availabiltyzones" {
value = "${element(split(",", lookup(var.availzone,var.environment.prod)), 1)}" } Взятые вместе, вышеуказанные шаги будут выглядеть следующим образом: Список встроенных функций Terraform Функции Terraform можно разделить на одну из следующих категорий в зависимости от сценария использования. Числовые функции Эти функции выполняют числовые операции, такие как вычисление максимума, минимума, степени / экспоненты и логарифма, как показано в следующем примере: Строковые функции Язык Terraform также предоставляет встроенные функции для управления строками. Например, функции title(), lower() и upper() изменяют регистр входных строк: ИТ-специалисты также могут разделить строку, объединить две или более строк и заменить одну подстроку другой: Функции даты и времени Функции даты и времени полезны для захвата и отображения отметок времени при применении конфигурации Terraform. Как мы видели в предыдущем примере, встроенная функция timestamp() возвращает дату и время: Используйте встроенную функцию formatdate(), чтобы расположить дату и время в более удобном формате: Функции кодирования Terraform имеет несколько встроенных функций, которые выполняют кодирование и декодирование строки. Например, функция base64encode('string') возвращает строку в кодировке Base64, которая полезна для развертывания ресурсов Azure, которые принимают настраиваемые сценарии в кодировке Base64 для настройки виртуальных машин. В приведенном ниже примере функция file() возвращает содержимое сценария в виде обычного текста, который затем кодируется функцией Base64encode() и передается в атрибут сценария ресурса: resource "azurerm_virtual_machine_extension" "Example" {
name = "MyVM" location = "${azurerm_resource_group.test.location}" resource_group_name = "${azurerm_resource_group.test.name}" virtual_machine_name = "${azurerm_virtual_machine.test.name}" publisher = "Microsoft.Azure.Extensions" type = "CustomScript" type_handler_version = "2.0" settings = < Функции Сбора (Collections) Некоторые встроенные функции Terraform выполняют несколько операций, таких как определение длины списка или строки, над коллекциями значений: length([1,12,31,14,5,2])
length("this is a string") Вы также можете ограничить возврат, чтобы найти только отдельные элементы в списке, или выполнить поиск в списке для определенного элемента: =========== Источник: habr.com =========== =========== Автор оригинала: Prateek Singh ===========Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:37
Часовой пояс: UTC + 5