Управление выходными данными Terraform

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

Введение

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

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

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

На этом этапе мы создадим отдельный файл для определений наших выходных данных. Хотя блоки вывода можно размещать в любом файле .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

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

Базовый синтаксис блока вывода выглядит так:

output "NAME" {
  ## Arguments go here
}

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

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

nano outputs.tf

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

output "file_path" {

}

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

Этот блок пока не выполняет никаких действий, так как в нем отсутствует аргумент value. Мы добавим его на следующем этапе.

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

На этом этапе мы сделаем наш вывод полезным, указав, какое именно значение нужно отображать. Это делается с помощью аргумента 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 для обновления конфигурации

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

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

terraform apply

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

Вам будет предложено подтвердить действие. Введите 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 для просмотра выходных значений из файла состояния. Это полезно для получения информации об инфраструктуре без необходимости вручную анализировать файл состояния или повторно запускать terraform apply.

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

terraform output

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

file_path = "./example.txt"

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

terraform output file_path

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

"./example.txt"

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

Резюме

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

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

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

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