Я создаю приложение логики Azure (использую его для распаковки в хранилище больших двоичных объектов).Для этого мне нужен рабочий процесс приложения логики и подключение к хранилищу больших двоичных объектов.Я создаю пустой рабочий процесс приложения логики с помощью Terraform и фактическую реализацию приложения логики с помощью Visual Studio, которую затем развертываю в приложении логики, созданном с помощью tf.
. Я использую следующий код tf для создания пустого рабочего процесса приложения логики:
resource "azurerm_logic_app_workflow" "logic_unzip" {
name = "ngh-${var.deployment}-unziplogic"
resource_group_name = "${azurerm_resource_group.rg.name}"
location = "${azurerm_resource_group.rg.location}"
}
Поскольку приложению логики требуется подключение к хранилищу BLOB-объектов, для его создания я буду использовать следующий шаблон:
resource "azurerm_template_deployment" "depl_connection_azureblob" {
name = "azureblob"
resource_group_name = "${azurerm_resource_group.rg.name}"
template_body = <<DEPLOY
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"connection_name": {"type": "string"},
"storage_name": {"type": "string"},
"storage_access_key": {"type": "string"},
"location": {"type": "string"},
"api_id": {"type": "string"}
},
"resources": [{
"type": "Microsoft.Web/connections",
"name": "[parameters('connection_name')]",
"apiVersion": "2016-06-01",
"location": "[parameters('location')]",
"scale": null,
"properties": {
"displayName": "[parameters('connection_name')]",
"api": {
"id": "[parameters('api_id')]"
},
"parameterValues": {
"accountName": "[parameters('storage_name')]",
"accessKey": "[parameters('storage_access_key')]"
}
},
"dependsOn": []
}]
}
DEPLOY
parameters = {
"connection_name" = "azureblob"
"storage_name" = "${azurerm_storage_account.sa-main.name}"
"storage_access_key" = "${azurerm_storage_account.sa-main.primary_access_key}"
"location" = "${azurerm_resource_group.rg.location}"
"api_id" = "${data.azurerm_subscription.current.id}/providers/Microsoft.Web/locations/${azurerm_resource_group.rg.location}/managedApis/azureblob"
}
deployment_mode = "Incremental"
}
Запланируйте и примените, они отлично работают.В Visual Studio я могу затем создать приложение логики и использовать подключение azureblob
для выбора правильного хранилища больших двоичных объектов.
Теперь, когда я развернул рабочий процесс приложения логики из Visual Studio и запустил terraform plan
, я получаюследующие изменения:
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
~ update in-place
Terraform will perform the following actions:
~ azurerm_logic_app_workflow.logic_unzip
parameters.$connections: "" => ""
parameters.%: "1" => "0"
Plan: 0 to add, 1 to change, 0 to destroy.
Выполнение команды apply
теперь приведет к разрыву приложения логики, поскольку оно удаляет связанное соединение.Очевидно, что развертывание Visual Studio создало связь между приложением логики и соединением.
Как я могу сказать Terraform не удалять соединения (созданные развертыванием Visual Studio) из приложения логики?