Terraform如何使用它?

时间:2017-12-07 16:52:09

标签: terraform

我一直在试验Terraform,它似乎是一个非常强大的工具,用于快速设置/拆除云基础架构。

我试图找出除了初始设置VM之外的现实世界中的实际用例是什么?初始设置完成后,您是否使用Chef之类的东西来管理基础架构?对于那些没有经常设置和拆除集群或数据中心的小公司来说,Terraform似乎不会经常使用。

有人能指引我朝着正确的方向前进吗,我已经检查了Hashicorps的文档但我仍然不清楚,一旦你的基础设施建立起来,现实世界的场景是什么样的。

3 个答案:

答案 0 :(得分:1)

Terraform可用于按您希望的方式设置您的基础架构。它可以用于在比手动操作更少的时间内设置节点集群,这是耗时的。写下terraform模板后,您可以运行它来立即设置节点。使用Terraform的最大优势是它支持AWS,Microsoft Azure,Google Cloud,Openstack等各种云提供商,并且它是开源的。

如果您有一个动态环境,您需要放大和缩小,通常绝对可以帮助您轻松完成工作。例如,设置Mesos或DC / OS群集。如果要增加mesos群集中的节点数,只需更新terraform模板文件中的实例数。设置群集后,您可以使用任何配置管理工具(例如chef)来应用配置。

我建议阅读blog series,这解释了为什么需要Terraform。

答案 1 :(得分:1)

您可以使用terraform设置资源,进行修改,删除它们。您只需要编写用于管理资源的terraform文件/代码/模板即可。这个Terraform代码可帮助我们管理资源

例如您可以使用Terraform模板/文件/代码在AWS Cloud上创建EC2实例资源,进行修改并在不需要时删除。在这里,AWS被称为提供者。

Terraform支持许多提供商。

基本模板如下。

此模板将在AWS提供程序上创建VPC资源。

variables.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的官方Site。他们的网站上有不错的文档。

答案 2 :(得分:0)

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"
}