Spec-Zone.ru › OpenTofu 1.12

Документация по языку OpenTofu

Это документация по языку конфигурации OpenTofu. Она предназначена для пользователей интерфейса командной строки OpenTofu и TACOS (программного обеспечения для автоматизации и совместной работы с TF). Язык OpenTofu — основной пользовательский интерфейс OpenTofu. Файлы конфигурации, написанные на языке OpenTofu, указывают OpenTofu, какие плагины устанавливать, какую инфраструктуру создавать и какие данные получать. Язык OpenTofu также позволяет определять зависимости между ресурсами и создавать несколько похожих ресурсов с помощью одного блока конфигурации.

О языке OpenTofu​

Основное назначение языка OpenTofu — объявление ресурсов, представляющих объекты инфраструктуры. Все остальные возможности языка предназначены только для того, чтобы сделать описание ресурсов более гибким и удобным.

Конфигурация OpenTofu — это полный документ на языке OpenTofu, который указывает OpenTofu, как управлять заданным набором инфраструктуры. Конфигурация может состоять из нескольких файлов и каталогов.

Синтаксис языка OpenTofu состоит всего из нескольких основных элементов:

Блок кода
resource "aws_vpc" "main" {
  cidr_block = var.base_cidr_block
}

<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
  # Block body
  <IDENTIFIER> = <EXPRESSION> # Argument
}
  • Блоки служат контейнерами для другого содержимого и обычно описывают конфигурацию объектов определённого типа, например ресурса. У блоков есть тип блока, может быть ноль или более меток, а также тело, содержащее любое количество аргументов и вложенных блоков. Большинство возможностей OpenTofu настраивается с помощью блоков верхнего уровня в файле конфигурации.
  • Аргументы присваивают значение имени. Они размещаются внутри блоков.
  • Выражения представляют значение — буквально либо посредством обращения к другим значениям и их объединения. Они используются в качестве значений аргументов или внутри других выражений.

Язык OpenTofu является декларативным: он описывает желаемый результат, а не шаги для его достижения. Порядок блоков и файлов, в которые они помещены, обычно не имеет значения; при определении порядка операций OpenTofu учитывает только неявные и явные связи между ресурсами.

Пример​

В следующем примере описана простая топология сети для Amazon Web Services, чтобы показать общую структуру и синтаксис языка OpenTofu. Аналогичные конфигурации можно создавать для других служб виртуальных сетей, используя типы ресурсов, определённые другими провайдерами. Практическая конфигурация сети обычно содержит и другие элементы, не показанные здесь.

Блок кода
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 1.0.4"
    }
  }
}

variable "aws_region" {}

variable "base_cidr_block" {
  description = "A /16 CIDR range definition, such as 10.1.0.0/16, that the VPC will use"
  default = "10.1.0.0/16"
}

variable "availability_zones" {
  description = "A list of availability zones in which to create subnets"
  type = list(string)
}

provider "aws" {
  region = var.aws_region
}

resource "aws_vpc" "main" {
  # Referencing the base_cidr_block variable allows the network address
  # to be changed without modifying the configuration.
  cidr_block = var.base_cidr_block
}

resource "aws_subnet" "az" {
  # Create one subnet for each given availability zone.
  count = length(var.availability_zones)

  # For each subnet, use one of the specified availability zones.
  availability_zone = var.availability_zones[count.index]

  # By referencing the aws_vpc.main object, OpenTofu knows that the subnet
  # must be created only after the VPC is created.
  vpc_id = aws_vpc.main.id

  # Built-in functions and operators can be used for simple transformations of
  # values, such as computing a subnet address. Here we create a /20 prefix for
  # each subnet, using consecutive addresses for each availability zone,
  # such as 10.1.16.0/20 .
  cidr_block = cidrsubnet(aws_vpc.main.cidr_block, 4, count.index+1)
}

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.12/language/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API