快速入门:使用 Terraform 创建具有公共 IP 地址的 Azure 容器实例

您所在的位置:网站首页 docker容器指定ip 快速入门:使用 Terraform 创建具有公共 IP 地址的 Azure 容器实例

快速入门:使用 Terraform 创建具有公共 IP 地址的 Azure 容器实例

2023-03-24 23:34| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

快速入门:使用 Terraform 创建具有公共 IP 地址的 Azure 容器实例 项目 03/18/2023

使用 Azure 容器实例在 Azure 中快速方便地运行无服务器 Docker 容器。 当你不需要像 AzureKubernetes 服务这样的完整容器业务流程平台时,可以按需将应用程序部署到容器实例。 在本文中,你将使用 Terraform 部署一个独立的 Docker 容器,并使其 Web 应用程序可通过公共 IP 地址使用。

使用 Terraform 可以定义、预览和部署云基础结构。 使用 Terraform 时,请使用 HCL 语法来创建配置文件。 利用 HCL 语法,可指定 Azure 这样的云提供程序和构成云基础结构的元素。 创建配置文件后,请创建一个执行计划,利用该计划,可在部署基础结构更改之前先预览这些更改。 验证了更改后,请应用该执行计划以部署基础结构。

在本文中,学习如何:

使用 random_pet 为 Azure 资源组名称创建一个随机值 使用 azurerm_resource_group 创建 Azure 资源组 使用 random_string 为容器名称创建一个随机值 使用 azurerm_container_group 创建 Azure 容器组

注意

本文部分使用 Azure OpenAI 服务生成。 在发布之前,作者根据需要审阅和修改了其内容。 请参阅《我们在 Microsoft Learn 上使用 AI 生成内容的原则》一文。

先决条件 安装和配置 Terraform 实现 Terraform 代码

注意

本文中的示例代码位于 Azure Terraform GitHub 存储库中。 你可以查看包含当前和以前 Terraform 版本的测试结果的日志文件。

有关更多示例,请参阅演示如何使用 Terraform 管理 Azure 资源的文章和示例代码

创建用于测试和运行示例 Terraform 代码的目录,并将其设为当前目录。

创建名为 main.tf 的文件并插入下列代码:

resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_string" "container_name" { length = 25 lower = true upper = false special = false } resource "azurerm_container_group" "container" { name = "${var.container_group_name_prefix}-${random_string.container_name.result}" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name ip_address_type = "Public" os_type = "Linux" restart_policy = var.restart_policy container { name = "${var.container_name_prefix}-${random_string.container_name.result}" image = var.image cpu = var.cpu_cores memory = var.memory_in_gb ports { port = var.port protocol = "TCP" } } }

创建名为 outputs.tf 的文件并插入下列代码:

output "container_ipv4_address" { value = azurerm_container_group.container.ip_address }

创建名为 providers.tf 的文件并插入下列代码:

terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }

创建名为 variables.tf 的文件并插入下列代码:

variable "resource_group_location" { type = string default = "eastus" description = "Location for all resources." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription." } variable "container_group_name_prefix" { type = string description = "Prefix of the container group name that's combined with a random value so name is unique in your Azure subscription." default = "acigroup" } variable "container_name_prefix" { type = string description = "Prefix of the container name that's combined with a random value so name is unique in your Azure subscription." default = "aci" } variable "image" { type = string description = "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials." default = "mcr.microsoft.com/azuredocs/aci-helloworld" } variable "port" { type = number description = "Port to open on the container and the public IP address." default = 80 } variable "cpu_cores" { type = number description = "The number of CPU cores to allocate to the container." default = 1 } variable "memory_in_gb" { type = number description = "The amount of memory to allocate to the container in gigabytes." default = 2 } variable "restart_policy" { type = string description = "The behavior of Azure runtime if container has stopped." default = "Always" validation { condition = contains(["Always", "Never", "OnFailure"], var.restart_policy) error_message = "The restart_policy must be one of the following: Always, Never, OnFailure." } } 初始化 Terraform

运行 terraform init,将 Terraform 部署进行初始化。 此命令将下载管理 Azure 资源所需的 Azure 提供程序。

terraform init 创建 Terraform 执行计划

运行 terraform plan 以创建执行计划。

terraform plan -out main.tfplan

要点:

terraform plan 命令将创建一个执行计划,但不会执行它。 它会确定创建配置文件中指定的配置需要执行哪些操作。 此模式允许你在对实际资源进行任何更改之前验证执行计划是否符合预期。 使用可选 -out 参数可以为计划指定输出文件。 使用 -out 参数可以确保所查看的计划与所应用的计划完全一致。 若要详细了解如何使执行计划和安全性持久化,请参阅安全警告一节。 应用 Terraform 执行计划

运行 terraform apply,将执行计划应用到云基础结构。

terraform apply main.tfplan

要点:

上面的 terraform apply 命令假设之前运行了 terraform plan -out main.tfplan。 如果为 -out 参数指定了不同的文件名,请在对 terraform apply 的调用中使用该相同文件名。 如果未使用 -out 参数,请调用不带任何参数的 terraform apply。 验证结果

应用执行计划时,Terraform 会输出公共 IP 地址。 若要再次显示该 IP 地址,请运行 terraform 输出。

terraform output -raw container_ipv4_address

在浏览器的地址栏中输入示例的公共 IP 地址。

清理资源

不再需要通过 Terraform 创建的资源时,请执行以下步骤:

运行 terraform plan 并指定 destroy 标志。

terraform plan -destroy -out main.destroy.tfplan

要点:

terraform plan 命令将创建一个执行计划,但不会执行它。 它会确定创建配置文件中指定的配置需要执行哪些操作。 此模式允许你在对实际资源进行任何更改之前验证执行计划是否符合预期。 使用可选 -out 参数可以为计划指定输出文件。 使用 -out 参数可以确保所查看的计划与所应用的计划完全一致。 若要详细了解如何使执行计划和安全性持久化,请参阅安全警告一节。

运行 terraform apply 以应用执行计划。

terraform apply main.destroy.tfplan Azure 上的 Terraform 故障排除

排查在 Azure 上使用 Terraform 时遇到的常见问题

后续步骤

教程:创建要部署到 Azure 容器实例的容器映像



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3