【发布时间】:2020-01-15 12:29:28
【问题描述】:
我一直在尝试使用 terraform 和 AWS,例如:
...
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}
resource "aws_instance" "bastion" {
ami = "${var.image}"
instance_type = "${var.inst_type}"
key_name = "My Keys"
subnet_id = "${aws_subnet.my_public_subnet.id}"
vpc_security_group_ids = [
"${aws_security_group.my_vpc_security_group.id}"
]
tags={
Name="${var.inst_name}"
}
}
...
但现在我想远离 AWS,写一些与 AWS 无关但适用于所有云提供商的东西,理想情况下。有没有办法做到这一点?我真的很感激一些正确方向的指示。
===编辑===
也许我需要进一步解释一下:我并没有对例如所有内容进行全面概括。 AWS API。但是,由于大多数(如果不是全部)云环境允许您使用 Linux 创建 VM,并且还可以通过 terraform 设置一些初始配置,因此应该可以对提供程序的特定部分进行参数化,以便我可以编写基本的基础设施结构代码并指定我是否使用 AWS、Azure、Google 等作为一组参数。我的问题是我使用 terraform 的时间还不够长,无法了解如何做到这一点。
【问题讨论】:
-
跳到解释的最后,答案是“否”的原因是这些云提供商中的每一个都有独特的 API。您将需要一个可以抽象出差异的提供者来实现这一目标。我想这将类似于以多种语言执行相同代码的多语言脚本之一。
标签: terraform