背景
1. 什么是Terraform
Terraform是一种开源工具,用于安全高效地预览,配置和管理云基础架构和资源。Terraform的命令行接口(CLI)提供一种简单机制,用于将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。
阿里云作为国内第一家与 Terraform 集成的云厂商,terraform-provider-alicloud目前已经提供了超过 163 个 Resource 和 113 个 Data Source,覆盖计算,存储,网络,负载均衡,CDN,容器服务,中间件,访问控制,数据库等超过35款产品,已经满足了大量大客户的自动化上云需求。
2. Terraform的优势
- 将基础结构部署到多个云
Terraform适用于多云方案,将类似的基础结构部署到阿里云、其他云提供商或者本地数据中心。开发人员能够使用相同的工具和相似的配置文件同时管理不同云提供商的资源。
- 自动化管理基础结构
Terraform能够创建配置文件的模板,以可重复、可预测的方式定义、预配和配置ECS资源,减少因人为因素导致的部署和管理错误。能够多次部署同一模板,创建相同的开发、测试和生产环境。
- 基础架构即代码(Infrastructure as Code)
可以用代码来管理维护资源。允许保存基础设施状态,从而使您能够跟踪对系统(基础设施即代码)中不同组件所做的更改,并与其他人共享这些配置 。
- 降低开发成本
您通过按需创建开发和部署环境来降低成本。并且,您可以在系统更改之前进行评估。
安装和配置Terraform
使用Terraform配置日志审计
操作步骤
一、配置身份信息以及日志审计服务的中心化区域
在环境变量中配置用户身份信息以及日志审计服务的中心Project所在区域
export ALICLOUD_ACCESS_KEY="LTAIUrZCw3********" export ALICLOUD_SECRET_KEY="zfwwWAMWIAiooj14GQ2*************" export ALICLOUD_REGION="cn-huhehaote"
二、操作RAM授权
使用Terraform调用RAM接口完成RAM授权,接口详情请参见alicloud_ram_policy。在调用RAM接口时,需配置审计相关权限(策略内容、角色名称等),详情请参见手动授权日志采集与同步。
三、配置日志采集
- 创建一个terraform工作目录(文件夹),并在该目录下创建一个名为terraform.tf的文件,文件内容为
resource "alicloud_log_audit" "example" { display_name = "tf-audit-test" aliuid = "12345678" }
上述文件内容中,"example"以及"tf-audit-test"用户可自定义,aliuid填写用户自己的阿里云主账号ID。
- 在上一步创建的工作目录下执行terraform init来初始化terraform工作目录
执行完毕后,提示“Terraform has been successfully initialized!”代表初始化成功
- 编辑terraform.tf文件,填写日志审计服务的相关参数,以此配置日志采集。配置样例如下
resource "alicloud_log_audit" "example" { display_name = "tf-audit-test" aliuid = "12345678" variable_map = { "actiontrail_enabled" = "true", "actiontrail_ttl" = "180" } }
上述配置表示开启操作审计(Actiontrail)日志的采集,存储时长(ttl)为180天。
用户还可以配置多账号采集,其配置样例如下
resource "alicloud_log_audit" "example" { display_name = "tf-audit-test" aliuid = "12345678" variable_map = { "actiontrail_enabled" = "true", "actiontrail_ttl" = "180" } multi_account = ["123456789123", "12345678912300123"] }
其中multi_account的值是要采集的多账号的阿里云主账号ID列表。
terraform中日志审计采集配置的完整参数列表参考:Terraform-Aliyun Log Audit
- 执行terraform apply,使terraform.tf中的采集配置生效
输入yes确认应用配置,如果提示Apply complete则表示采集配置应用成功,日志审计服务会按照配置进行日志采集和存储。
四、其他常用操作
- 导入已有审计配置
terraform命令:terraform import alicloud_log_audit.example tf-audit-test
其中example和tf-audit-test用户可自定义修改
执行完毕后,查看terraform工作目录下terraform.tfstate文件内容,即是导入的配置。
注意:
- 如果想要将terraform import导入的配置迁移到terraform.tf配置文件中,需要手动拷贝过去,并对格式作适当调整,满足配置文件的格式要求。
- 如果当前terraform工作目录已经执行过terrraform apply或者terraform import,此时执行terraform import会失败,需要将当前目录下的terraform.tfstate文件删除后再重新导入。
- 查看当前审计配置
terraform命令:terraform show
- 查看当前terraform工作目录下的terraform.tf配置文件与已生效(apply)的配置的差异(资源预览)
terraform命令:terraform plan