简体   繁体   中英

How do I create a Container Registry on Azure with a resource?

My terraform script is giving error like below;

Error: Error creating Container Registry "containerRegistry1" (Resource Group "aks-cluster"): containerregistry.RegistriesClient#Create: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=<nil> Code="AlreadyInUse" Message="The registry DNS name containerregistry1.azurecr.io is already in use. You can check if the name is already claimed using following API: https://docs.microsoft.com/en-us/rest/api/containerregistry/registries/checknameavailability"

on terra.tf line 106, in resource "azurerm_container_registry" "acr": 106: resource "azurerm_container_registry" "acr" {

Whole script is below; I'm beginner at Terraform and tried different combinations but didn't worked. Not sure what can be the problem, is it possible to help?

   variable "prefix" {
  default = "tfvmex"
}

provider "azurerm" {
  version = "=1.28.0"
}

resource "azurerm_resource_group" "rg" {
  name     = "aks-cluster"
  location = "West Europe"
}

resource "azurerm_virtual_network" "network" {
  name                = "aks-vnet"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  address_space       = ["10.1.0.0/16"]
}

resource "azurerm_subnet" "subnet" {
  name                      = "aks-subnet"
  resource_group_name       = azurerm_resource_group.rg.name
  address_prefix            = "10.1.1.0/24"
  virtual_network_name      = azurerm_virtual_network.network.name
}

resource "azurerm_kubernetes_cluster" "cluster" {
  name       = "aks"
  location   = azurerm_resource_group.rg.location
  dns_prefix = "aks"

  resource_group_name = azurerm_resource_group.rg.name
  kubernetes_version  = "1.17.3"

  agent_pool_profile {
    name           = "aks"
    count          = 1
    vm_size        = "Standard_D2s_v3"
    os_type        = "Linux"
    vnet_subnet_id = azurerm_subnet.subnet.id
  }

  service_principal {
    client_id     = "dxxxx"
    client_secret = "xxxx"
  }

  network_profile {
    network_plugin = "azure"
  }
}


resource "azurerm_network_interface" "rg" {
  name                = "${var.prefix}-nic"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  ip_configuration {
    name                          = "testconfiguration1"
    subnet_id                     = azurerm_subnet.subnet.id
    private_ip_address_allocation = "Dynamic"
  }
}


resource "azurerm_virtual_machine" "rg" {
  name                  = "${var.prefix}-vm"
  location              = azurerm_resource_group.rg.location
  resource_group_name   = azurerm_resource_group.rg.name
  network_interface_ids = [azurerm_network_interface.rg.id]
  vm_size               = "Standard_DS1_v2"

  # Uncomment this line to delete the OS disk automatically when deleting the VM
  # delete_os_disk_on_termination = true

  # Uncomment this line to delete the data disks automatically when deleting the VM
  # delete_data_disks_on_termination = true

  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
  storage_os_disk {
    name              = "myosdisk1"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }
  os_profile {
    computer_name  = "hostname"
    admin_username = "testadmin"
    admin_password = "testtest"
  }
  os_profile_linux_config {
    disable_password_authentication = false
  }
  tags = {
    environment = "staging"
  }
}

resource "azurerm_container_registry" "acr" {
  name                     = "containerRegistry1"
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  sku                      = "Premium"
  admin_enabled            = false
  georeplication_locations = ["West Europe"]
}


resource "azurerm_network_security_group" "example" {
  name                = "acceptanceTestSecurityGroup1"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  security_rule {
    name                       = "test123"
    priority                   = 100
    direction                  = "Outbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "*"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
  }

  tags = {
    environment = "Test"
  }
}

Thanks!

How do I create a Container Registry on Azure with a resource?

From your error message, it appears like you are using a non-unique ACR name in the below pasted terraform resource declaration:

resource "azurerm_container_registry" "acr" {
**name                     = "containerRegistry1"**
resource_group_name      = azurerm_resource_group.rg.name
location                 = azurerm_resource_group.rg.location
sku                      = "Premium"
admin_enabled            = false
georeplication_locations = ["West Europe"]
}

Azure CLI has az acr check-name to ensure that ACR name is globally unique.

I think your issue is because your acr name is already globally taken. Not within your subscription, but GLOBALLY.

This is because ACR need a url to be accessed, and the url needs to be unique. That means some other Azure account has taken that name.

Error: Error creating Container Registry "containerRegistry1" (Resource Group "aks-cluster"): containerregistry.RegistriesClient#Create: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=<nil> Code="AlreadyInUse" Message="The registry DNS name containerregistry1.azurecr.io is already in use. You can check if the name is already claimed using following API: https://docs.microsoft.com/en-us/rest/api/containerregistry/registries/checknameavailability"

containerregistry1.azurecr.io >>>> this url needs to be globally unique.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM