Как ссылаться на идентификатор безопасности сети Azure в модуле в Terraform? - PullRequest
0 голосов
/ 18 декабря 2018

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

main.tf в корне

module "vm1" {
source = "/modules/vm/"
NSG = ????
}

tfvars

nic_name = apache_vm_nic
location = West Europe
........

modules / vm / main.tf

.........

resource "azurerm_network_interface" "myterraformnic" {
name                = "var.nic_name"
location            = "var.location"
resource_group_name = "${azurerm_resource_group.myterraformgroup.name}"
network_security_group_id = { WHAT DO I PUT HERE? }

ip_configuration {
    name                          = "myNicConfiguration"
    subnet_id                     = "${azurerm_subnet.myterraformsubnet.id}"
    private_ip_address_allocation = "dynamic"
    public_ip_address_id          = "${azurerm_public_ip.myterraformpublicip.id}"
}
}


resource "azurerm_network_security_group" "apache-nsg" {
name                = "myNetworkSecurityGroup"
location            = "eastus"
resource_group_name = "${azurerm_resource_group.myterraformgroup.name}"

security_rule {
    name                       = "SSH"
    priority                   = 1001
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "22"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
}
}

resource "azurerm_network_security_group" "nginx-nsg" {
name                = "myNetworkSecurityGroup"
location            = "eastus"
resource_group_name = "${azurerm_resource_group.myterraformgroup.name}"

security_rule {
    name                       = "SSH"
    priority                   = 1001
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "22"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
}
}

в файле module / main.tf в network_security_group_id, я не могу точно поместить $ {azurerm_network_security_group.apache-nsg.id} или $ {azurerm_network_security_group.nginx-nsg.id}.Так что я могу поставить, чтобы я мог повторно использовать этот модуль для всех виртуальных машин?

Спасибо

1 Ответ

0 голосов
/ 18 декабря 2018

Ваш вопрос мне не совсем понятен, но я собираюсь предположить, что вы хотите создать общую группу безопасности сети, которую вы хотите назначить нескольким экземплярам вашего модуля VM.

Если вы хотите передать идентификатор группы безопасности из main.tf at root, вы должны сделать следующее: Создать ресурс группы безопасности сети вне вашего модуля, например, внутри main.tf at root, так же, как вы создали нескольковнутри вашего модуля VM (для Apache и Nginx), так что main.tf at root выглядит следующим образом:

resource "azurerm_network_security_group" "some_generic_vm_nsg" {
  ....
}

module "vm1" {
  source = "/modules/vm/"
  NSG = "${azurerm_network_security_group.some_generic_vm_nsg.id}"
}

Обратите внимание, что теперь мы передаем идентификатор nsg вашему экземпляру модуля VM.Однако ваш модуль VM еще не объявил переменную NSG.Поэтому создайте файл modules/vm/variables.tf и вставьте в него следующее:

variable "NSG" {
  type = "string"
}

А внутри вашего модуля network_security_group_id = { WHAT DO I PUT HERE? } становится:

network_security_group_id = "${var.NSG}"

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

Вы можете изучить эту документацию для получения более подробной информации.

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