Как использовать вывод Terraform в качестве ввода для шаблона Azure ARM - PullRequest
0 голосов
/ 27 мая 2020

Используя terraform и шаблон Azure ARM, вы хотите использовать вывод Terraform в качестве входных данных для шаблона Azure ARM. Нужна помощь, чтобы решить, как лучше всего выполнить это действие.

  1. Как сохранить вывод terraform в KeyVault / Storage / Tables
  2. Использовать вывод для ввода шаблона ARM

Заранее спасибо.

1 Ответ

0 голосов
/ 28 мая 2020

Как сохранить вывод Terraform в KeyVault / Storage / Tables

Вывод Terraform определяется вами. Таким образом, вы можете решить, какой будет результат. И чтобы сохранить их в KeyVault / Storage / Tables, просто создайте из них ресурсы. Например, вы хотите сохранить идентификатор ресурса виртуальной машины в секрете, тогда вы можете сделать это следующим образом:

resource "azurerm_virtual_machine" "main" {
  name                  = "${var.prefix}-vm"
  location              = azurerm_resource_group.main.location
  resource_group_name   = azurerm_resource_group.main.name
  ...
}

...

resource "azurerm_key_vault_secret" "example" {
  name         = "secret-sauce"
  value        = azurerm_virtual_machine.main.id
  key_vault_id = azurerm_key_vault.example.id

  tags = {
    environment = "Production"
  }
}

Используйте вывод для ввода шаблона ARM

Для шаблона ARM в Terraform вы можете взглянуть на , пример . А может в нем есть свойство parameters. Все параметры в шаблоне ARM, вы можете добавить входы в параметры для их установки. Например:

resource "azurerm_template_deployment" "example" {
  name                = "acctesttemplate-01"
  resource_group_name = azurerm_resource_group.example.name

  template_body = <<DEPLOY
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    }
  },
  ...
}
DEPLOY


  # these key-value pairs are passed into the ARM Template's `parameters` block
  parameters = {
    "storageAccountType" = "Standard_GRS"
  }

  deployment_mode = "Incremental"
}

Параметр storageAccountType можно увидеть как в свойстве параметров ресурса azurerm_template_deployment, так и в шаблоне ARM. Кроме того, в примере, в котором вы хотите установить идентификатор ресурса виртуальной машины для параметра в шаблоне ARM с выводом Terraform, вы можете сделать это следующим образом, чтобы передать вывод Terraform в шаблон ARM:

resource "azurerm_template_deployment" "example" {
      name                = "acctesttemplate-01"
      resource_group_name = azurerm_resource_group.example.name

      template_body = <<DEPLOY
    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "vm_resource_id": {
          "type": "string"
        }
      },
      ...
    }
    DEPLOY


      # these key-value pairs are passed into the ARM Template's `parameters` block
      parameters = {
        "vm_resource_id" = azurerm_virtual_machine.main.id
      }

      deployment_mode = "Incremental"
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...