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

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.kler.cn/a/373871.html

相关文章:

  • 《高频电子线路》 —— 高频谐振功放(2)
  • Golang | Leetcode Golang题解之第516题最长回文子序列
  • Element UI 表格组件复选框实现单选效果
  • 基于SSM学生竞赛模拟系统的设计
  • 使用 Axios 上传大文件分片上传
  • C数组手动输入问题
  • Mybatis-17.动态SQL-foreach
  • 【Unity】游戏UI中添加粒子特效导致穿层问题的解决
  • Android:ViewPaper动态添加移除第一页
  • ssm017网上花店设计+vue(论文+源码)_kaic
  • Django - 验证码使用
  • Python基础学习(八)断点调试
  • HTML入门教程19:HTML ID
  • 软件项目管理要点
  • 深度学习:yolo的使用--图像处理
  • 任意文件下载
  • 后端Java学习:springboot之文件上传(阿里云OSS存储)
  • object_model_3d_to_xyz 自理解及操作
  • Java设计模式之代理模式(三)
  • nmcli命令网络配置详解
  • 手动写一个new
  • 华为防火墙配置-基于IP地址和端口的安全策略
  • Docker快速安装Loki
  • JavaScript Prototype
  • 控制器一些不常用的的功能说明
  • 算法的基本概念@性能分析初步@复杂度分析初步