编程技术分享平台

网站首页 > 技术教程 正文

如何使用Terraform部署NGINX容器(terraform构建与运行)

xnh888 2024-10-02 02:58:07 技术教程 23 ℃ 0 评论

大家都知道Terraform是用于创建,管理和操作基础结构资源。其中资源包括物理机,VM,网络交换机,容器等。几乎任何基础设施都可以在Terraform中表示为资源。下面描述如何使用Terraform来部署NGINX容器。

1.创建Terraform配置文件

Terraform基于配置文件(在本例中为config.tf)工作。 配置将您的基础结构定义为provider 和资源(resource )。

Provider 是一种处理底层基础结构并负责管理资源生命周期的抽象方法。

资源是基础架构的组成部分,例如容器或映像。

编辑器允许我们编写config.tf文件。 第一部分(下面)定义了我们要在其中应用配置的docker主机。

provider "docker" {
  host = "tcp://docker:2345/"
}

现在,我们可以开始定义基础架构的资源。 第一个资源是我们的Docker映像。 资源具有两个参数,一个是TYPE,另一个是NAME。 类型为docker_image,名称为nginx。 在该块中,我们定义Docker image的名称和标签。

resource "docker_image" "nginx" {
  name = "nginx:1.11-alpine"
}

我们可以定义我们的容器资源。 资源类型为docker_container,名称为nginx-server。 在该块内,我们设置资源参数。 我们可以引用其他资源,例如image。

resource "docker_container" "nginx-server" {
  name = "nginx-server"
  image = "${docker_image.nginx.latest}"
  ports {
    internal = 80
  }
  volumes {
    container_path  = "/usr/share/nginx/html"
    host_path = "/home/scrapbook/tutorial/www"
    read_only = true
  }
}

2.创建计划

定义配置后,我们需要创建一个执行计划。 Terraform描述了实现所需状态所需的操作。 可以使用-out保存该计划。 我们将在下一步中应用执行计划。

要创建计划,请使用CLI

terraform plan -out config.tfplan

命令的输出指示更改。 在这种情况下,您将看到_ + dockercontainer.nginx-server和_ + dockerimage.nginx突出显示添加新资源。 如下图所示,



3.应用计划

一旦创建了计划,我们需要应用它以达到我们期望的状态。

使用CLI,terraform将提取所需的image并启动新容器。

terraform apply



4.检查基础设施(Infrastructure)

您可以使用Docker CLI查看更改并查看新启动的容器。

docker ps

您也可以使用terraform CLI进行检查

terraform show

5.更改基础架构(Infrastructure)

随着基础架构的增长和变化,terraform将管理并确保我们始终处于我们定义的状态。

我们可以更改容器以启动两个实例,每个实例使用不同的名称。

resource "docker_container" "nginx-server" {
  count = 2
  name = "nginx-server-${count.index+1}"
  image = "${docker_image.nginx.latest}"
  ports {
    internal = 80
  }
  volumes {
    container_path  = "/usr/share/nginx/html"
    host_path = "/home/scrapbook/tutorial/www"
    read_only = true
  }
}

如果我们创建这个计划,您将看到Terraform自动创建我们的新定义基础架构以匹配我们的新的配置。

terraform plan -out config.tfplan

因为我们要更改名称并添加资源,所以我们将看到“plan”:


然后,我们可以像上一步一样应用该计划。

terraform apply

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表