terraform 玩转 docker !

126 天前
 winson030

背景

最近在用 terraform 做基础设施部署,发现 terraform 除了支持很多云服务 provider 之外,也支持很多本地服务的 provider ,比如 virtual box ,docker ,proxmox 等等。

玩法

云服务费用高可以拿本地服务练手,推荐 docker !

docker 的 provider 我用的是 kreuzwerker/docker

只需要在本地安装 terraform ,在 main 文件中配置好远程 docker 的 ssh host

将 docker 或者 docker compose 的指令内容转换成 hcl

执行下面三步:

  1. terraform init
  2. terraform plan
  3. terraform apply

展示一份简单的 terraform 配置文件, 与下面的命令等同:

docker run my-nginx --image=nginx:latest -p 82:80
# main.tf
# 公钥访问
terraform {
  required_providers {
    docker = {
      source = "kreuzwerker/docker"
    }
   
  }
  backend "consul" {
    address = "127.0.0.1:8500"
    scheme  = "http"
    path    = "terraform/state/nginx"
    
  }
}

provider "docker" {
  host     = "ssh://root@your_host:22"
  ssh_opts = ["-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null"]
}
resource "docker_container" "nginx" {
  image = "nginx:latest"
  name  = "my-nginx"

  ports {
    internal = 80
    external = 82
  }
}

最后访问 ip:82 就能 fan 访问到 nginx 了!

1129 次点击
所在节点    Docker
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1006575

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX