Terraform博客文章,參考翻譯
Terraform – HashiCorp 全球最领先的云基础设施自动化工具
http://www.hashicorp.com/blog/terraform.html
以下是对博客投稿的日语翻译。仅供参考。
变形术
今天,我们宣布推出 Terraform。Terraform 是一款用于安全高效地构建、组合和运行基础架构的工具。从物理服务器到容器,再到SaaS产品,Terraform 能够创建和构建服务和应用程序所需的所有配置物。
使用Terraform可以完全将基础设施以代码形式描述,即使使用多个服务提供商。例如,服务器可以使用AWS,DNS可能使用CloudFlare,数据库可能在Heroku上运行。Terraform可以创建跨越这些供应商的资源。
使用Terraform,您可以系统化您在基础架构方面的知识。它不仅仅是一个新的工具,而是提供一个安全执行基础架构更改和更新的工作流程。
我们非常兴奋地宣布公开 Terraform。Terraform 的潜力无限,我们今天所提供的仅仅是一个开始而已。
请细读以下内容。
Terraform 的操作行为
这里将展示如何简单而强大地处理和运用Terraform的示例。有关更详细的技术细节,请查看详细文档。
Terraform的配置是用一种称为标记语言(Markup Language)的高级表达语法来描述基础设施资源。以下是一个配置示例:
resource "digitalocean_droplet" "web" {
name = "tf-web"
size = "512mb"
image = "centos-5-8-x32"
region = "sfo1"
}
resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = "${digitalocean_droplet.web.ipv4_address}"
type = "A"
}
设置是声明性的。Terraform 会自动推测依赖关系,因此可以尽可能地并行化基础设施的依赖关系。
这个例子展示了Terraform如何组合多个服务提供商的资源。我们在DigitalOcean上创建了一个droplet,并且为了向DNSimple添加DNS记录,我们创建了这个droplet。通过代码来配置基础架构是一种新的、非常强大的方式。
为了构建基础设施,只需执行terraform apply。
$ terraform apply
digitalocean_droplet.web: Creating...
image: "" => "centos-5-8-x32"
name: "" => "tf-web"
region: "" => "sfo1"
size: "" => "512mb"
digitalocean_droplet.web: Creation complete
dnsimple_record.hello: Creating...
domain: "" => "example.com"
name: "" => "test"
type: "" => "A"
value: "" => "104.131.142.132"
dnsimple_record.hello: Creation complete
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
按照计划进行,安全地反复执行。
与执行计划的安全迭代
Terraform具有重要功能,可安全地重复基础架构。即“执行计划”。执行计划会预先规划Terraform对基础架构所做的更改。然后该计划会被保存下来,以供应用(apply),接下来只需Terraform执行计划即可。
由于 Terraform 精确地了解您想对基础设施进行哪些更改(希望达到的状态),因此您可以确定 Terraform 不会执行任何意外的操作。
举个例子,在上述构建示例中,可以使用Terraform来改变DigitalOcean droplet的大小。前面的符号~表示的是,而不是销毁和更新资源,Terraform选择更新它们。
$ terraform plan
~ digitalocean_droplet.web
size: "512mb" => "1gb"
在考虑了是否存在类似功能的工具后,Terraform是第一个这样的工具。我们认为这正是在实际系统中进行更改时所需要的工具。
令人驚訝的潛力
Terraform 可以执行比它表面看起来更多的任务。从历史上看,类似 Terraform 的工具只能构建低级别的计算、存储和网络资源,但是 Terraform 可以填补多个服务提供商之间的差异,因此 Terraform 可执行更多的处理。
以下的例子使用 Terraform 来描述在 Heroku 上运行的应用程序的所有构建组件。其中包括 Heroku 插件、应用程序设置和 DNS 条目。
resource "heroku_app" "web" {
name = "terraform-www"
config_vars {
GITHUB_TOKEN = "TOKEN"
TF_VERSION = "0.1"
}
}
resource "heroku_domain" "web" {
app = "${heroku_app.web.name}"
hostname = "www.terraform.io"
}
resource "heroku_addon" "webhooks" {
app = "${heroku_app.web.name}"
plan = "deployhooks:http"
config {
url = "http://hooks.hashicorp.com/heroku"
}
}
以上是一个使用Terraform来实际构建的例子,请在Terraform的网站上查看详细信息。
只需要一个选项, 其中 HashiCorp 进行了创建。
HashiCorp 会构建解决 DevOps 问题的技术且有趣的解决方案。在技术选择上,我们不取捷径并且重要的是,使用我们的工具并不意味着取得了经验上的捷径。Terraform 也不能代替。
Terraform 是我们构建的第五个工具,迄今为止我们提供了 Vagrant、Packer、Serf、Consul。虽然 Terraform 可以与我们的其他工具很好地配合使用,但并不一定需要进行协作。
更加详细
请在下面的页面中进行下一步操作。
Intro 導入
Comparison to other software 他のソフトとの比較
GitHub