使用 Azure 市场的 Terraform

     2023-03-24     176

关键词:

【中文标题】使用 Azure 市场的 Terraform【英文标题】:Terraform with Azure Marketplace 【发布时间】:2016-05-10 03:26:26 【问题描述】:

我已经开始使用 Terraform 并且很喜欢它,因为出于成本原因,我的服务跨多个基础设施提供商,因此可以轻松地在 IaaS 提供商之间复制完整服务而不会出现问题。

我通过 Azure 市场使用一些第三方服务,类似于 Heroku 的附加组件。我在 Terraform 中看到了一个用于 Heroku 附加组件声明的工具,但不是用于 Azure 市场订阅的工具。我该怎么做?

更新: 如何通过 Terraform 创建 Azure 市场订单/订阅?

【问题讨论】:

我不确定我是否理解这个问题,但是...如果市场上没有可用的服务/图像,您可以自行启动它(以任何方式最适合相关工具)。 问题是“如何通过 Terraform 创建 Azure 市场订单/订阅” 正如@DavidMakogon 提到的,如果它不在 Azure 市场中,您必须自己创建。或者让 Terraform 向 Azure 市场发布你可以使用的东西。我还在 Azure Marketplace 上进行了搜索,似乎他们没有提供任何报价。 (azure.microsoft.com/en-us/marketplace/?term=terraform) @PeterKirchner Terraform 不需要向市场发布任何内容或进入市场即可执行此操作——它是一种利用现有 IaaS API 创建、销毁等实例的 DevOps 工具。例如,我已经使用它来创建 Heroku 插件,而 Terraform 不需要已发布的插件。 【参考方案1】:

如果我正确理解您的问题,我认为关键是创建声明 VM,并在以下部分替换占位符;

plan 
    publisher = "$publisher" // e.g. bitnami
    product = "$offer"  // e.g. elk
    name = "$sku"  // e.g. 46


storage_image_reference 
    publisher = "$publisher" // e.g. bitnami
    offer = "$offer" // e.g. elk
    sku = "$sku" // e.g. 46
    version = "$version"  // e.g. latest

所以一个完整的虚拟机资源定义应该是这样的。

resource "azurerm_virtual_machine" "virtual_machine" 
    count = "$var.vm_count"
    name = "$element(module.template.vm_names, count.index)"
    location = "$var.location"
    resource_group_name = "$var.resource_group_name"
    network_interface_ids = ["$element(azurerm_network_interface.network_interface.*.id, count.index)"]
    vm_size = "$var.vm_size"
    delete_data_disks_on_termination = true
    delete_os_disk_on_termination = true

plan 
    publisher = "$var.publisher"
    product = "$var.offer"
    name = "$var.sku"


boot_diagnostics 
    enabled = true
    storage_uri = "$var.boot_diagnostics_storage_url"


storage_image_reference 
    publisher = "$var.publisher"
    offer = "$var.offer"
    sku = "$var.sku"
    version = "$var.version"


storage_os_disk 
    name = "primarydisk"
    vhd_uri = "$join("", list(var.disks_container_url, "/" , element(module.template.vm_names, count.index), ".vhd"))"
    caching = "ReadWrite"
    create_option = "FromImage"


os_profile 
    computer_name = "$element(module.template.vm_names, count.index)"
    admin_username = "$element(module.template.user_names, count.index)"


os_profile_linux_config 
    disable_password_authentication = true
    ssh_keys = [
        path     = "/home/$element(module.template.user_names, count.index)/.ssh/authorized_keys"
        key_data = "$replace(file("../vars/keys/vm.pub"),"\n","")"
    ]


tags 
    environment = "$var.resource_group_name"


【讨论】:

使用 Azure 提供程序的 Terraform “AuthorizationFailed”

】使用Azure提供程序的Terraform“AuthorizationFailed”【英文标题】:Terraform"AuthorizationFailed"withAzureprovider【发布时间】:2020-08-3102:24:14【问题描述】:我是Azure资源组的所有者,但没有订阅或管理组的权限。在我的.tf文件中配... 查看详情

使用 terraform 输出恢复 Azure ARm 模板的输出值

】使用terraform输出恢复AzureARm模板的输出值【英文标题】:RecoveroutputvalueofAzureARmtemplatewithterraformoutput【发布时间】:2019-12-1218:59:27【问题描述】:使用terraform和AzureARM模板,为了使用特定的azure函数配置事件网格,我正在尝试在te... 查看详情

如何使用服务托管标识在 Azure 中使用 Terraform 预配资源

】如何使用服务托管标识在Azure中使用Terraform预配资源【英文标题】:HowtoUseServiceManagedidentitytoprovisionresourceinAzureusingTerraform【发布时间】:2021-05-2621:08:20【问题描述】:我遇到了与托管身份相关的错误。我想在Azure中使用Terraform... 查看详情

使用 Terraform 跨订阅的 Azure Vnet 对等互连

】使用Terraform跨订阅的AzureVnet对等互连【英文标题】:AzureVnetPeeringacrosssubscriptionsusingTerraform【发布时间】:2018-11-1417:36:11【问题描述】:我想知道是否有人可以帮助我使用Terraform在Azure中跨订阅设置Vnet对等互连。每个订阅都在... 查看详情

Terraform azure 不兼容的提供程序版本

】Terraformazure不兼容的提供程序版本【英文标题】:TerraformazureIncompatibleproviderversion【发布时间】:2021-03-2919:36:08【问题描述】:当我尝试初始化terraform时,我只会在使用vnet模块时遇到以下错误,但是terraform初始化与azure_resource_g... 查看详情

使用 Terraform 创建 Azure IaaS 域控制器

】使用Terraform创建AzureIaaS域控制器【英文标题】:CreateAzureIaaSDomainControllerusingTerraform【发布时间】:2021-10-2913:25:08【问题描述】:我正在尝试使用terraform(在Azure中)将域控制器添加到现有域。我在我的服务器的主terraform文件中... 查看详情

使用 terraform 添加 azure SQL 用户

】使用terraform添加azureSQL用户【英文标题】:AddazureSQLuserwithterraform【发布时间】:2019-06-1623:19:36【问题描述】:是否有可能通过terraform将sql用户添加到azuresql?https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/或者有... 查看详情

如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?

】如何使用Terraform在管理组范围上定义和分配Azure策略?【英文标题】:HowtodefineandassignanAzurePolicyonaManagementGroupScopeusingTerraform?【发布时间】:2021-04-1822:21:35【问题描述】:我想将Azure的内置策略之一分配给使用Terraform的管理组。... 查看详情

在 azure 后端存储中使用状态文件将 terraform 的输出传递到 Azure Devops Pipeline

】在azure后端存储中使用状态文件将terraform的输出传递到AzureDevopsPipeline【英文标题】:passoutputfromterraformtoAzureDevopsPipelinewithstatefileinazurebackendstore【发布时间】:2019-12-1904:19:21【问题描述】:我似乎无法检索Terraform的公共IP地址输... 查看详情

Terraform - 部署到多个 Azure 订阅

】Terraform-部署到多个Azure订阅【英文标题】:Terrafrom-Deploytomultipleazuresubscriptions【发布时间】:2019-01-1319:51:07【问题描述】:我一直在尝试使用相同的terraform堆栈在多个Azure订阅中部署资源。还需要在不同订阅中的这些资源之间... 查看详情

如何使用 Terraform 为 Azure 资源创建警报

】如何使用Terraform为Azure资源创建警报【英文标题】:HowtocreatealertsforAzureresourcesusingTerraform【发布时间】:2021-03-3121:14:32【问题描述】:我已经为应用服务、AppService计划、存储帐户和逻辑应用等Azure资源准备了Terraform脚本......我... 查看详情

使用 Terraform 在 Azure 上部署应用服务出现未经授权的错误

】使用Terraform在Azure上部署应用服务出现未经授权的错误【英文标题】:UnauthorizederrorusingTerraformtodeployappserviceonAzure【发布时间】:2020-03-0915:34:44【问题描述】:我正在尝试使用Terraform在azureapp服务上部署一个Windows容器。应用服... 查看详情

使用来自 GCP 市场的 terraform 创建实例

】使用来自GCP市场的terraform创建实例【英文标题】:CreateinstanceusingterrafromfromGCPmarketplace【发布时间】:2020-06-1601:04:27【问题描述】:我正在尝试创建terraformscript以从市场推出fastaiinstance。我将图像名称添加为,boot_diskinitialize_para... 查看详情

terraform 模块依赖于 Azure

】terraform模块依赖于Azure【英文标题】:terraformmoduledepends_onAzure【发布时间】:2020-03-1723:11:24【问题描述】:我正在使用terraform在Azure云中构建生产基础架构。我的要求如下。应首先配置Azure密钥保管库,因为我将利用那里的秘密... 查看详情

如何使用 Terraform 在 Azure 中创建 API 应用程序?

】如何使用Terraform在Azure中创建API应用程序?【英文标题】:howtocreateAPIAppinAzureusingTerraform?【发布时间】:2021-05-0700:01:27【问题描述】:我正在尝试使用Terraform在Azure应用服务中创建一个API应用,但无法做到这一点。甚至我在AZCLI... 查看详情

sh使用terraform导出azure的订阅和租户id。(代码片段)

查看详情

在 terraform 的 azure 数据资源管理器中使用 eventthub 的默认消费者组

】在terraform的azure数据资源管理器中使用eventthub的默认消费者组【英文标题】:usingdefaultconsumergroupofeventhubinazuredataexplorerinterraform【发布时间】:2022-01-1012:23:51【问题描述】:我可以使用$Default消费者组从azure仪表板连接azure数据... 查看详情

应用程序网关的两个前端端口使用相同的端口 443 - terraform 中的 Azure 应用程序网关

】应用程序网关的两个前端端口使用相同的端口443-terraform中的Azure应用程序网关【英文标题】:twofrontendportsofapplicationgatewayareusingthesameport443-Azureapplicationgatewayinterraform【发布时间】:2021-06-0523:29:27【问题描述】:我正在使用terraf... 查看详情