Могу ли я выбрать имена для автоматически созданных ресурсов в Terraform?

Я использую Terraform для создания кластера служб Azure Kubernetes (среди прочего), когда я запускаю Terraform, он автоматически генерирует различные ресурсы, используемые кластером AKS. Я могу выбрать собственное имя в кластере AKS, но автоматически сгенерированным ресурсам даются имена, близкие к случайным.

Есть ли способ выбрать мои собственные имена для этих автоматически сгенерированных ресурсов в Terraform?

Пример:

resource "azurerm_kubernetes_cluster" "compute" {
    name                = "MyCluster"
    location            = "westeurope"
    resource_group_name = "my-rg"
    dns_prefix          = "something"

    linux_profile {
         admin_username = "azureuser"

    agent_pool_profile {
        name            = "default"
        count           = "1"
        vm_size         = "Standard_NC6"
        os_type         = "Linux"
   }
}

Это приводит к:

myCluster - Сервис Kubernetes

aks-agentpool-74438003-nsg - Группа безопасности сети

aks-agentpool-74438003-routetable - Таблица маршрутов

aks-default-74438003-0 - Виртуальная машина

aks-default-74438003-0_OsDisk_1_5d379bc3205545e1bcd3f88ec9605- Диск

aks-default-74438003-nic-0 - Сетевой интерфейс

aks-vnet-74438003 - Виртуальная сеть

default-availabilitySet-74438003 - Доступность установлена

Например, могу ли я выбрать, нужен ли мне префикс aks? А что это за номер, повторяющийся номер? Могу ли я настроить их в основном?


person NorwegianClassic    schedule 26.09.2018    source источник
comment
Можете ли вы назвать код, который вы используете в настоящее время, и имена, которые он генерирует?   -  person Eric M. Johnson    schedule 27.09.2018
comment
Код добавил мистер @EricJohnson!   -  person NorwegianClassic    schedule 27.09.2018
comment
Я не эксперт по Azure, но вы пытались определить ресурсы, которые хотите назвать сами, и ссылаться на эти ресурсы соответственно? Ознакомьтесь с примером использования - Advanced Networking Terraform Docs. Здесь вы можете видеть, что, например, группы безопасности сети определены и упоминаются позже.   -  person Stefan    schedule 27.09.2018
comment
Это не работает.   -  person NorwegianClassic    schedule 08.10.2018


Ответы (1)


Вы можете настроить префиксы или имена других ресурсов.
Однако только в том случае, если вы сами создаете эти ресурсы и явно на них ссылаетесь.

См. эту страницу документации Azure.

Пример кода на основе этот модуль AKS от Github

variable "my-prefix" {
  default = "myCluster"
  description = "The prefix name to give to all my resources"
}

variable "location" {
  default     = "West Europe"
  description = "The Azure Region in which all resources in this example should be provisioned"
}

variable "kubernetes_client_id" {
  description = "The Client ID for the Service Principal to use for this Managed Kubernetes Cluster"
}

variable "kubernetes_client_secret" {
  description = "The Client Secret for the Service Principal to use for this Managed Kubernetes Cluster"
}

variable "public_ssh_key_path" {
  description = "The Path at which your Public SSH Key is located. Defaults to ~/.ssh/id_rsa.pub"
  default     = "~/.ssh/id_rsa.pub"
}

resource "azurerm_resource_group" "test" {
  name     = "${var.my-prefix}-anw-resources"
  location = "${var.location}"
}

resource "azurerm_route_table" "test" {
  name                = "${var.my-prefix}-routetable"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"

  route {
    name                   = "default"
    address_prefix         = "10.100.0.0/14"
    next_hop_type          = "VirtualAppliance"
    next_hop_in_ip_address = "10.10.1.1"
  }
}

resource "azurerm_virtual_network" "test" {
  name                = "${var.my-prefix}-network"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"
  address_space       = ["10.1.0.0/16"]
}

resource "azurerm_subnet" "test" {
  name                 = "${var.my-prefix}-subnet"
  resource_group_name  = "${azurerm_resource_group.test.name}"
  address_prefix       = "10.1.0.0/24"
  virtual_network_name = "${azurerm_virtual_network.test.name}"

  # this field is deprecated and will be removed in 2.0 - but is required until then
  route_table_id = "${azurerm_route_table.test.id}"
}

resource "azurerm_network_security_group" "test" {
  name                = "${var.my-prefix}-nsg"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_virtual_network.test.name}"

  security_rule {
    name                       = "port_80"
    priority                   = 100
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "80"
    source_address_prefixes    = "0.0.0.0/0"
    destination_address_prefix = "*"
  }
}

resource "azurerm_subnet_route_table_association" "test" {
  subnet_id      = "${azurerm_subnet.test.id}"
  route_table_id = "${azurerm_route_table.test.id}"
}

resource "azurerm_subnet_network_security_group_association" "test" {
  subnet_id                 = "${azurerm_subnet.test.id}"
  network_security_group_id = "${azurerm_network_security_group.test.id}"
}

resource "azurerm_kubernetes_cluster" "test" {
  name                = "${var.my-prefix}-anw"
  location            = "${azurerm_resource_group.test.location}"
  dns_prefix          = "${var.my-prefix}-anw"
  resource_group_name = "${azurerm_resource_group.test.name}"

  linux_profile {
    admin_username = "acctestuser1"

    ssh_key {
      key_data = "${file(var.public_ssh_key_path)}"
    }
  }

  agent_pool_profile {
    name            = "agentpool"
    count           = "2"
    vm_size         = "Standard_DS2_v2"
    os_type         = "Linux"
    os_disk_size_gb = 30

    # Required for advanced networking
    vnet_subnet_id = "${azurerm_subnet.test.id}"
  }

  service_principal {
    client_id     = "${var.kubernetes_client_id}"
    client_secret = "${var.kubernetes_client_secret}"
  }

  network_profile {
    network_plugin = "azure"
  }
}
person J00MZ    schedule 19.02.2019