AWS Terraform Section1 - 简介

简介

官网 https://developer.hashicorp.com/terraform/intro

Infrastructure as Code tool.

Terraform本质上是通过调用API实现对各种服务器资源的CRUD操作。

image

Terraform主要是用于架构的编排,譬如创建EC2,设置VPC,安装docker等,而且其中的顺序必须要遵循一定的顺序。

另一个IaC工具是Ansible。Ansible可以用来配置基础设置、部署应用、安装和更新应用等

Terraform创建并测试完后,可以精确自动化地复制更多的环境。

image

image

安装Terraform

1
brew install terraform

查看Terraform版本号

1
terraform -v

安装结果如下

image

初始化AWS环境

  • 连接到AWS账户
  • 创建VPC
  • 创建Subnet

本地环境设置

创建名为Terraformed​的文件夹,并在其中创建文件main.tf

*.tf​是Terraform文件的标准命名方式

image

使用Visual Studio Code打开main.tf​,并且安装Terraform官方插件。

image

安装完插件以后可以在VS Code中更方便地编辑Terraform文件

注册AWS云账号

注册完毕后可以免费使用AWS云计算资源

image

注册完毕后会自动创建root用户,此时应该通过IAM创建一个权限较低的管理员账户,并通过管理员账户管理普通账户。

image

image

添加group或者选择”Attach existing policies directly”勾选需要赋予的权限

image

Terraform连接到AWS

image

Providers作为Terraform中最重要的关键字,用于标识需要调用的远程云服务供应商API

Providers列表如下,支持许多的云服务供应商

支持的资源供应商列表 https://registry.terraform.io/browse/providers

包括云服务、Devops工具(Ansible、Github、Grafana、Jenkins、Kubernetes …)等

image

通过以下*.tf文件,将以编程的方式连接到AWS服务

AWS语法和源码示例

https://registry.terraform.io/providers/hashicorp/aws/latest

https://registry.terraform.io/providers/hashicorp/aws/latest/docs

1
2
3
4
5
6
7
8
9
provider "aws" {
region = "eu-west-3" # 取决于购买的EC2实例所属的区域

/**
不推荐hardcode明文的key
**/
access_key = ""
secret_key = ""
}

*.tf文件是一个定义文件,编写完毕后需要执行以下命令安装相应的依赖(类似npm/maven instal)

进入*.tf​所在的文件夹

1
terraform init

运行结果

image

可以看到新文件生成

image

查看terraform状态

执行 terraaform state,以生成tfstate​文件

该文件可以记录当前terraform资源的状态列表

image

image

terraform state的子命令

image

简介

官网 https://developer.hashicorp.com/terraform/intro

Infrastructure as Code tool.

Terraform本质上是通过调用API实现对各种服务器资源的CRUD操作。

image

Terraform主要是用于架构的编排,譬如创建EC2,设置VPC,安装docker等,而且其中的顺序必须要遵循一定的顺序。

另一个IaC工具是Ansible。Ansible可以用来配置基础设置、部署应用、安装和更新应用等

image

Terraform创建并测试完后,可以精确自动化地复制更多的环境。

安装Terraform

1
brew install terraform

查看Terraform版本号

1
terraform -v

安装结果如下

image

初始化AWS环境

  • 连接到AWS账户
  • 创建VPC
  • 创建Subnet

本地环境设置

创建名为Terraformed​的文件夹,并在其中创建文件main.tf

*.tf​是Terraform文件的标准命名方式

image

使用Visual Studio Code打开main.tf​,并且安装Terraform官方插件。

image

安装完插件以后可以在VS Code中更方便地编辑Terraform文件

注册AWS云账号

注册完毕后可以免费使用AWS云计算资源

image

注册完毕后会自动创建root用户,此时应该通过IAM创建一个权限较低的管理员账户,并通过管理员账户管理普通账户。

image

image

添加group或者选择”Attach existing policies directly”勾选需要赋予的权限

image

Terraform连接到AWS

image

Providers作为Terraform中最重要的关键字,用于标识需要调用的远程云服务供应商API

Providers列表如下,支持许多的云服务供应商

支持的资源供应商列表 https://registry.terraform.io/browse/providers

包括云服务、Devops工具(Ansible、Github、Grafana、Jenkins、Kubernetes …)等

image

通过以下*.tf文件,将以编程的方式连接到AWS服务

AWS语法和源码示例

https://registry.terraform.io/providers/hashicorp/aws/latest

https://registry.terraform.io/providers/hashicorp/aws/latest/docs

1
2
3
4
5
6
7
8
9
provider "aws" {
region = "eu-west-3" # 取决于购买的EC2实例所属的区域

/**
不推荐hardcode明文的key
**/
access_key = ""
secret_key = ""
}

*.tf文件是一个定义文件,编写完毕后需要执行以下命令安装相应的依赖(类似npm/maven instal)

进入*.tf​所在的文件夹

1
terraform init

运行结果

image

可以看到新文件生成

image

Terraform常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
terraform init       # 初始化terraform文件

terraform plan # 比对当前环境与tf文件的差异

terraform apply # 将tf文件的设置应用到aws

terraform destroy -target [resource_type] [resource_name] # 删除资源

terraform apply -auto-approve # 无需二次确认,立即应用tf配置文件

terraform destroy # 删除全部基础设施

terraform state # 生成terraform状态文件

terraform state list # tfstate 显示文件中所有组件

terraform state show [组件名] # 显示tfstate文件中某个组件的terraform完整语法

terraform version # 显示terraform版本

terraform fmt # 格式化tf文件

terraform validate # 验证terraform文件是否正确

terraform show # 查看terraform状态

terraform workspace # 管理terraform工作空间

terraform get # 下载 & 安装(或升级)模块

terraform import # 导入模块

0%