Microsoft.DBforPostgreSQL sunucuları

Bicep kaynak tanımı

Sunucuların kaynak türü, aşağıdakileri hedefleyen işlemlerle dağıtılabilir:

  • kaynak grupları - Bkz. kaynak grubu dağıtım komutları

Her API sürümünde değiştirilen özelliklerin listesi için bkz. değişiklik günlüğü.

Kaynak biçimi

Microsoft.DBforPostgreSQL/servers kaynağı oluşturmak için aşağıdaki Bicep'i şablonunuza ekleyin.

resource symbolicname 'Microsoft.DBforPostgreSQL/servers@2017-12-01' = {
  identity: {
    type: 'string'
  }
  location: 'string'
  name: 'string'
  properties: {
    infrastructureEncryption: 'string'
    minimalTlsVersion: 'string'
    publicNetworkAccess: 'string'
    sslEnforcement: 'string'
    storageProfile: {
      backupRetentionDays: int
      geoRedundantBackup: 'string'
      storageAutogrow: 'string'
      storageMB: int
    }
    version: 'string'
    createMode: 'string'
    // For remaining properties, see ServerPropertiesForCreateOrServerProperties objects
  }
  sku: {
    capacity: int
    family: 'string'
    name: 'string'
    size: 'string'
    tier: 'string'
  }
  tags: {
    {customized property}: 'string'
  }
}

ServerPropertiesForCreateOrServerProperties nesneleri

nesne türünü belirtmek için createMode özelliğini ayarlayın.

varsayılaniçin şunu kullanın:

{
  administratorLogin: 'string'
  administratorLoginPassword: 'string'
  createMode: 'Default'
}

GeoRestoreiçin şunu kullanın:

{
  createMode: 'GeoRestore'
  sourceServerId: 'string'
}

PointInTimeRestoreiçin şunu kullanın:

{
  createMode: 'PointInTimeRestore'
  restorePointInTime: 'string'
  sourceServerId: 'string'
}

Çoğaltmaiçin şunu kullanın:

{
  createMode: 'Replica'
  sourceServerId: 'string'
}

Özellik Değerleri

Microsoft.DBforPostgreSQL/servers (Microsoft PostgreSQL Sunucuları)

Ad Açıklama Değer
kimlik Sunucunun Azure Active Directory kimliği. ResourceIdentity
yer Kaynağın bulunduğu konum. dize (gerekli)
ad Kaynak adı dize (gerekli)
Özellikler Sunucunun özellikleri. ServerPropertiesForCreateOrServerProperties (gerekli)
Sku Sunucunun SKU'su (fiyatlandırma katmanı). Sku
Etiketler Kaynak etiketleri Etiket adları ve değerleri sözlüğü. Bkz. şablonlardaki Etiketleri

ResourceIdentity

Ad Açıklama Değer
tür Kimlik türü. Kaynak için otomatik olarak bir Azure Active Directory sorumlusu oluşturmak ve atamak için bunu 'SystemAssigned' olarak ayarlayın. 'SystemAssigned'

ServerForCreateTags

Ad Açıklama Değer

ServerPropertiesForCreateOrServerProperties

Ad Açıklama Değer
createMode ServerPropertiesForDefaultCreatetürü için 'Default' olarak ayarlayın. ServerPropertiesForGeoRestoretürü için 'GeoRestore' olarak ayarlayın. ServerPropertiesForRestoretürü için 'PointInTimeRestore' olarak ayarlayın. ServerPropertiesForReplicatürü için 'Çoğaltma' olarak ayarlayın. 'Varsayılan'
'GeoRestore'
'PointInTimeRestore'
'Çoğaltma' (gerekli)
infrastructureEncryption Sunucunun altyapı şifrelemesini etkinleştirip etkinleştirmediğini gösteren durum. 'Devre Dışı'
'Etkin'
minimalTlsVersion Sunucu için en düşük Tls sürümünü zorunlu kılma. 'TLS1_0'
'TLS1_1'
'TLS1_2'
'TLSEnforcementDisabled'
publicNetworkAccess Bu sunucu için genel ağ erişimine izin verilip verilmeyeceği. Değer isteğe bağlıdır, ancak geçirilirse 'Etkin' veya 'Devre Dışı' olmalıdır 'Devre Dışı'
'Etkin'
sslEnforcement Sunucuya bağlanırken ssl zorlamasını etkinleştirin veya etkinleştirmeyin. 'Devre Dışı'
'Etkin'
storageProfile Sunucunun depolama profili. StorageProfile
Sürüm Sunucu sürümü. '10'
'10.0'
'10.2'
'11'
'9.5'
'9.6'

ServerPropertiesForDefaultCreate

Ad Açıklama Değer
administratorLogin Yöneticinin sunucunun oturum açma adı. Yalnızca sunucu oluşturulurken belirtilebilir (ve oluşturma için gereklidir). dize (gerekli)
administratorLoginPassword Yönetici oturum açma parolası. dizgi

Kısıtlama -ları:
Hassas değer. Güvenli parametre olarak geçirin. (gerekli)
createMode Yeni sunucu oluşturma modu. 'Varsayılan' (gerekli)

ServerPropertiesForGeoRestore

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'GeoRestore' (gerekli)
sourceServerId Geri yükleneceği kaynak sunucu kimliği. dize (gerekli)

ServerPropertiesForReplica

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'Çoğaltma' (gerekli)
sourceServerId Çoğaltma oluşturulacak ana sunucu kimliği. dize (gerekli)

ServerPropertiesForRestore

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'PointInTimeRestore' (gerekli)
restorePointInTime Geri yükleme noktası oluşturma zamanı (ISO8601 biçimi), geri yükleme zamanı belirtin. dize (gerekli)
sourceServerId Geri yükleneceği kaynak sunucu kimliği. dize (gerekli)

Sku

Ad Açıklama Değer
kapasite Sunucunun işlem birimlerini temsil eden ölçeği artırma/genişletme kapasitesi. Int

Kısıtlama -ları:
En düşük değer = 0
aile Donanım ailesi. dizgi
ad Sku adı, genellikle katman + aile + çekirdekler, örneğin B_Gen4_1, GP_Gen5_8. dize (gerekli)
boyut Kaynak tarafından uygun şekilde yorumlanacak boyut kodu. dizgi
Katmanı Belirli bir SKU'nun katmanı, örneğin Temel. 'Temel'
'GeneralPurpose'
'MemoryOptimized'

StorageProfile

Ad Açıklama Değer
backupRetentionDays Sunucu için yedekleme bekletme günleri. Int
geoRedundantBackup Sunucu yedeklemesi için Coğrafi olarak yedekli veya değil'i etkinleştirin. 'Devre Dışı'
'Etkin'
storageAutogrow Depolama Otomatik Büyütme'yi etkinleştirin. 'Devre Dışı'
'Etkin'
storageMB Bir sunucu için izin verilen maksimum depolama alanı. Int

Kullanım Örnekleri

Bicep Örnekleri

PostgreSQL Server'ı dağıtmanın temel bir örneği.

@secure()
@description('The administrator login password for the PostgreSQL server')
param administratorLoginPassword string
param resourceName string = 'acctest0001'
param location string = 'westeurope'
@description('The administrator login name for the PostgreSQL server')
param administratorLogin string

resource server 'Microsoft.DBforPostgreSQL/servers@2017-12-01' = {
  name: resourceName
  location: location
  sku: {
    capacity: 2
    family: 'Gen5'
    name: 'GP_Gen5_2'
    tier: 'GeneralPurpose'
  }
  properties: {
    administratorLogin: administratorLogin
    administratorLoginPassword: administratorLoginPassword
    createMode: 'Default'
    infrastructureEncryption: 'Disabled'
    minimalTlsVersion: 'TLS1_2'
    publicNetworkAccess: 'Enabled'
    sslEnforcement: 'Enabled'
    storageProfile: {
      backupRetentionDays: 7
      storageAutogrow: 'Enabled'
      storageMB: 51200
    }
    version: '9.5'
  }
}

Azure Hızlı Başlangıç Örnekleri

Aşağıdaki Azure Hızlı Başlangıç şablonları bu kaynak türünü dağıtmak için Bicep örnekleri içerir.

Bicep Dosyası Açıklama
VNet ile PostgreSQL için Azure Veritabanı Dağıtma Bu şablon, VNet tümleştirmesi ile PostgreSQL için Azure veritabanı dağıtmanın bir yolunu sağlar.
PostgreSQL ile Linux üzerinde Sonarqube Docker Web App'i Bu şablon PostgreSQL için Azure veritabanı ile Linux Web App'te Sonarqube docker görüntüsü (alpine etiketi) dağıtmak için kolay bir yol sağlar(Önizleme)

ARM şablonu kaynak tanımı

Sunucuların kaynak türü, aşağıdakileri hedefleyen işlemlerle dağıtılabilir:

  • kaynak grupları - Bkz. kaynak grubu dağıtım komutları

Her API sürümünde değiştirilen özelliklerin listesi için bkz. değişiklik günlüğü.

Kaynak biçimi

Microsoft.DBforPostgreSQL/servers kaynağı oluşturmak için şablonunuza aşağıdaki JSON'u ekleyin.

{
  "type": "Microsoft.DBforPostgreSQL/servers",
  "apiVersion": "2017-12-01",
  "name": "string",
  "identity": {
    "type": "string"
  },
  "location": "string",
  "properties": {
    "infrastructureEncryption": "string",
    "minimalTlsVersion": "string",
    "publicNetworkAccess": "string",
    "sslEnforcement": "string",
    "storageProfile": {
      "backupRetentionDays": "int",
      "geoRedundantBackup": "string",
      "storageAutogrow": "string",
      "storageMB": "int"
    },
    "version": "string",
    "createMode": "string"
    // For remaining properties, see ServerPropertiesForCreateOrServerProperties objects
  },
  "sku": {
    "capacity": "int",
    "family": "string",
    "name": "string",
    "size": "string",
    "tier": "string"
  },
  "tags": {
    "{customized property}": "string"
  }
}

ServerPropertiesForCreateOrServerProperties nesneleri

nesne türünü belirtmek için createMode özelliğini ayarlayın.

varsayılaniçin şunu kullanın:

{
  "administratorLogin": "string",
  "administratorLoginPassword": "string",
  "createMode": "Default"
}

GeoRestoreiçin şunu kullanın:

{
  "createMode": "GeoRestore",
  "sourceServerId": "string"
}

PointInTimeRestoreiçin şunu kullanın:

{
  "createMode": "PointInTimeRestore",
  "restorePointInTime": "string",
  "sourceServerId": "string"
}

Çoğaltmaiçin şunu kullanın:

{
  "createMode": "Replica",
  "sourceServerId": "string"
}

Özellik Değerleri

Microsoft.DBforPostgreSQL/servers (Microsoft PostgreSQL Sunucuları)

Ad Açıklama Değer
apiVersiyonu API sürümü '2017-12-01'
kimlik Sunucunun Azure Active Directory kimliği. ResourceIdentity
yer Kaynağın bulunduğu konum. dize (gerekli)
ad Kaynak adı dize (gerekli)
Özellikler Sunucunun özellikleri. ServerPropertiesForCreateOrServerProperties (gerekli)
Sku Sunucunun SKU'su (fiyatlandırma katmanı). Sku
Etiketler Kaynak etiketleri Etiket adları ve değerleri sözlüğü. Bkz. şablonlardaki Etiketleri
tür Kaynak türü 'Microsoft.DBforPostgreSQL/servers'

ResourceIdentity

Ad Açıklama Değer
tür Kimlik türü. Kaynak için otomatik olarak bir Azure Active Directory sorumlusu oluşturmak ve atamak için bunu 'SystemAssigned' olarak ayarlayın. 'SystemAssigned'

ServerForCreateTags

Ad Açıklama Değer

ServerPropertiesForCreateOrServerProperties

Ad Açıklama Değer
createMode ServerPropertiesForDefaultCreatetürü için 'Default' olarak ayarlayın. ServerPropertiesForGeoRestoretürü için 'GeoRestore' olarak ayarlayın. ServerPropertiesForRestoretürü için 'PointInTimeRestore' olarak ayarlayın. ServerPropertiesForReplicatürü için 'Çoğaltma' olarak ayarlayın. 'Varsayılan'
'GeoRestore'
'PointInTimeRestore'
'Çoğaltma' (gerekli)
infrastructureEncryption Sunucunun altyapı şifrelemesini etkinleştirip etkinleştirmediğini gösteren durum. 'Devre Dışı'
'Etkin'
minimalTlsVersion Sunucu için en düşük Tls sürümünü zorunlu kılma. 'TLS1_0'
'TLS1_1'
'TLS1_2'
'TLSEnforcementDisabled'
publicNetworkAccess Bu sunucu için genel ağ erişimine izin verilip verilmeyeceği. Değer isteğe bağlıdır, ancak geçirilirse 'Etkin' veya 'Devre Dışı' olmalıdır 'Devre Dışı'
'Etkin'
sslEnforcement Sunucuya bağlanırken ssl zorlamasını etkinleştirin veya etkinleştirmeyin. 'Devre Dışı'
'Etkin'
storageProfile Sunucunun depolama profili. StorageProfile
Sürüm Sunucu sürümü. '10'
'10.0'
'10.2'
'11'
'9.5'
'9.6'

ServerPropertiesForDefaultCreate

Ad Açıklama Değer
administratorLogin Yöneticinin sunucunun oturum açma adı. Yalnızca sunucu oluşturulurken belirtilebilir (ve oluşturma için gereklidir). dize (gerekli)
administratorLoginPassword Yönetici oturum açma parolası. dizgi

Kısıtlama -ları:
Hassas değer. Güvenli parametre olarak geçirin. (gerekli)
createMode Yeni sunucu oluşturma modu. 'Varsayılan' (gerekli)

ServerPropertiesForGeoRestore

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'GeoRestore' (gerekli)
sourceServerId Geri yükleneceği kaynak sunucu kimliği. dize (gerekli)

ServerPropertiesForReplica

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'Çoğaltma' (gerekli)
sourceServerId Çoğaltma oluşturulacak ana sunucu kimliği. dize (gerekli)

ServerPropertiesForRestore

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'PointInTimeRestore' (gerekli)
restorePointInTime Geri yükleme noktası oluşturma zamanı (ISO8601 biçimi), geri yükleme zamanı belirtin. dize (gerekli)
sourceServerId Geri yükleneceği kaynak sunucu kimliği. dize (gerekli)

Sku

Ad Açıklama Değer
kapasite Sunucunun işlem birimlerini temsil eden ölçeği artırma/genişletme kapasitesi. Int

Kısıtlama -ları:
En düşük değer = 0
aile Donanım ailesi. dizgi
ad Sku adı, genellikle katman + aile + çekirdekler, örneğin B_Gen4_1, GP_Gen5_8. dize (gerekli)
boyut Kaynak tarafından uygun şekilde yorumlanacak boyut kodu. dizgi
Katmanı Belirli bir SKU'nun katmanı, örneğin Temel. 'Temel'
'GeneralPurpose'
'MemoryOptimized'

StorageProfile

Ad Açıklama Değer
backupRetentionDays Sunucu için yedekleme bekletme günleri. Int
geoRedundantBackup Sunucu yedeklemesi için Coğrafi olarak yedekli veya değil'i etkinleştirin. 'Devre Dışı'
'Etkin'
storageAutogrow Depolama Otomatik Büyütme'yi etkinleştirin. 'Devre Dışı'
'Etkin'
storageMB Bir sunucu için izin verilen maksimum depolama alanı. Int

Kullanım Örnekleri

Azure Hızlı Başlangıç Şablonları

Aşağıdaki Azure Hızlı Başlangıç şablonları bu kaynak türünü dağıtmak.

Şablon Açıklama
PostgreSQL ile Linux üzerinde Airflow Docker Web Uygulamasını

Azure’a dağıtın
Bu şablon PostgreSQL için Azure veritabanı ile Linux Web App'te puckel/docker-airflow görüntüsü (en son etiket) dağıtmak için kolay bir yol sağlar
App Services'da PostgreSQL veritabanı ile Airflow Web Uygulamasını

Azure’a dağıtın
App Services'te PostgreSQL veritabanı ile Airflow Web Uygulaması dağıtmak için bir şablon
Buffalo Web Uygulaması

Azure’a dağıtın
Golang Buffalo Uygulamanızı Azure'da hızlı ve ucuz bir şekilde çalıştırmaya başlayın.
VNet ile PostgreSQL için Azure Veritabanı Dağıtma

Azure’a dağıtın
Bu şablon, VNet tümleştirmesi ile PostgreSQL için Azure veritabanı dağıtmanın bir yolunu sağlar.
PostgreSQL ile Linux üzerinde Sonarqube Docker Web App'i

Azure’a dağıtın
Bu şablon PostgreSQL için Azure veritabanı ile Linux Web App'te Sonarqube docker görüntüsü (alpine etiketi) dağıtmak için kolay bir yol sağlar(Önizleme)
PostgreSQL ile Linux'ta Web Uygulamasını

Azure’a dağıtın
Bu şablon PostgreSQL için Azure veritabanı (Önizleme) ile Linux'ta Web Uygulaması dağıtmanın kolay bir yolunu sağlar.
PostgreSQL ile Linux'ta Web Uygulamasını

Azure’a dağıtın
Bu şablon, PostgreSQL için Azure veritabanı ile Linux'ta Web Uygulaması dağıtmanın kolay bir yolunu sağlar.

Terraform (AzAPI sağlayıcısı) kaynak tanımı

Sunucuların kaynak türü, aşağıdakileri hedefleyen işlemlerle dağıtılabilir:

  • Kaynak grupları

Her API sürümünde değiştirilen özelliklerin listesi için bkz. değişiklik günlüğü.

Kaynak biçimi

Microsoft.DBforPostgreSQL/servers kaynağı oluşturmak için şablonunuza aşağıdaki Terraform'u ekleyin.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.DBforPostgreSQL/servers@2017-12-01"
  name = "string"
  parent_id = "string"
  identity {
    type = "string"
    identity_ids = [
      "string"
    ]
  }
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = {
    properties = {
      infrastructureEncryption = "string"
      minimalTlsVersion = "string"
      publicNetworkAccess = "string"
      sslEnforcement = "string"
      storageProfile = {
        backupRetentionDays = int
        geoRedundantBackup = "string"
        storageAutogrow = "string"
        storageMB = int
      }
      version = "string"
      createMode = "string"
      // For remaining properties, see ServerPropertiesForCreateOrServerProperties objects
    }
    sku = {
      capacity = int
      family = "string"
      name = "string"
      size = "string"
      tier = "string"
    }
  }
}

ServerPropertiesForCreateOrServerProperties nesneleri

nesne türünü belirtmek için createMode özelliğini ayarlayın.

varsayılaniçin şunu kullanın:

{
  administratorLogin = "string"
  administratorLoginPassword = "string"
  createMode = "Default"
}

GeoRestoreiçin şunu kullanın:

{
  createMode = "GeoRestore"
  sourceServerId = "string"
}

PointInTimeRestoreiçin şunu kullanın:

{
  createMode = "PointInTimeRestore"
  restorePointInTime = "string"
  sourceServerId = "string"
}

Çoğaltmaiçin şunu kullanın:

{
  createMode = "Replica"
  sourceServerId = "string"
}

Özellik Değerleri

Microsoft.DBforPostgreSQL/servers (Microsoft PostgreSQL Sunucuları)

Ad Açıklama Değer
kimlik Sunucunun Azure Active Directory kimliği. ResourceIdentity
yer Kaynağın bulunduğu konum. dize (gerekli)
ad Kaynak adı dize (gerekli)
Özellikler Sunucunun özellikleri. ServerPropertiesForCreateOrServerProperties (gerekli)
Sku Sunucunun SKU'su (fiyatlandırma katmanı). Sku
Etiketler Kaynak etiketleri Etiket adları ve değerleri sözlüğü.
tür Kaynak türü "Microsoft.DBforPostgreSQL/servers@2017-12-01"

ResourceIdentity

Ad Açıklama Değer
tür Kimlik türü. Kaynak için otomatik olarak bir Azure Active Directory sorumlusu oluşturmak ve atamak için bunu 'SystemAssigned' olarak ayarlayın. 'SystemAssigned'

ServerForCreateTags

Ad Açıklama Değer

ServerPropertiesForCreateOrServerProperties

Ad Açıklama Değer
createMode ServerPropertiesForDefaultCreatetürü için 'Default' olarak ayarlayın. ServerPropertiesForGeoRestoretürü için 'GeoRestore' olarak ayarlayın. ServerPropertiesForRestoretürü için 'PointInTimeRestore' olarak ayarlayın. ServerPropertiesForReplicatürü için 'Çoğaltma' olarak ayarlayın. 'Varsayılan'
'GeoRestore'
'PointInTimeRestore'
'Çoğaltma' (gerekli)
infrastructureEncryption Sunucunun altyapı şifrelemesini etkinleştirip etkinleştirmediğini gösteren durum. 'Devre Dışı'
'Etkin'
minimalTlsVersion Sunucu için en düşük Tls sürümünü zorunlu kılma. 'TLS1_0'
'TLS1_1'
'TLS1_2'
'TLSEnforcementDisabled'
publicNetworkAccess Bu sunucu için genel ağ erişimine izin verilip verilmeyeceği. Değer isteğe bağlıdır, ancak geçirilirse 'Etkin' veya 'Devre Dışı' olmalıdır 'Devre Dışı'
'Etkin'
sslEnforcement Sunucuya bağlanırken ssl zorlamasını etkinleştirin veya etkinleştirmeyin. 'Devre Dışı'
'Etkin'
storageProfile Sunucunun depolama profili. StorageProfile
Sürüm Sunucu sürümü. '10'
'10.0'
'10.2'
'11'
'9.5'
'9.6'

ServerPropertiesForDefaultCreate

Ad Açıklama Değer
administratorLogin Yöneticinin sunucunun oturum açma adı. Yalnızca sunucu oluşturulurken belirtilebilir (ve oluşturma için gereklidir). dize (gerekli)
administratorLoginPassword Yönetici oturum açma parolası. dizgi

Kısıtlama -ları:
Hassas değer. Güvenli parametre olarak geçirin. (gerekli)
createMode Yeni sunucu oluşturma modu. 'Varsayılan' (gerekli)

ServerPropertiesForGeoRestore

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'GeoRestore' (gerekli)
sourceServerId Geri yükleneceği kaynak sunucu kimliği. dize (gerekli)

ServerPropertiesForReplica

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'Çoğaltma' (gerekli)
sourceServerId Çoğaltma oluşturulacak ana sunucu kimliği. dize (gerekli)

ServerPropertiesForRestore

Ad Açıklama Değer
createMode Yeni sunucu oluşturma modu. 'PointInTimeRestore' (gerekli)
restorePointInTime Geri yükleme noktası oluşturma zamanı (ISO8601 biçimi), geri yükleme zamanı belirtin. dize (gerekli)
sourceServerId Geri yükleneceği kaynak sunucu kimliği. dize (gerekli)

Sku

Ad Açıklama Değer
kapasite Sunucunun işlem birimlerini temsil eden ölçeği artırma/genişletme kapasitesi. Int

Kısıtlama -ları:
En düşük değer = 0
aile Donanım ailesi. dizgi
ad Sku adı, genellikle katman + aile + çekirdekler, örneğin B_Gen4_1, GP_Gen5_8. dize (gerekli)
boyut Kaynak tarafından uygun şekilde yorumlanacak boyut kodu. dizgi
Katmanı Belirli bir SKU'nun katmanı, örneğin Temel. 'Temel'
'GeneralPurpose'
'MemoryOptimized'

StorageProfile

Ad Açıklama Değer
backupRetentionDays Sunucu için yedekleme bekletme günleri. Int
geoRedundantBackup Sunucu yedeklemesi için Coğrafi olarak yedekli veya değil'i etkinleştirin. 'Devre Dışı'
'Etkin'
storageAutogrow Depolama Otomatik Büyütme'yi etkinleştirin. 'Devre Dışı'
'Etkin'
storageMB Bir sunucu için izin verilen maksimum depolama alanı. Int

Kullanım Örnekleri

Terraform Örnekleri

PostgreSQL Server'ı dağıtmanın temel bir örneği.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westeurope"
}

variable "administrator_login" {
  type        = string
  description = "The administrator login name for the PostgreSQL server"
}

variable "administrator_login_password" {
  type        = string
  description = "The administrator login password for the PostgreSQL server"
  sensitive   = true
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "server" {
  type      = "Microsoft.DBforPostgreSQL/servers@2017-12-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      administratorLogin         = var.administrator_login
      administratorLoginPassword = var.administrator_login_password
      createMode                 = "Default"
      infrastructureEncryption   = "Disabled"
      minimalTlsVersion          = "TLS1_2"
      publicNetworkAccess        = "Enabled"
      sslEnforcement             = "Enabled"
      storageProfile = {
        backupRetentionDays = 7
        storageAutogrow     = "Enabled"
        storageMB           = 51200
      }
      version = "9.5"
    }
    sku = {
      capacity = 2
      family   = "Gen5"
      name     = "GP_Gen5_2"
      tier     = "GeneralPurpose"
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}