3. 开发环境准备:安装 Terraform、配置云服务商 CLI、初始化 Git 仓库
本章将搭建事故响应值班机器人项目所需的本地开发环境。环境准备是 IaC 实践的第一步,直接影响后续代码编写、调试与团队协作的效率。完成本章操作后,你将拥有一个可运行 Terraform 命令、能通过 CLI 与云服务商通信、并受 Git 版本控制的标准化工作台。
3.1 安装 Terraform
Terraform 以单一二进制文件分发,安装过程简洁。请根据操作系统选择对应方式:
| 操作系统 | 安装方式 | 验证命令 |
|---|---|---|
| macOS | brew install hashicorp/tap/terraform |
terraform version |
| Ubuntu/Debian | 添加 HashiCorp 官方 APT 源后 sudo apt install terraform |
terraform version |
| Windows | Chocolatey: choco install terraform 或手动下载 exe |
terraform version |
| 通用(Linux/macOS) | 从 releases.hashicorp.com 下载 zip 并解压至 /usr/local/bin |
terraform version |
版本建议:本课程基于 Terraform v1.6+ 编写。安装后请执行
terraform version 确认版本不低于 1.6.0。若使用旧版本,部分特性(如 import 块、terraform test)可能不可用。
3.2 配置云服务商 CLI
值班机器人将部署在云上,Terraform 通过云服务商的 API 管理资源。因此需要先安装并认证对应的 CLI 工具。本课程以 AWS 为主要目标平台,同时提供 Azure 和 GCP 的配置要点。
3.2.1 AWS CLI 安装与认证
# 安装 AWS CLI v2(macOS/Linux)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# 验证安装
aws --version
# 配置访问密钥(推荐使用 IAM 用户)
aws configure
# 依次输入:AWS Access Key ID, AWS Secret Access Key, 默认区域(如 us-east-1), 输出格式(json)
安全提醒:永远不要将 Access Key 提交到 Git 仓库。AWS CLI 将凭证存储在
~/.aws/credentials 文件中,该文件应被 .gitignore 排除。生产环境建议使用 IAM 角色或 AWS SSO。
3.2.2 Azure CLI 与 GCP CLI 快速参考
| 云平台 | CLI 安装命令 | 认证命令 | 验证命令 |
|---|---|---|---|
| Azure | brew install azure-cli 或官方脚本 |
az login |
az account show |
| GCP | brew install google-cloud-sdk 或官方包 |
gcloud auth application-default login |
gcloud config list |
多平台策略:本课程后续章节将以 AWS 为例编写 Terraform 配置。如果你使用 Azure 或 GCP,只需替换 provider 块和资源类型,整体架构与流程完全一致。
3.3 初始化 Git 仓库
Git 是 IaC 的版本控制基石。良好的仓库结构能提升团队协作效率,并支持后续的 CI/CD 集成。
3.3.1 创建项目目录与初始化
# 创建项目根目录
mkdir incident-response-bot
cd incident-response-bot
# 初始化 Git 仓库
git init
# 创建标准目录结构
mkdir -p modules/alerting modules/notification modules/compute
mkdir -p environments/dev environments/staging environments/prod
mkdir -p scripts docs
# 创建 .gitignore 文件(防止敏感文件泄露)
cat > .gitignore << EOF
# Terraform
*.tfstate
*.tfstate.*
.terraform/
crash.log
override.tf
override.tf.json
*_override.tf
*_override.tf.json
# CLI 凭证
.aws/
.azure/
.gcp/
# IDE
.vscode/
.idea/
*.swp
EOF
# 首次提交
git add .
git commit -m "chore: initialize project structure for incident response bot"
3.3.2 推荐的项目目录结构
incident-response-bot/
├── modules/ # 可复用模块
│ ├── alerting/ # 告警源模块(PagerDuty, Slack)
│ ├── notification/ # 通知渠道模块
│ └── compute/ # 计算资源模块(Lambda, ECS)
├── environments/ # 环境配置
│ ├── dev/ # 开发环境
│ ├── staging/ # 预发布环境
│ └── prod/ # 生产环境
├── scripts/ # 辅助脚本
├── docs/ # 文档
├── .gitignore
└── README.md
结构说明:
modules/ 存放可复用的 Terraform 模块,environments/ 存放各环境的根配置。这种分离方式使得不同环境可以引用同一模块但使用不同的变量值,避免配置重复。
3.4 环境准备全景流程
下图展示了从本地机器到云服务商 API 的完整工具链与认证路径:
3.5 环境验证清单
完成上述步骤后,请逐项验证环境是否就绪:
- Terraform 可用性:执行
terraform version,确认输出包含版本号及 provider 信息。 - 云 CLI 认证:执行
aws sts get-caller-identity(AWS)、az account show(Azure)或gcloud auth list(GCP),确认返回有效的身份信息。 - Git 仓库状态:执行
git status,确认工作区干净,且.gitignore已正确排除敏感文件。 - 目录结构完整性:确认
modules/、environments/、scripts/、docs/目录已创建。
快速验证脚本:你可以将以下命令保存为
scripts/verify-env.sh,每次切换环境时一键检查:
#!/bin/bash
echo "=== Terraform Version ==="
terraform version
echo ""
echo "=== AWS Identity ==="
aws sts get-caller-identity
echo ""
echo "=== Git Status ==="
git status
执行 chmod +x scripts/verify-env.sh 后即可运行。
3.6 常见问题与排错
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
terraform version 提示命令未找到 |
Terraform 未加入 PATH | 将 terraform 二进制所在目录添加到 ~/.bashrc 或 ~/.zshrc 的 PATH 中 |
aws sts get-caller-identity 返回访问被拒绝 |
Access Key 无效或 IAM 用户权限不足 | 检查 ~/.aws/credentials 中的密钥,或重新执行 aws configure |
git init 后 .gitignore 未生效 |
文件已跟踪后才添加 .gitignore |
执行 git rm --cached <file> 取消跟踪,再重新提交 |
| Terraform 初始化时提示 provider 下载失败 | 网络代理或防火墙限制 | 配置 HTTP_PROXY 环境变量,或使用 terraform providers mirror 离线缓存 |