如何从使用Terraform创建的APIM中删除演示产品?
我创建API管理实例,并使用Terraform导入Swagger API,如下所示:如何从使用Terraform创建的APIM中删除演示产品?,terraform,azure-api-management,Terraform,Azure Api Management,我创建API管理实例,并使用Terraform导入Swagger API,如下所示: #Create the API Management layer resource "azurerm_api_management" "apim" { name = "${var.prefix}-apim" resource_group_name = var.resource_group_name location = var.resource_g
#Create the API Management layer
resource "azurerm_api_management" "apim" {
name = "${var.prefix}-apim"
resource_group_name = var.resource_group_name
location = var.resource_group_location
sku {
name = "Developer"
capacity = 1
}
}
resource "azurerm_api_management_api" "swagger" {
name = "ensurex-transaction-api"
resource_group_name = var.resource_group_name
api_management_name = azurerm_api_management.apim.name
revision = "1"
display_name = "My API"
path = "api"
protocols = ["https"]
import {
content_format = "swagger-json"
#TODO: Put this in a better place during build/tests
content_value = file("../../web/out/test/swagger.json")
}
}
然而,当我打开开发者页面时,有一个叫做“echoapi”的api和叫做“Starter”和“Unlimited”的产品
有没有可能一开始就阻止Terraform创造这些呢
或者,是否可以在地形脚本中添加一些内容,以便在创建后将其删除
我在terraform之后的下一步是使用ansible对资源进行一些配置,所以我同意在那个里使用解决方案
但是,我不想使用Powershell或用ARM模板替换terraform。似乎不可能阻止terraform首先创建这些模板,因为它们是terraform使用的模板 不可能直接使用Azure CLI作为它的源代码 但是,RESTAPI确实支持它
{subscriptionId}
会自动用正确的值替换您(假设您使用正确的帐户登录),您不必自己查找该值
然后,这些命令可以通过使用嵌入到terraform中
使用az v2.12添加以下内容:
resource "null_resource" "clean_api_echo" {
provisioner "local-exec" {
command = "az apim api delete --api-id echo-api --subscription ${var.subscription_id} -g ${azurerm_resource_group.rg.name} -n ${local.apim_name} -y"
interpreter = ["PowerShell", "-Command"]
}
depends_on = [
module.api_manager_api
]
}
resource "null_resource" "clean_product_starter" {
provisioner "local-exec" {
command = "az apim product delete --product-id starter --subscription ${var.subscription_id} -g ${azurerm_resource_group.rg.name} -n ${local.apim_name} --delete-subscriptions true -y"
interpreter = ["PowerShell", "-Command"]
}
depends_on = [
module.api_manager_api
]
}
resource "null_resource" "clean_product_unlimited" {
provisioner "local-exec" {
command = "az apim product delete --product-id unlimited --subscription ${var.subscription_id} -g ${azurerm_resource_group.rg.name} -n ${local.apim_name} --delete-subscriptions true -y"
interpreter = ["PowerShell", "-Command"]
}
depends_on = [
module.api_manager_api
]
}
注意:根据变量名称进行修改。subscriptionId引用前面缺少$。此外,在默认情况下,如果不删除产品绑定到的订阅,则无法删除产品。除此之外,谢谢,我需要这个。
# Create a resource group
resource "azurerm_resource_group" "resource-group" {
name = "${var.prefix}_rg"
location = var.resource_group_location
tags = var.tags
}
resource "azurerm_api_management" "apim" {
name = "${var.prefix}-apim"
resource_group_name = azurerm_resource_group.resource-group.name
location = var.resource_group_location
sku {
name = "Developer"
capacity = 1
}
}
resource "null_resource" "clean-apim-api" {
provisioner "local-exec" {
command = "az rest -m delete -u \"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/${azurerm_resource_group.resource-group.name}/providers/Microsoft.ApiManagement/service/${azurerm_api_management.apim.name}/apis/echo-api?api-version=2019-01-01\""
}
depends_on = ["azurerm_api_management.apim"]
}
resource "null_resource" "clean-apim-product-starter" {
provisioner "local-exec" {
command = "az rest -m delete -u \"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/${azurerm_resource_group.resource-group.name}/providers/Microsoft.ApiManagement/service/${azurerm_api_management.apim.name}/products/Starter?api-version=2019-01-01\""
}
depends_on = ["azurerm_api_management.apim"]
}
resource "null_resource" "clean-apim-product-unlimited" {
provisioner "local-exec" {
command = "az rest -m delete -u \"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/${azurerm_resource_group.resource-group.name}/providers/Microsoft.ApiManagement/service/${azurerm_api_management.apim.name}/products/Unlimited?api-version=2019-01-01\""
}
depends_on = ["azurerm_api_management.apim"]
}
resource "null_resource" "clean_api_echo" {
provisioner "local-exec" {
command = "az apim api delete --api-id echo-api --subscription ${var.subscription_id} -g ${azurerm_resource_group.rg.name} -n ${local.apim_name} -y"
interpreter = ["PowerShell", "-Command"]
}
depends_on = [
module.api_manager_api
]
}
resource "null_resource" "clean_product_starter" {
provisioner "local-exec" {
command = "az apim product delete --product-id starter --subscription ${var.subscription_id} -g ${azurerm_resource_group.rg.name} -n ${local.apim_name} --delete-subscriptions true -y"
interpreter = ["PowerShell", "-Command"]
}
depends_on = [
module.api_manager_api
]
}
resource "null_resource" "clean_product_unlimited" {
provisioner "local-exec" {
command = "az apim product delete --product-id unlimited --subscription ${var.subscription_id} -g ${azurerm_resource_group.rg.name} -n ${local.apim_name} --delete-subscriptions true -y"
interpreter = ["PowerShell", "-Command"]
}
depends_on = [
module.api_manager_api
]
}