Terraform配置缓存

网友投稿 1030 2022-05-30

Terraform配置缓存

一 背景

需要手动或者terraform init一次下载, 然后缓存。后续直接使用缓存。

本次实践使用的是Linux/Mac 系统,如果是windows系统有两点不同的配置。

Terraform使用预填充插件(防止通过init命令从web下载)。

配置文件使用与 .tf 文件相同的 HCL 语法,但具有不同的属性和块。以下示例说明了一般语法;有关每个设置的含义的信息,请参阅以下部分:

credentials :配置用于 Terraform Cloud 或 Terraform Enterprise 的凭据。有关详细信息,请参阅下面的凭据Credentials。

credentials_helper:为 Terraform Cloud 或 Terraform Enterprise 配置用于存储和检索凭据的外部帮助程序。有关详细信息,请参阅下面的凭据助手。

disable_checkpoint :设置为 true 时,禁用需要联系 HashiCorp 提供的网络服务的升级和安全公告检查。

disable_checkpoint_signature :当设置为 true 时,允许上述升级和安全公告检查,但禁止使用匿名 id 来删除重复警告消息。

plugin_cache_dir :启用插件缓存并以字符串形式指定插件缓存目录的位置。

provider_installation :自定义 terraform init 在安装提供程序插件时使用的安装方法。有关详细信息,请参阅下面的提供程序安装。

二 配置

# 创建缓存目录 mkdir -pv $HOME/.terraform.d/terraform-plugin-cache # 写入配置文件 cat > $HOME/.terraform.d/.terraformrc <

三 初始化

terraform init进行联网下载,或者可以进入到registry.terraform.io 手动通过github下载

可以看到在缓存目录下已经成功缓存

四 离线测试

4.1 制定plugin-dir

Terraform配置缓存

terraform init --plugin-dir $HOME/.terraform.d/terraform-plugin-cache/

4.2 定义Terraform插件使用本地mirror

在.terraformrc 中添加filesystem_mirror

provider_installation { filesystem_mirror { path = "/Users/xuel/.terraform.d/terraform-plugin-cache" include = ["registry.terraform.io/*/*"] } }

$ terraform providers mirror /Users/larry/Software/terraform/plugins terraform init -plugin-dir=/Users/larry/Software/terraform/plugins

4.3 两者的练习与区别

前两个是相互联系的,因为它们都共享相同的底层机制:“文件系统镜像”插件安装方法。

使用terraform init -plugin-dir使Terraform实际上构造了一个one-offprovider_installation块,其中只包含一个引用给定目录的filesystem_mirror块。它允许您仅在一次安装操作中获得这种效果,而不是在中心位置为将来的所有命令配置它。具体而言,如果运行terraform init -plugin-dir=/example,则在功能上等同于以下CLI配置:

provider_installation { filesystem_mirror { path = "/Users/xuel/.terraform.d/terraform-plugin-cache" include = ["registry.terraform.io/*/*"] } }

插件缓存目录不同,因为Terraform仍将访问配置的安装方法(默认情况下,每个提供商的原始注册表),但如果插件包文件已经在缓存中,则将跳过下载插件包文件(该文件实际上包含插件代码,而不是关于发布的元数据)。同样,它会将下载的任何新插件包保存到缓存中,以备将来使用。

因此,这不会阻止Terraform尝试通过网络访问原始注册表来安装任何新插件。这只是一个避免重复使用re-downloading相同包的优化。

注意事项

注意环境变量TF_CLI_CONFIG_FILE,全局生效添加之.bashrc中。

到此就完成了terraform离线本地源的配置了, 除了这种方式外其实也可以基于terraform开放的HTTP API协议,使用Python Flask写一个registry server。

如果想要自己手动下载,可以到这个网址:https://releases.hashicorp.com/

参考链接

https://developer.aliyun.com/article/897960

https://www.5axxw.com/questions/content/8jxzkx

https://www.terraform.io/cli/config/config-file

Git

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中的关键字
下一篇:【愚公系列】2022年05月 .NET架构班 044-分布式中间件 .Net Core下使用Redis
相关文章