Как настроить регион по синтаксису terraform для Alibaba Cloud? - PullRequest
0 голосов
/ 01 января 2019

Из официальной документации 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}"

Мой первый вопрос: где я могу получить свое локальное имя?

Я думаю, что я не могу найти его в облачной документации alibaba

И второй вопрос: где разместить идентификатор региона?

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 голосов
/ 26 января 2019

Вам необходимо настроить свой регион во время настройки самого поставщика AliCloud.

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

Примечание. Alicloud предлагает несколько способов ввода учетных данных для аутентификации.Они статичны и динамичны.Идентификатор региона должен быть указан в учетных данных для аутентификации с использованием статического метода, но если мы используем динамический метод, он может быть получен из переменных среды 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}"

Это даст идентификатор указанного региона.Если вы хотите использовать 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}"
0 голосов
/ 02 января 2019

Согласно документации Terraform вы должны придерживаться ID облачных регионов Alibaba .

Вам не обязательно указывать сам идентификатор региона.Взгляните на пример VPC Terraform , в котором вы вводите просто ID зоны доступности https://github.com/terraform-providers/terraform-provider-alicloud/blob/master/examples/vpc/variables.tf

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

Есть много других полезных примеров с кодом, как настроить ресурсы Alibaba Cloud.

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

Если вам нужен более конкретный ответ, сообщите нам, чего вы пытаетесь достичь.

...