我在过去的一段时间内一直在尝试Terraform,这似乎是一种非常有力的工具,用于快速设置/拆除云基础架构。
我正在尝试锻炼,尽管除了您的VM等初始设置之外,在现实世界中的实际用例是什么?初始设置完成后,您是否使用厨师之类的东西来管理基础架构?似乎Terraform不会经常用于不断设置和拆除集群或数据中心的小型公司。
有人可以将我设置在正确的方向上,我检查了Hashicorps文档,但是一旦建立了基础架构,我仍然不清楚现实世界的情况是什么。
您可以使用Terraform来设置资源,修改,删除它们。您只需要编写用于管理资源的Terraform文件/代码/模板。此Terraform代码帮助我们管理资源
例如。您可以使用Terraform模板/文件/代码在AWS Cloud上创建EC2实例资源,在不需要时修改并删除。在这里,AWS被称为提供商。
Terraform支持许多提供商。
基本模板想要如下。
此模板将在AWS提供商上创建VPC资源。
变量.tf
variable "access_key" {
description = "Access key to AWS console"
}
variable "secret_key" {
description = "Secret key to AWS console"
}
variable "region" {
description = "Region of AWS VPC"
}
Terraform.tfvars
region = "eu-west-3"
access_key = "YOUR-ACCESS-KEY"
secret_key = "YOUR-SECRET-KEY"
main.tf
provider "aws" {
region = "${var.region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "gateway" {
vpc_id = "${aws_vpc.vpc.id}"
}
resource "aws_route" "route" {
route_table_id = "${aws_vpc.vpc.main_route_table_id}"
destination_cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.gateway.id}"
}
data "aws_availability_zones" "available" {}
resource "aws_subnet" "main" {
count = "${length(data.aws_availability_zones.available.names)}"
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "10.0.${count.index}.0/24"
map_public_ip_on_launch = true
availability_zone = "${element(data.aws_availability_zones.available.names, count.index)}"
}
命令:
terraform init
terraform plan
terraform apply
我建议您通过Terraform的官方网站。他们的网站上有很好的文档。
Terraform可以按照所需的方式来设置基础架构。它可用于在较小的时间内在较小的时间内设置节点群集,这是耗时的。写下Terraform模板后,您可以将其运行以立即设置节点。使用Terraform的最大优点是它支持AWS,Microsoft Azure,Google Cloud,OpenStack等各种云提供商,并且是开源。
如果您有一个动态的环境,您需要在其中进行扩展,通常肯定会帮助您简化工作。例如,设置Mesos或DC/OS群集。如果您想增加中介体群集中的节点数量,则只需更新Terraform模板文件中的实例数量即可。设置群集后,您可以利用任何配置管理工具(例如Chef)应用配置。
我建议阅读博客系列,这很好地解释了为什么需要Terraform。
Terraform是IaaS(基础架构作为服务)工具。它用于自动化各种云提供商(超过75)上的下文规定。它已成为IAAC的行业标准。
https://www.terraform.io/docs/providers/index.html
为什么要Terraform?
- 免费成本
- 手动任务是容易出错的,不一致的
- 多个平台支持
- 易于编写(基于JSON)
- 与配置管理工具(Ansible)轻松集成。
启动AWS的示例脚本-EC2实例
provider "aws" {
region = "us-west-2"
access_key = ""
secret_key = ""
}
resource "aws_instance" "myec2" {
ami = "ami-0e34e7b9ca0ace12d"
instance_type= "t2.micro"
}