当前位置: 首页 > news >正文

Terraform Provider 加速方案

引言

Terraform 是一个安全和高效的用来构建、更改和管理基础架构的工具,其实现了基础设施即代码(Infrastructure-as-Code,IaC),即通过代码来描述基础设施,可以通过代码来管理例如 AWS、阿里云等公有云资源或其他基础设施。Terraform 有很强大的扩展能力,通过 Provider 可对接各种类型的基础设施,如公有云(AWS、阿里云、华为云等)、Kubernetes、数据库、云服务接口等,有官方提供的 Provider,也有第三方提供的,同时官方也提供了 Terraform Registry,作为 Provider 的仓库。

但是官方的 Terraform Registry 在境外,和其他境外的仓库一样,有时下载非常慢。这对于使用体验非常不好,不过官方也提供了一些方式来加速下载,接下来我们来看看如何加速 Provider 的使用。

使用

首先确保已安装 Terraform Cli,Terraform Cli 支持使用配置文件或环境变量来配置。

环境变量

环境变量比较多,可参考官方文档,但是推荐优先使用配置文件。

配置文件

默认用户配置文件的位置取决于操作系统:

  • Windows 系统:文件名为 terraform.rc,在用户 %APPDATA% 环境变量所指的目录下,不同的 Windows 版本的值不同。Win 10 的位置在 C:\Users\用户名\AppData\Roaming
  • Mac/Linux 系统:文件名为 .terraformrc,在用户目录下,~/.terraformrc

也可以使用环境变量 TF_CLI_CONFIG_FILE 来指定自定义配置文件。

配置文件的内容为:

// 插件缓存路径
plugin_cache_dir = "/Users/wwt/.terraform.d/plugin-cache"
// 关闭内置的更新和安全检查
disable_checkpoint = true
// provider 安装配置
provider_installation {// 文件系统镜像filesystem_mirror {path = "/Users/user/.terraform.d/mirror"}// 网络镜像,仅针对阿里云 Provider 使用阿里云源network_mirror {url = "https://mirrors.aliyun.com/terraform/"// 限制只有阿里云相关 Provider 从国内镜像源下载include = ["registry.terraform.io/aliyun/alicloud","registry.terraform.io/hashicorp/alicloud",]}// 其他则从官方源获取direct {// 声明除了阿里云相关 Provider, 其它 Provider 保持原有的下载链路exclude = ["registry.terraform.io/aliyun/alicloud","registry.terraform.io/hashicorp/alicloud",]}
}

上面配置了一个阿里云镜像,针对阿里云的 Provider 可以从阿里云的源快速下载。其他国内的公有云也有类似的配置,可查看公有云的官方文档。

另一个配置项 filesystem_mirror 配置了本地镜像,由于每个 Terraform 项目 init 时会下载 Provider 到项目目录下,使用本地镜像可先将 Provider 下载到本地缓存,需要时先从本地下载,可大大加快 init 的速度。

最后 direct 的配置,找不到的从官方源下载 Provider。

配置完成后,可在任意项目目录下执行如下命令:

terraform providers mirror /Users/user/.terraform.d/mirror

先将项目的 Provider 下载的本地镜像源下,下一次其他项目 init 时就会先从本地镜像源优先查找。


http://www.mrgr.cn/news/62894.html

相关文章:

  • ESP-IDF学习记录(5) 画一块esp32-c3 PCB板
  • HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS
  • Vue实现滚动条三角样式和自定义样式
  • web worker 前端多线程学习一、
  • 基于大语言模型的组合优化
  • 【微信小程序】let和const-综合实训
  • 什么是 Spring Cloud Bus?我们需要它吗?
  • 【AI日记】24.10.31 学习LangChain和寻找AI研究报告(比如麦肯锡)
  • ROS(快速初步入门)
  • 谷歌Google搜索广告账户代理开户!
  • iDP3复现代码运行逻辑全流程(一)——部署全流程代码逻辑梳理(Learning)
  • python opencv1
  • 金蝶云苍穹的Extension与Nop平台的Delta的区别
  • 基于LORA的一主多从监测系统_4G模块上巴法云
  • Linux高阶——1027—进程间关系相关
  • SpringFactoriesLoader
  • Java项目实战II基于Java+Spring Boot+MySQL的编程训练系统(源码+数据库+文档)
  • VB中如何处理国际化(Internationalization)和本地化(Localization)
  • 低代码的崛起:改变开发的游戏规则
  • Leetcode 移除元素
  • vector中去除重复的元素
  • [UVM] objection笔记
  • 7个提高 Python 代码运行效率的小贴士
  • 自制田字格word
  • Spring Boot2.x教程:(十)从Field injection is not recommended谈谈依赖注入
  • 《优化工厂模式:降低对象创建开销的秘籍》