theme: condensed-night-purple
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
专栏上文已经简单介绍了
Terraform
以及其安装,这篇文章根据社区教程,编写一个基于Docker
启动nginx
的例子。
一、环境准备
Terraform 和 Docker
在正式开始例子之前,我们必须保证环境中已经安装了Terraform
、docker
,前者参照专栏内部的上篇文章,docker
的安装参照这篇文章《文章TODO》。
Provider
插件缓存配置
在Terraform
的整个执行流程中,我们在使用到Terraform init
命令时,该工具会分析我们代码中使用到的Provider
,并尝试下载Provider
插件到本地,如果我们不进行特殊的设置,每次执行init
都会尝试去下载插件,并且每个项目都回保存自己独立的插件,相当浪费空间。这怎么办呢?
这时我们可以使用插件缓存,基本的原理只要插件下载成功一次,就会保存在指定的插件缓存目录,其它项目再次下载,就会拷贝缓存内容到项目目录,甚至在系统支持上,Terraform
还会使用符号连接这个缓存路径,并不直接拷贝插件内容。
有两种方式,第一种方式是配置TF_PLUGIN_CACHE_DIR
环境变量:
```
务必确保这个目录下已经创建好plugin-cache这个文件夹
export TFPLUGINCACHE_DIR="$HOME/.terraform.d/plugin-cache" ```
第二种方式是使用CLI
配置文件,基于Linux
环境,在用户的/home
目录下创建名为 ".terraformrc" 的文件:
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
需要注意的是:有必要关注缓存路径的空间增长,择机选择性地手工清理不必要的Provider
插件。
二、实战
这次实战的目的是通过Terraform
部署基于Docker的Nginx
环境,并能成功访问到Nginx
的欢迎主页。
2.1 定义资源
在这里我们使用到Github
上的项目
[terraform-provider-docker] https://github.com/kreuzwerker/terraform-provider-docker
提供的Pr