#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)