Bicep'te alt kaynaklar için ad ve tür ayarlama

Alt kaynaklar yalnızca başka bir kaynak bağlamında bulunan kaynaklardır. Örneğin, bir sanal makine uzantısısanal makine olmadan var olamaz. Uzantı kaynağı, sanal makinenin alt öğesidir.

Her üst kaynak yalnızca belirli kaynak türlerini alt kaynak olarak kabul eder. Kaynak türlerinin hiyerarşisi Bicep kaynak başvurusunda kullanılabilir.

Bu makalede alt kaynak bildirmenin farklı yolları gösterilmektedir.

Eğitim kaynakları

Adım adım yönergeler aracılığıyla alt kaynaklar hakkında bilgi edinmek isterseniz bkz. Bicep kullanarak alt ve uzantı kaynaklarını dağıtma.

Ad ve tür deseni

Bicep'te alt kaynağı üst kaynak içinde veya üst kaynağın dışında belirtebilirsiniz. Kaynak adı ve kaynak türü için sağladığınız değerler, alt kaynağı nasıl bildirdiğinize bağlı olarak değişir. Ancak, tam ad ve tür her zaman aynı desene çözümür.

Alt kaynağın tam adı şu deseni kullanır:

{parent-resource-name}/{child-resource-name}

Hiyerarşide ikiden fazla düzeyiniz varsa üst adları yinelemeye devam edin:

{parent-resource-name}/{child-level1-resource-name}/{child-level2-resource-name}

Alt kaynağın tam türü şu deseni kullanır:

{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}

Hiyerarşide ikiden fazla düzeyiniz varsa üst kaynak türlerini yinelemeye devam edin:

{resource-provider-namespace}/{parent-resource-type}/{child-level1-resource-type}/{child-level2-resource-type}

Karakterler arasındaki / segmentleri sayarsanız, türdeki segmentlerin sayısı her zaman addaki segment sayısından bir fazla olur.

Üst kaynak içinde

Aşağıdaki örnekte, üst kaynağın resources özelliğine dahil edilen alt kaynak gösterilmektedir.

resource <parent-resource-symbolic-name> '<resource-type>@<api-version>' = {
  <parent-resource-properties>

  resource <child-resource-symbolic-name> '<child-resource-type>' = {
    <child-resource-properties>
  }
}

İç içe kaynak bildirimi, üst kaynağın söz diziminin en üst düzeyinde görünmelidir. Her düzey kendi üst kaynağının alt türü olduğu sürece bildirimler rastgele olarak derin iç içe yerleştirilmiş olabilir.

Üst kaynak türü içinde tanımlandığında, tür ve ad değerlerini eğik çizgi olmadan tek bir kesim olarak biçimlendirirsiniz. Aşağıdaki örnekte, dosya hizmeti için alt kaynağa sahip bir depolama hesabı ve dosya hizmetinin dosya paylaşımı için bir alt kaynağı vardır. Dosya hizmetinin adı olarak, default türü ise olarak fileServicesayarlanır. Dosya paylaşımının adı ve exampleshare türü olarak ayarlanır shares.

resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'examplestorage'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }

  resource service 'fileServices' = {
    name: 'default'

    resource share 'shares' = {
      name: 'exampleshare'
    }
  }
}

Tam kaynak türleri hala Microsoft.Storage/storageAccounts/fileServices ve Microsoft.Storage/storageAccounts/fileServices/sharesşeklindedir. Üst kaynak türünden ve sürümünden varsayıldığı için sağlamazsınız Microsoft.Storage/storageAccounts/ . İç içe kaynak isteğe bağlı olarak söz dizimini <segment>@<version>kullanarak bir API sürümü bildirebilir. İç içe kaynak API sürümünü atlarsa, üst kaynağın API sürümü kullanılır. İç içe kaynak bir API sürümü belirtiyorsa, belirtilen API sürümü kullanılır.

Alt kaynak adları ve exampleshare olarak default ayarlanır, ancak tam adlar üst adları içerir. Sağlamazsınız examplestorage veya default bunların üst kaynaktan olduğu varsayılır.

İç içe yerleştirilmiş bir kaynak, üst kaynağının özelliklerine erişebilir. Aynı üst kaynağın gövdesinde bildirilen diğer kaynaklar, sembolik adları kullanarak birbirine başvurabilir. Üst kaynak, içerdiği kaynakların özelliklerine erişemeyebilir, bu girişim döngüsel bir bağımlılığa neden olabilir.

Üst kaynağın dışında iç içe bir kaynağa başvurmak için, bunu içeren kaynak adı ve işleciyle nitelenmiş :: olması gerekir. Örneğin, bir alt kaynaktan bir özellik çıktısı almak için:

output childAddressPrefix string = VNet1::VNet1_Subnet1.properties.addressPrefix

Dış üst kaynak

Aşağıdaki örnekte, üst kaynağın dışındaki alt kaynak gösterilmektedir. Üst kaynak aynı şablonda dağıtılmadıysa veya birden fazla alt kaynak oluşturmak için döngü kullanmak istiyorsanız bu yaklaşımı kullanabilirsiniz. Değeri üst öğe sembolik adına ayarlanmış alt öğede üst özelliği belirtin. Bu söz dizimiyle yine de tam kaynak türünü bildirmeniz gerekir, ancak alt kaynağın adı yalnızca alt kaynağın adıdır.

resource <parent-resource-symbolic-name> '<resource-type>@<api-version>' = {
  name: 'myParent'
  <parent-resource-properties>
}

resource <child-resource-symbolic-name> '<child-resource-type>@<api-version>' = {
  parent: <parent-resource-symbolic-name>
  name: 'myChild'
  <child-resource-properties>
}

Üst kaynağın dışında tanımlandığında, türü biçimlendirir ve üst türü ve adı içerecek şekilde eğik çizgilerle biçimlendirirsiniz.

Aşağıdaki örnekte, kök düzeyinde tanımlanan bir depolama hesabı, dosya hizmeti ve dosya paylaşımı gösterilmektedir.

resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'examplestorage'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource service 'Microsoft.Storage/storageAccounts/fileServices@2022-09-01' = {
  name: 'default'
  parent: storage
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2022-09-01' = {
  name: 'exampleshare'
  parent: service
}

Alt kaynak sembolik adına başvurmak, üst öğeye başvurmakla aynı şekilde çalışır.

Üst öğe dışındaki tam kaynak adı

Alt kaynağı üst öğe dışında bildirirken tam kaynak adını ve türünü de kullanabilirsiniz. Alt kaynakta üst özelliği ayarlamazsınız. Bağımlılık çıkarılamadığı için açıkça ayarlamanız gerekir.

resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'examplestorage'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource service 'Microsoft.Storage/storageAccounts/fileServices@2022-09-01' = {
  name: 'examplestorage/default'
  dependsOn: [
    storage
  ]
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2022-09-01' = {
  name: 'examplestorage/default/exampleshare'
  dependsOn: [
    service
  ]
}

Önemli

Tam kaynak adını ve türünü ayarlamak önerilen yaklaşım değildir. Diğer yaklaşımlardan birini kullanmak kadar güvenli bir tür değildir. Daha fazla bilgi için bkz. Linter kuralı: üst özelliği kullanma.

Sonraki adımlar