如何在阿里云上的Terraform语法上设置区域?

时间:2019-01-01 19:57:07

标签: terraform alibaba-cloud

摘自terraform官方文档:

Attributes Reference
The following attributes are exported in addition to the arguments 
listed above:
regions - A list of regions. Each element contains the following 
   attributes:
   id - ID of the region.
   local_name - Name of the region in the local language.

语法是这样的:

value = "${data.alicloud_regions.current_region_ds.regions.0.id}"

我的第一个问题是我在哪里可以获得我的local_name?

我想我无法从阿里云文档中找到它

第二个问题是地区ID在哪里?

value = "${data.alicloud_regions.current_region_ds.regions.ap-southeast-5.mylocal_name}"

value = "${data.alicloud_regions.current_region_ds.regions.mylocal_name.ap-southeast-5}"

2 个答案:

答案 0 :(得分:1)

根据Terraform documentation,您应该坚持使用Alibaba Cloud Regions ID

您不一定需要提供区域ID本身。看一下VPC Terraform sample,在其中您仅输入可用区ID https://github.com/terraform-providers/terraform-provider-alicloud/blob/master/examples/vpc/variables.tf

variable "availability_zones" {
  default = "cn-beijing-c"
}

还有许多其他有用的示例代码,说明如何设置阿里云资源。

https://github.com/terraform-providers/terraform-provider-alicloud/tree/master/examples

如果您需要更具体的答案,请告诉我们您要达到的目标。

答案 1 :(得分:0)

您需要在配置AliCloud Provider本身时设置区域。

provider "alicloud" {
  access_key = "${var.accesskey}"
  secret_key = "${var.secretkey}"
  region     = "${var.region}"
}

注意:Alicloud提供了几种输入凭据进行身份验证的方法。它们是静态的和动态的。为了使用静态方法进行身份验证,必须在凭据中列出区域ID,但是如果使用的是动态方法,则可以从ALICLOUD_REGION环境变量中获取。

现在,对您的问题

1)最初,您在配置中指定了区域。您将通过遵循

获得配置的区域
data "alicloud_regions" "current_region_ds" {
  current = true
}

output "current_region_id" {
  value = "${data.alicloud_regions.current_region_ds.regions.0.id}"
} 

使用current = true时,它将返回当前区域,否则您必须使用name = region参数手动定义。

value = "${data.alicloud_regions.current_region_ds.regions.0.id}"

它将给出指定区域的ID。如果要使用local_name而不是id,则将id更改为local_name

value = "${data.alicloud_regions.current_region_ds.regions.0.local_name}"

注意:最好使用id而不是local_name

2)您指定的两种方法都是错误的。您已经在要访问的配置中指定了区域。

例如,

data "alicloud_regions" "current_region_ds" {
      name="cn-beijing"
    }

然后访问它,

value = "${data.alicloud_regions.current_region_ds.regions.0.id}"

value = "${data.alicloud_regions.current_region_ds.regions.0.local_name}"