Управление выводами (Outputs) Terraform

LinuxBeginner
Практиковаться сейчас

Введение

В Terraform значения вывода (output values) — это способ обнародовать значимые данные о ваших ресурсах после их развертывания. Они подобны возвращаемым значениям модуля Terraform и могут использоваться для легкого получения информации, такой как IP-адрес сервера, строка подключения к базе данных или путь к файлу. Это делает информацию легкодоступной из командной строки и позволяет использовать ее в других конфигурациях Terraform.

В этой лабораторной работе вы узнаете, как определять, применять и просматривать значения вывода. Мы начнем с базовой конфигурации Terraform, которая создает локальный файл, а затем добавим блок вывода (output block), чтобы обнародовать путь к этому файлу.

Создание файла outputs.tf для определений вывода

На этом шаге мы создадим выделенный файл для наших определений вывода. Хотя вы можете размещать блоки вывода (output blocks) в любом файле .tf, общепринятой практикой и лучшим подходом является размещение их в отдельном файле с именем outputs.tf. Это помогает организовать вашу конфигурацию и упрощает поиск всех выводов для вашего проекта.

Вся ваша работа будет выполняться в каталоге ~/project, который является каталогом по умолчанию в вашем терминале.

Сначала давайте проверим файл main.tf, который был предварительно создан для вас.

ls -l

Вы должны увидеть файл main.tf и каталог .terraform.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf

Теперь создайте файл outputs.tf с помощью команды touch.

touch outputs.tf

Эта команда создает пустой файл с именем outputs.tf в текущем каталоге. Вы можете проверить его создание, снова выведя список файлов.

ls -l

Теперь вы увидите outputs.tf в списке файлов.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
-rw-rw-r-- 1 labex labex   0 Oct 15 12:39 outputs.tf

Определение вывода для имени файла local_file

На этом шаге вы определите блок вывода (output block) в файле outputs.tf. Блок вывода объявляет одно значение вывода для вашей конфигурации Terraform.

Базовый синтаксис для блока вывода выглядит следующим образом:

output "NAME" {
  ## Аргументы размещаются здесь
}

Здесь NAME — это строка, которая задает имя вывода, которое вы будете использовать позже для запроса его значения.

Давайте откроем файл outputs.tf с помощью редактора nano и добавим наш первый блок вывода.

nano outputs.tf

Теперь добавьте следующий код в файл. Мы назовем наш вывод file_path.

output "file_path" {

}

После добавления кода сохраните файл и выйдите из nano, нажав Ctrl+X, затем Y и, наконец, Enter.

Пока этот блок мало что делает, поскольку ему не хватает аргумента value. Мы добавим его на следующем шаге.

Ссылка на атрибут ресурса в блоке output

На этом шаге мы сделаем наш вывод полезным, указав, какое значение он должен отображать. Это делается с помощью аргумента value внутри блока вывода. Значение обычно представляет собой ссылку на атрибут ресурса, определенного в вашей конфигурации.

Синтаксис для ссылки на атрибут ресурса: <RESOURCE_TYPE>.<RESOURCE_NAME>.<ATTRIBUTE>.

В нашем файле main.tf определен ресурс:

resource "local_file" "example" {
  ## ...
}

Ресурс local_file имеет атрибут с именем filename, который содержит путь к управляемому им файлу. Чтобы сослаться на этот атрибут, мы используем local_file.example.filename.

Давайте добавим эту ссылку в наш блок вывода. Снова откройте outputs.tf с помощью nano.

nano outputs.tf

Измените файл, чтобы включить аргумент value, как показано ниже:

output "file_path" {
  value = local_file.example.filename
}

Это указывает Terraform, что вывод file_path должен иметь значение атрибута filename из ресурса local_file с именем example.

Сохраните файл и выйдите из nano, нажав Ctrl+X, Y и Enter.

Выполните terraform apply для обновления конфигурации

На этом шаге вы примените изменения конфигурации. Всякий раз, когда вы добавляете, удаляете или изменяете выводы (outputs), вы должны выполнить terraform apply, чтобы Terraform распознал изменения и обновил файл состояния (state file). В файле состояния Terraform хранит значения ваших выводов.

Выполните команду terraform apply в вашем терминале.

terraform apply

Сначала Terraform покажет вам план выполнения (execution plan). Он обнаружит, что вы добавили вывод, и запланирует его добавление. Поскольку ресурс local_file еще не существует, он также запланирует его создание.

Вам будет предложено подтвердить действие. Введите yes и нажмите Enter.

Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  ## local_file.example will be created
  + resource "local_file" "example" {
      + content              = "This is an example file managed by Terraform."
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./example.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + file_path = "./example.txt"

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

local_file.example: Creating...
local_file.example: Creation complete after 0s [id=ec3adcab998872def2df6200fb03992ac6f237a4]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

file_path = "./example.txt"

Как вы можете видеть в выводе, применение прошло успешно, и Terraform теперь отображает вывод file_path с его значением.

Выполните terraform output для просмотра имени файла

На этом шаге вы будете использовать команду terraform output для просмотра значений вывода из вашего файла состояния (state file). Это полезно для получения информации о вашей инфраструктуре без необходимости вручную разбирать файл состояния или повторно запускать terraform apply.

Чтобы увидеть все выводы, определенные в вашей конфигурации, просто выполните команду без каких-либо аргументов.

terraform output

Это отобразит все выводы в удобочитаемом формате.

file_path = "./example.txt"

Вы также можете запросить конкретное значение вывода, указав его имя в качестве аргумента. Это полезно в скриптах или когда вам нужна только одна часть информации.

terraform output file_path

Эта команда выведет только необработанное значение указанного вывода.

"./example.txt"

Это позволяет легко использовать вывод в оболочечных скриптах, например, присвоив его переменной: FILE=$(terraform output -raw file_path). Флаг -raw удаляет кавычки.

Резюме

Поздравляем с завершением лабораторной работы!

В этой лабораторной работе вы изучили основы управления выводами (outputs) в Terraform. Вы успешно:

  • Организовали свою конфигурацию, создав выделенный файл outputs.tf.
  • Определили блок output для объявления значения вывода.
  • Ссылались на атрибут ресурса внутри блока вывода, чтобы сделать его значение доступным.
  • Применили конфигурацию с помощью terraform apply, чтобы сделать вывод доступным.
  • Запросили значение вывода из командной строки с помощью terraform output.

Выводы Terraform — это мощная функция для извлечения важной информации из вашей инфраструктуры и интеграции ваших рабочих процессов Terraform с другими инструментами и скриптами.