Tworzenie zasobów sieci wirtualnej przy użyciu Bicep

Wiele wdrożeń platformy Azure wymaga wdrożenia i skonfigurowania zasobów sieciowych. Możesz użyć narzędzia Bicep do zdefiniowania zasobów sieciowych platformy Azure.

Sieci wirtualne i podsieci

Zdefiniuj sieci wirtualne, tworząc zasób o typie Microsoft.Network/virtualNetworks.

Konfigurowanie podsieci przy użyciu właściwości podsieci

Sieci wirtualne zawierają podsieci, które są logicznymi grupami adresów IP w sieci wirtualnej. Istnieją dwa sposoby definiowania podsieci w Bicep: przy użyciu subnets właściwości w zasobie sieci wirtualnej i tworząc zasób podrzędny o typie Microsoft.Network/virtualNetworks/subnets.

Ostrzeżenie

Unikaj definiowania podsieci jako zasobów podrzędnych. Takie podejście może spowodować przestój zasobów podczas kolejnych wdrożeń lub nieudanych wdrożeń.

Najlepiej zdefiniować podsieci w definicji sieci wirtualnej, jak w tym przykładzie:

Poniższy przykład jest częścią większego przykładu. Aby uzyskać plik Bicep, który można wdrożyć, zobacz kompletny plik.

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: virtualNetworkName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: subnet1Name
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: subnet2Name
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Chociaż obie metody umożliwiają definiowanie i tworzenie podsieci, istnieje ważna różnica. Podczas definiowania podsieci przy użyciu zasobów podrzędnych po raz pierwszy zostanie wdrożony plik Bicep, sieć wirtualna zostanie wdrożona. Następnie po zakończeniu wdrażania sieci wirtualnej każda podsieć zostanie wdrożona. Sekwencjonowanie odbywa się, ponieważ usługa Azure Resource Manager wdraża poszczególne zasoby oddzielnie.

Podczas ponownego wdrażania tego samego pliku Bicep następuje ta sama sekwencja wdrażania. Jednak sieć wirtualna jest wdrażana bez żadnych podsieci skonfigurowanych na nim, ponieważ subnets właściwość jest skutecznie pusta. Następnie po ponownym skonfigurowaniu sieci wirtualnej zasoby podsieci zostaną ponownie wdrożone, co spowoduje ponowne skonfigurowanie każdej podsieci. W niektórych sytuacjach takie zachowanie powoduje utratę łączności podczas wdrażania zasobów w sieci wirtualnej. W innych sytuacjach platforma Azure uniemożliwia modyfikowanie sieci wirtualnej, a wdrożenie kończy się niepowodzeniem.

Uzyskiwanie dostępu do identyfikatorów zasobów podsieci

Często trzeba odwoływać się do identyfikatora zasobu podsieci. Jeśli używasz subnets właściwości do definiowania podsieci, możesz użyć existing słowa kluczowego , aby uzyskać również silnie wpisane odwołanie do podsieci, a następnie uzyskać dostęp do właściwości podsieci id :

Poniższy przykład jest częścią większego przykładu. Aby uzyskać plik Bicep, który można wdrożyć, zobacz kompletny plik.

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: virtualNetworkName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: subnet1Name
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: subnet2Name
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }

  resource subnet1 'subnets' existing = {
    name: subnet1Name
  }

  resource subnet2 'subnets' existing = {
    name: subnet2Name
  }
}

output subnet1ResourceId string = virtualNetwork::subnet1.id
output subnet2ResourceId string = virtualNetwork::subnet2.id

Ponieważ w tym przykładzie użyto existing słowa kluczowego w celu uzyskania dostępu do zasobu podsieci, zamiast definiować pełny zasób podsieci, nie ma ryzyka opisanego w poprzedniej sekcji.

Możesz również połączyć existing słowa kluczowe i scope , aby odwoływać się do sieci wirtualnej lub zasobu podsieci w innej grupie zasobów.

Grupy zabezpieczeń sieci

Sieciowe grupy zabezpieczeń są często używane do stosowania reguł kontrolujących przychodzący i wychodzący przepływ ruchu z podsieci lub interfejsu sieciowego. Może stać się uciążliwe, aby zdefiniować dużą liczbę reguł w pliku Bicep i udostępniać reguły w wielu plikach Bicep. Rozważ użycie wzorca pliku zmiennej udostępnionej podczas pracy ze złożonymi lub dużymi sieciowymi grupami zabezpieczeń.

Prywatne punkty końcowe

Prywatne punkty końcowe muszą zostać zatwierdzone. W niektórych sytuacjach zatwierdzenie odbywa się automatycznie. Jednak w innych scenariuszach należy zatwierdzić punkt końcowy przed jego użyciem.

Zatwierdzenie prywatnego punktu końcowego jest operacją, więc nie można wykonać jej bezpośrednio w kodzie Bicep. Można jednak wywołać operację za pomocą skryptu wdrażania . Alternatywnie można wywołać operację poza plikiem Bicep, na przykład w skrypie potoku.