Terraform如何使用



我在过去的一段时间内一直在尝试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"
}

最新更新