Spec-Zone.ru › OpenTofu 1.11

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

Это документация по языку конфигурации OpenTofu. Она предназначена для пользователей OpenTofu CLI и TACOS (программного обеспечения для автоматизации и совместной работы с Terraform). Язык 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.11/language/

Spec-Zone.ru

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