IaC和Terraform概述 电脑版发表于:2025/6/29 23:34  ># IaC和Terraform概述 [TOC] Infrastructure as Code(IaC)概述 ------------ ### 什么是Infrastructure as Code(IaC) tn2>使用代码定义基础设施(声明式:云资源、配置、工具安装) 借助Git实现对基础设施的版本控制 有状态、幂等 ### Infrastructure as Code(IaC)的优势 tn2>无论何时何人执行,结果都可重复且一致(与人类复制和粘贴执行指令不同) 版本控制(谁改变了什么,回滚到良好状态的能力) 使用Git进行变更管理(批准、安全检查、自动化测试) 清晰的变更行为(而不是由人来理解和描述) 快速配置基础设施(大规模交付,运行一行代码) ### Infrastructure as Code(IaC)能做什么 tn2>提供以编码工作流来创建基础设施(创建基础设施就像在写代码) 更改或者更新现有的基础设施 和CI/CD工具集成,形成DevOps工作流 提供可复用的模块,方便协作和共享 实施安全策略和生产标准 实现基础设施的团队协作 ### IaC工具和支持的云厂商  Terraform 架构和核心概念 ------------ ### 什么是Terraform tn2>全新的配置语言HCL(HashiCorp Configuration Language) 可执行的文档 人类和机器可读 简单、易学易用 测试、共享、重用、自动化 适用于几乎所有的云厂商  ### 什么是HCL语言  tn2>它就像是一种特殊的 “说明书语言”,用来清晰地定义和描述基础设施、资源等的配置情况。 举个超级简单的例子,假如你要用 Terraform 创建一个云服务器,那就可以用 HCL 来写一个配置文件,像这样: ```bash resource "aws_instance" "example" { ami = "ami-123456" instance_type = "t2.micro" } ``` tn2>你把资源类型(云服务器)、名称(example)、镜像 ID(ami-123456)、实例类型(t2.micro)这些信息用 HCL 写好,Terraform 就能按照这个 “配置说明书” 去创建对应的云服务器了。总之,它就是帮助我们以一种结构化、易读易写且易于机器解析的方式,去描述和操作各种资源及基础设施的配置。  ### Terraform使用示范 tn2>一般使用两种方式: 1.Terraform+Ansible 2.Terraform+k8s   ### Terraform架构  ### Providers从哪里获取 tn2>可以通过这里进行获取:https://registry.terraform.io/browse/providers  ### Provider版本控制 tn2>建议固定版本,防止上游更新导致异常 不指定则使用最新版 版本操作符:=、!=、\>、>=、<、<=、~>。其中推荐的是~>表示:限制大版本号更新  ### Demo1 #### MacOS安装Terraform tn2>这里使用MacOS进行安装Terraform ```bash brew tap hashicorp/tap brew install hashicorp/tap/terraform ```  tn2>查看一下`terraform`的版本。  tn2>我们创建一个文件夹,然后创建一个`cvm.tf`的terraform文件。  tn2>打开腾讯云的product:https://registry.terraform.io/?product_intent=terraform 搜索`tencentcloud`-->点击文档-->复制Example Usage到我们的`cvm.tf`文件中     tn2>我们发现它需要`secret_id`和`secret_key`,这时我们需要到腾讯云中进行认证配置。 #### 认证配置(腾讯云) tn2>首先访问腾讯云的控制台,并进行登录。 https://cloud.tencent.com/ 鼠标移动到账号-->点击访问管理  tn2>点击用户-->用户列表-->新建用户-->快速新建用户-->设置用户名和用户权限-->创建用户。  tn2>重新回到用户列表-->点击我们刚创建的用户-->点击API密钥-->新建密钥  tn2>然后将`secret_id`和`secret_key`放入到我们的`cvm.tf`文件中。  tn2>官方比较推荐使用环境变量的方式去做配置,这里我就不演示了。  #### Init,Plan,Apply,Destroy tn2>接下来需要初始化terraform,在这个过程中会把腾讯的provider给下载下来。 ```bash terraform init ```  tn2>接下来我们通过plan来查看它的执行范围和变更做了哪些操作。 ```bash terraform plan ```   tn2>接下来我们使用`apply`进行创建和变更相关的资源,加一个`-auto-approve`表示确定要创建和变更 ```bash terraform apply -auto-approve ```  tn2>这样表示我们的资源就创建成功了。 回到腾讯云界面,找到我们的控制台,找到云服务器我们会发现有一台已经创建成功了。  tn2>更多的云资源我们参考更多的文档 接下来我们进行销毁清单列表,也是通过下面的命令调用腾讯云的接口进行操作的。 ```bash terraform destroy -auto-approve ```  tn2>再次刷新腾讯云发现服务器没有了。  #### 变更情况查看 tn2>腾讯云提供了`操作审计`的一个功能,可以查看变更情况。 