2023-03-22-Terraform 离线环境使用

Terraform离线环境使用

初始文件准备

获取 terraform bin文件

先准备一台可联网的Centos/RHEL,安装terraform 或者把terraform的安装文件下载下来

官方文档:支持 MAC,Win,Linux https://developer.hashicorp.com/terraform/tutorials/azure-get-started/install-cli

Centos/RHEL

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install terraform

检查版本

[root@centos8 azure-terraform]# terraform version
Terraform v1.3.9
on linux_amd64
+ provider registry.terraform.io/hashicorp/azurerm v3.44.1

[root@centos8 test]# whereis terraform
terraform: /usr/bin/terraform

把 /usr/bin/terraform 文件上传到离线环境

获取 terraform 插件

新建一个目录,创建要用的 providers.tf 文件,文件中定义好要使用的插件,比如此处是 azurerm 不低于3.0版本 执行 terraform init 则会依照版本要求下载最新的插件,存放路径为当前目录的 .terraform 将来要使用其他插件,也是在此文件定义插件版本,执行 init 命令自动下载插件

terraform 离线环境安装配置

把 terraform bin文件和 providers.tgz 上传到离线环境 $HOME

bin 文件和插件导入

bin文件导入

导入插件

环境配置

由于 terraform init 默认会联网下载插件,并存放在当前目录的 .terraform,所以需要指定插件路径,一旦指定了插件路径,路径下没有对应插件,init 就会报错,即使电脑能联网也不会去联网下载。

创建 providers.tf 注意 version 要指定当前插件的具体版本,不可模糊匹配。 provider 里中国区环境添加 environment = "china",global 环境去掉这行

init 方法1: 手动指定插件

输出

init 方法2:

init 找不到文件的话,重新ssh登入下。

backup

以下使用服务主体认证的方式 providers.tf 写法,留作备用,这次不需要。 国内21世纪环境要写 environment = "china" ,global 环境不需要。

参考文档

https://lonegunmanb.github.io/introduction-terraform/5.1.%E5%91%BD%E4%BB%A4%E8%A1%8C%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html

关注我的github,后续更新会同步上去

https://github.com/cai11745/hybrid-cloud

Last updated