Как сохранить вывод 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"
}