
最近在用 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 了!