最近在用 terraform 做基础设施部署,发现 terraform 除了支持很多云服务 provider 之外,也支持很多本地服务的 provider ,比如 virtual box ,docker ,proxmox 等等。
云服务费用高可以拿本地服务练手,推荐 docker !
docker 的 provider 我用的是 kreuzwerker/docker
只需要在本地安装 terraform ,在 main 文件中配置好远程 docker 的 ssh host
将 docker 或者 docker compose 的指令内容转换成 hcl
执行下面三步:
展示一份简单的 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 了!