Spec-Zone.ru › OpenTofu 1.10

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

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

Spec-Zone.ru

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