【问题标题】:Using Terraform to upload Azure APIM使用 Terraform 上传 Azure APIM
【发布时间】:2022-08-05 14:56:12
【问题描述】:
我在解析 Azure 的事物名称和 Terraform 的事物名称之间的差异时遇到了一些问题,但总的来说我做得很好。不过,我遇到了一些具体问题。我的情况是有人使用 Azure 门户构建了 APIM,而公司现在希望通过使用 Terraform 来构建它来“使其具有可扩展性”。我有一个很好的即兴演奏 - 定义、计划、导入、计划、修改 - 但是 Azure APIM 的某些部分无法(在心理上)映射到 Terraform 命令。我的第一个是这里的屏幕(APIM 中 API 的定义选项卡:)
由于我在 Stack 上的代表仍然很新鲜,因此我实际上无法显示图像。但在 API 底部的门户中,有一个名为“定义”的选项卡。我还没有看到 a) 如何使用 Azure Powershell “获取”它们,以及 b) 我如何使用 Terraform “设置”它们。
请对 AzureRM 和 Terraform 更了解的人能够引导我朝着正确的方向前进吗?
标签:
azure
terraform
azure-api-management
terraform-provider-azure
azure-rm
【解决方案1】:
您可以遵循其中一种解决方法来使用 api 部署 API 管理实例。
我们尝试使用 API 创建 APIM 实例,
这是我们使用的示例 terraform 代码,您可以根据需要添加资源名称来使用它。
example.tf:-
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "example" {
name = "example-resources"
location = "West Europe"
}
resource "azurerm_api_management" "example" {
name = "example-apimajmt"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
publisher_name = "My Company"
publisher_email = "company@terraform.io"
sku_name = "Developer_1"
}
resource "azurerm_api_management_api" "example" {
name = "example-apiajmt"
resource_group_name = azurerm_resource_group.example.name
api_management_name = azurerm_api_management.example.name
revision = "1"
display_name = "ajtest API"
path = "example"
protocols = ["https"]
import {
content_format = "swagger-link-json"
content_value = "http://conferenceapi.azurewebsites.net/?format=json"
}
}
创建后我们可以使用它来添加标签
/* resource "azurerm_api_management_api_tag" "example" {
api_id = azurerm_api_management_api.example.id
name = "example-tagajmt"
}*/
terraform 应用完成后,您有时可以获取 APIM 实例以及 API 及其标签。
注意:- 创建 APIM 最多需要 45 分钟。
输出屏幕截图供参考:-
有关通过 terraform 在 APIM 管理中进行配置的更多信息,请参阅此 哈希公司| Terraform Registry azurerm_api_management &这个类似的 所以线程|Tag an API in Azure API Management with Terraform。