使用Terraform分析AWS大数据





5.00/5 (3投票s)
遵循“基础设施即代码”规则,我们从头开始构建了一个真实的示例项目,该项目描述了EMR集群的部署和在那里运行Hive脚本。 它描述了AWS“学习构建”部分的大数据分析与Hadoop项目。
引言
使用代码描述您的基础设施非常重要。 Terraform可以帮助我们实现这一点。
身份验证
不要忘记在您的项目根目录中创建 variables.tf 文件,您应该在那里设置 3 个变量
region
- 您的所有基础设施都将部署在哪里access_key
和secret_key
,适用于可以通过AWS IAM生成的您的用户(下面是示例)
variable "region" {
default = "us-east-2"
}
variable "access_key" {
default = "JFSKLGD8...UFDJKGJS"
}
variable "secret_key" {
default = "sdfs8d9fgEG33VE...343rVFDV3vdfevr"
}
分步脚本
通过AWS解决方案架构师副业考试后,为了不忘记这些东西,我发现了AWS在其入门部分建议逐个实施的项目。我选择了使用Hadoop分析大数据作为第一步。 为了好玩,我决定通过Terraform脚本来描述这个项目。
我想分享这个经验,因为我遇到了一些不简单的问题。
- 首先,我们需要设置Terraform提供商,请参阅provider.tf。
provider "aws" { access_key = "${var.access_key}" secret_key = "${var.secret_key}" region = "${var.region}" }
- 在这里,我们应该创建S3 Bucket和EC2 Key Pair。这两个步骤都非常简单,在s3_bucket.tf和key_pair.tf中进行了相应的描述。
resource "aws_s3_bucket" "s3_bucket" { bucket = "tf-big-data" }
resource "aws_key_pair" "emr_key_pair" { key_name = "tf-big-data" public_key = "ssh-rsa A...w== rsa-key-20180822" }
- 通过控制台创建EMR集群需要点击5-7次,选择几个选项,其余选项可以保留默认值。 它看起来像一个苹果派,但实际上有很多动作发生在幕后。 因此,我们必须关注EMR及其EC2实例的角色和策略。 对于每一个,我们都必须创建2个数据对象(
aws_iam_policy
和aws_iam_policy_document
)和2个资源(aws_iam_role_policy_attachment
和aws_iam_role
)。 这些角色位于roles.tf模块中。 - 另一个重要的部分是关于网络和安全(vpc.tf)。 在这里,我们创建了6个资源
aws_vpc
;aws_subnet
和aws_internet_gateway
在这个vpc中;- 这个vpc中的
aws_route_table
,它通过创建的互联网网关路由; aws_main_route_table_association
,它将我们的vpc和路由表连接起来;- 我们vpc中的
aws_security_group
,它依赖于创建的子网。
- 我们还需要一个
aws_iam_instance_profile
,它保存在emr_cluster.tf模块的末尾。 - 最后,我们可以创建EMR集群本身 emr_cluster.tf。 我们应该在这里描述所有必需的属性,例如:
name
,release_label
,applications
,service_role
(来自步骤 3),log_uri
(来自步骤 2),ec2_attributes
(来自步骤 2, 4, 5), 一个或多个实例组。 我还在那里添加了“step”部分,我在其中放置了 Hive 脚本来执行。
项目的完整代码 在这里。
我很乐意收到关于如何简化此脚本的任何评论或建议。
关注点
当您单击按钮在AWS控制台中创建EMR集群时,幕后真正创建了多少资源是不明显的。 但了解正在发生的事情很有用。