Terraform - 厂商
云厂商资源
Terraform通过Provider管理基础设施,使用Provider与云供应商API进行交互。
每个Provider都包含相关的资源和数据源。
支持列表
官方文档:
- Provider列表:https://registry.terraform.io/browse/providers
- AWS:https://registry.terraform.io/providers/hashicorp/aws/latest/docs
- AZure: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
- ALiYun: https://registry.terraform.io/providers/aliyun/alicloud/latest/docs
- K8s: https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs
通用步骤
一般情况下,应用云厂商的步骤如下:
- 在云厂商页面控制台配置访问控制:人员访问权限、API访问权限、秘钥等
- Terraform声明云厂商对应的provider
- Terraform定义云厂商资源:专有网络(VPC,virtual private cloud)、安全组、
- Terraform申请云厂商资源
通过Terraform来定义和申请
1-创建配置文件
对所有资源的代码描述都需要定义配置文件中,用于Terraform加载和解析,建议分类创建结构化的配置文件,例如
- version.tf :required_providers{} 定义对应云厂商的providers,source关键字定义provider的源地址,version关键字指定provider的版本号等
- main.tf:定义云厂商的access_key/secret_key/region等
- variables.tf:通过variable关键字声明变量的名称和type,在系统环境变量中export敏感变量的值(以TF_VAR_的名称开头)
- terraform.tfvars:对声明的变量进行配置和赋值
- output.tf:定义输出内容
分类别创建云厂商Resource的tf文件
- 每个资源块描述一个或多个基础对象、计算实例或更高级别的组件,例如网络、DNS 记录
- 资源名称必须以字母或下划线开头,并且只能包含字母、数字、下划线和破折号
- 资源参数引用:
. .
例如,在tf文件中定义私有网络(名称、网段、区域、ID等)、安全策略(访问类型、规则、出入流量、开放端口等)、等
2-初始化
- 通过在tf文件所在目录下执行命令
terraform init
- 初始化过程: 初始化配置后端state、寻找下载安装云厂商的对应版本的Provider
- 初始化时自动创建
.terraform
目录,用来管理缓存的提供程序插件和模块等配置 - state文件用于存储Terraform的数据
- 当provider版本变化时,需要重新初始化
3-格式化与验证
terraform fmt
命令格式化代码,保持代码整洁terraform validate
命令对定义的代码进行语法校检
4-计划与预览
- 命令
terraform plan
打印当前状态和期望状态之间的差异(不会执行变更) - 评估 Terraform 配置,并打印声明的所有资源的期望状态
- 将期望状态与当前工作目录的基础设施对象进行比较
5-申请资源
- 命令
terraform apply
运行plan计划中的操作 - 默认会出现是否批准该计划的提示,使用
-auto-approve
选项可以放弃该提示 - terraform会自动调整plan中的操作来执行
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。