Утверждение частной конечной точки Azure Synapse

#bash #azure #azure-synapse

Вопрос:

С помощью некоторых сценариев Terraform в процессе CICD я пытаюсь создать управляемую частную конечную точку для связанной службы Azure SQL Server. Это успешно выполняется с помощью следующего кода:

 resource "azurerm_synapse_managed_private_endpoint" "mi_metadata_transform_sql_server_private_endpoint" {
name                 = "mi_synapse_metadata_transform_private_endpoint"
subresource_name     = "sqlServer"
synapse_workspace_id = module.mi_synapse_workspace.synapse_workspace_id
target_resource_id   = azurerm_mssql_server.mi-metadata-transform-sql-server.id}
 

Но это оставляет конечную точку в «Состоянии ожидания утверждения». Поэтому, добавив приведенный ниже код, основанный на некотором из нашего существующего кода, который утверждает некоторое хранилище через Bash, я решил скопировать этот код и соответствующим образом настроить его для SQL Server. И вот тут-то и начинается моя проблема…..

 function enable_sql_private_endpoint {
        endpoints=$(az sql server show --name $1 -g ${{ parameters.resourceGroupName }} --subscription $(serviceConnection) --query  "privateEndpointConnections[?properties.privateLinkServiceConnectionState.status=='Pending'].id" -o tsv)        
        for endpoint in $endpoints 
        do
          az sql server private-endpoint-connection approve --account-name $1 --name $endpoint --resource-group ${{ parameters.resourceGroupName }} --subscription  $(serviceConnection)
        done
        }


    sqlServers="$(az sql server list -g ${{ parameters.resourceGroupName }} --query '[].name' --subscription $(serviceConnection) -o tsv)"

    for sqlServerName in $sqlServers
    do
        echo "Processing $sqlServerName ========================================="
        enable_sql_private_endpoint  $sqlServerName
    done
 

Приведенный выше код выполняется на следующем шаге в файле YAML и в самых простых терминах:

  • Файл оркестратора YAML, выполняемый через CICD
  • Скрипт терраформирования, вызываемый для создания ресурса (фрагмент кода 1)
  • Другой файл YAML, выполненный для утверждения конечных точек с помощью встроенного Bash (фрагмент кода 2)

Проблема в az sql server private-endpoint-connection approve том, и что ее не существует. Когда я просматриваю эту ссылку, я не вижу ничего отдаленно похожего на опцию утверждения для конечных точек SQL Server, таких как хранилище или MySQL. Была бы признательна любая помощь в том, как этого можно достичь

Ответ №1:

В настоящее время вы не можете утвердить Управляемую частную конечную точку с помощью Terraform.

Примечание Azure PowerShell . и Azure CLI являются предпочтительными методами управления подключениями к частным конечным точкам в партнерских службах Microsoft или службах, принадлежащих клиентам.

Дополнительные сведения см. в разделе Управление подключениями к частным конечным точкам в службе частных ссылок, принадлежащей клиенту/партнеру.

Комментарии:

1. Извините, я, возможно, не был ясен в своем посте, который я исправлю. Баш выполняется на следующем этапе в yaml. Таким образом, YAML вызывает ряд сценариев, включая terraform, и как только этот ресурс настроен, выполняется файл YAML для утверждения любых конечных точек

2. Поэтому вы говорите, что это сработает? Утвердить-AzPrivateEndpointConnection -Имя myPrivateEndpointConnection -Имя группы ресурсов myResourceGroup -Имя службы myPrivateLinkService

Ответ №2:

В конце концов, это то, что я использовал в своем YAML / Bash, чтобы заставить вещи работать:

         sqlServers="$(az sql server list -g ${{ parameters.resourceGroupName }} --query '[].name' --subscription $(serviceConnection) -o tsv)"

    for sqlServerName in $sqlServers
    do
      echo "Processing $sqlServerName ========================================="
      enable_sql_private_endpoint  $sqlServerName
    done
 

и

         function enable_sql_private_endpoint {
    endpoints=$(az sql server show --name $1 -g ${{ parameters.resourceGroupName }} --subscription $(serviceConnection) --query  "privateEndpointConnections[?properties.privateLinkServiceConnectionState.status=='Pending'].id" -o tsv)        
    for endpoint in $endpoints 
    do
      az network private-endpoint-connection approve -g  ${{ parameters.resourceGroupName }} --subscription $(serviceConnection) --id $endpoint  --type Microsoft.Sql/servers --description "Approved" --resource-name $1
    done
    }
 

Следующая строка является ключевым синтаксисом, который следует использовать, если кто-либо когда-либо столкнется с подобным сценарием в своем CICD с Syanpse и управляемыми частными конечными точками:

 az storage account private-endpoint-connection approve --account-name $1 --name $endpoint --resource-group ${{ parameters.resourceGroupName }} --subscription  $(serviceConnection)