Автоматическая установка IP-адреса клиента на сервер sql azure с помощью задачи vso powershell

Проблема: когда я создаю новый сервер sql и базу данных. Моя следующая задача - подключиться к БД, но она ломается из-за того, что IP-адрес клиента не добавлен в брандмауэр сервера sql. Я не хочу добавлять его вручную. Есть ли способ установить его с помощью Powershell? и это должен быть тот же самый IP-адрес, который я могу видеть внутри межсетевых экранов сервера azure sql и виртуальных сетей.

Временное решение. В настоящее время я добавил диапазон IP-адресов от 0.0.0.0 до 255.255.255.255 с помощью задачи azure sql, но это неправильный способ сделать это.

exec sp_set_firewall_rule N'AllowAzure', '0.0.0.0', '255.255.255.255'; 

person rAJ    schedule 21.06.2018    source источник


Ответы (1)


Да, вы можете использовать командлет Set-AzureRmSqlServerFirewallRule. Чтобы получить текущий IP-адрес, я использую ipify.org. Пример:

$clientIp = Invoke-WebRequest 'https://api.ipify.org' | Select-Object -ExpandProperty Content

Set-AzureRmSqlServerFirewallRule `
            -ResourceGroupName "myrg" `
            -ServerName "myserver" `
            -FirewallRuleName "myrulename" `
            -StartIpAddress $clientIp `
            -EndIpAddress $clientIp
person Martin Brandl    schedule 21.06.2018
comment
Спасибо за ответ. Когда я выполняю это, отображается ошибка: Set-AzureRmSqlServerFirewallRule: ResourceGroupNotFound: группа ресурсов «34QAResource» не может быть найдена. В строке: 3 символа: 1 + Set-AzureRmSqlServerFirewallRule `-ResourceGroupName 34QAResource ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: (:) [Set-AzureRmSqlServerFirewallRule ], CloudException + FullyQualifiedErrorId: Microsoft.Azure.Commands.Sql.FirewallRule.Cmdlet.SetAzureSqlServerFirewallRule - person rAJ; 21.06.2018
comment
Сначала вы должны войти в Azure и убедиться, что выбрана желаемая подписка. - person Martin Brandl; 21.06.2018
comment
Я уже вошел в систему с помощью команды Connect-AzureRmAccount. Тем не менее он отображал ошибку. - person rAJ; 21.06.2018
comment
Попробуйте получить группу ресурсов с помощью командлета get-azurermresourcegroup. вы не подключены к своей подписке или она не выбрана. - person Martin Brandl; 21.06.2018
comment
о, понял. Теперь новая ошибка: Set-AzureRmSqlServerFirewallRule: NotFound: ресурс не найден для сегмента «правила брандмауэра». В строке: 4 символа: 1 + Set-AzureRmSqlServerFirewallRule `-ResourceGroupName 34QAResource ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: (:) [Set-AzureRmSqlServerFirewallRule ], CloudException + FullyQualifiedErrorId: Microsoft.Azure.Commands.Sql.FirewallRule.Cmdlet.SetAzureSqlServerFirewallRule - person rAJ; 21.06.2018
comment
Я использую New-AzureRmSqlServerFirewallRule вместо Set-AzureRmSqlServerFirewallRule. Теперь работает. - person rAJ; 21.06.2018
comment
При запуске через локальный powershelll он получает и устанавливает правильный IP-адрес клиента. Но когда я запускаю это через задание выпуска VSO, полученный IP-адрес клиента отличается от IP-адреса клиента в брандмауэре SQL. Любая идея, как это исправить? - person rAJ; 21.06.2018
comment
Я думал, вы хотите добавить ip агента сборки для выполнения определенных задач. Какой IP вы хотите добавить? - person Martin Brandl; 21.06.2018
comment
Я хочу, чтобы IP-адрес отображался, когда вы переходите на страницу брандмауэра SQL-сервера. Когда я запускаю локально, он получает точно такой же IP-адрес. Но проблема существует с работой по выпуску VSO. - person rAJ; 21.06.2018
comment
Для меня это не имеет смысла. Почему вы хотите добавить свой локальный IP-адрес клиента к серверу sql с помощью задачи vsto? Как вы думаете, как это должно работать, если ваша сборка запускается с помощью e. грамм. CI .... - person Martin Brandl; 21.06.2018
comment
Честно говоря, я новичок в лазурном и пытаюсь чему-то научиться. Да, вы правы, добавление локального IP-адреса звучит не очень хорошо. Где проблема, у меня есть одна задача VSO, которая подключается к БД. Поскольку у моего сервера БД нет клиентского IP-адреса, задача не удалась. Теперь я пытаюсь добавить IP-адрес клиента перед запуском моей задачи подключения к БД. Я обнаружил, что если я добавляю клиентский IP-адрес вручную, который отображается на странице брандмауэра SQL-сервера, то моя задача подключения к БД выполняется успешно. Вот почему я пытаюсь добавить этот пертикулярный IP-адрес клиента с помощью другой задачи VSO PowerShell. Пожалуйста, дайте свое предложение по этому поводу. Как этого добиться. - person rAJ; 21.06.2018
comment
Мое ограничение: - a.) Изначально у меня нет IP-адреса клиента, добавленного к брандмауэру SQL. б.) Я не могу добавить клиентский IP вручную. c.) IP-адрес клиента не должен находиться в диапазоне от 0.0.0.0 до 255.255.255.255. - person rAJ; 21.06.2018
comment
У меня нет проблем, если IP-адрес клиента, добавленный из задания VSO, не совпадает с IP-адресом клиента, отображаемым на странице брандмауэра SQL-сервера. Дело в том, что в конце моя задача VSO подключения к БД должна успешно работать. :) - person rAJ; 21.06.2018