Azure devops 如何获取Azure DevOps托管代理的IP地址以添加到白名单

Azure devops 如何获取Azure DevOps托管代理的IP地址以添加到白名单,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,是否有一种方法可以访问运行的托管计算机的IP地址范围 这与发布管道->托管代理相关 问题:由于连接通过防火墙被拒绝,因此在连接上拒绝访问。需要将来自DevOps上发布管道的此请求的IP地址范围列入白名单。使用管道中的脚本步骤获取当前外部IP并将其列入白名单。管道完成后,使用另一个脚本步骤进行清理 不幸的是,这是唯一的方法(对于托管代理)。我们需要在下面提到的列表中列出Azure数据中心使用的IP地址: 注意:此列表每周更新一次,因此在部署规划期间请注意这一点。我在一个版本中有一个步骤,该版本在

是否有一种方法可以访问运行的托管计算机的IP地址范围

这与发布管道->托管代理相关


问题:由于连接通过防火墙被拒绝,因此在连接上拒绝访问。需要将来自DevOps上发布管道的此请求的IP地址范围列入白名单。

使用管道中的脚本步骤获取当前外部IP并将其列入白名单。管道完成后,使用另一个脚本步骤进行清理


不幸的是,这是唯一的方法(对于托管代理)。

我们需要在下面提到的列表中列出Azure数据中心使用的IP地址:


注意:此列表每周更新一次,因此在部署规划期间请注意这一点。

我在一个版本中有一个步骤,该版本在powershell中获取托管代理IP地址,包括:

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

希望能有所帮助。查看此Azure DevOps插件()。它允许您在构建过程中更改应用程序服务IP限制。

如果您在这里查看,因为您在尝试使用Azure DevOps进行MSBuild并部署到Azure SQL server时遇到此错误,并且会有点疯狂,因为internet上似乎没有任何内容,人们都在考虑使用power shell脚本以查找服务器的IP地址和白名单等,那么您最好在yml文件以及MSBuild中使用名为“Azure SQL数据库部署”的任务,如下所示:

- task: MSBuild@1
  displayName: Build the database project
  inputs:
    solution: '**/projectname.sqlproj'
    msbuildArguments: '/t:Restore /t:Build '



- task: SqlAzureDacpacDeployment@1
  inputs:
    azureSubscription: ''
    AuthenticationType: 'server'
    ServerName: '.database.windows.net'
    DatabaseName: ''
    SqlUsername: ''
    SqlPassword: ''
    deployType: 'DacpacTask'
    DeploymentAction: 'Publish'
    DacpacFile: '**/projectname.dacpac'
    IpDetectionMethod: 'AutoDetect'

自动的IpDetectionMethod对我很有效,它允许你轻松地输入自己的值(尽管我没有尝试过)

我同意@4c74356b41所提到的。我使用“Azure Cli”在Azure DevOps管道中添加了一个新任务,并将以下命令添加为内联脚本:

echo "Get Azure DevOps IP address"

azdoip=`curl -s icanhazip.com`

echo "Azure DevOps IP Address: $azdoip"

echo "Set Azure Subscription to MYSUBSCRIPTION"

az account set  --subscription "MYSUBSCRIPTION"

echo "Get credentials for AKS Cluster Admin"

az aks get-credentials --resource-group MYAKSRG --name MYAKSCLUSTER --admin --file  ~/.kube/config

Echo "Get existing authorized ip ranges"

existingips=`az aks show  --resource-group MYAKSRG  --name MYAKSCLUSTER  --query apiServerAccessProfile |jq -r '.authorizedIpRanges | join(",")'`

echo "Update Azure DevOps IP Address in AKS Cluster Authorized IP Ranges"

az aks update  --resource-group MYAKSRG  --name MYAKSCLUSTER  --api-server-authorized-ip-ranges $existingips,$azdoip

关于Microsoft Azure数据中心()使用的VST/AzureDevOps的IP范围,有一篇文章每周都会更改。每个区域都有一个PublicIP xml文件,我们需要在任何部署期间将其列入白名单。这真是一个大麻烦。感谢您的更新和帮助。上述答案可能不起作用,因为客户必须事先知道IP地址才能将其列入白名单。从脚本中获取IP地址,然后等待客户将其添加到白名单将不起作用。因此,白名单的IP范围对我们来说是可行的。对于基于Ubuntu的虚拟机,不妨白名单为0.0.0.0\0这是一个相当于bash脚本的命令:
curl-shttp://ipinfo.io/json |jq'.ip'
,则可以将ip地址与XML文件中的CIDR范围进行比较(请注意,正如另一个答案中所述,它每周都会发生变化)。有人知道AzureDevops上是否有一个配置/设置页面,可以在不运行命令的情况下了解这些信息吗?@TPPZ您、我和其他人都遇到了同样的问题。以前有一个API调用(beta/labs)获取代理信息,但它已被删除。令人眼花缭乱的API文档并没有显示任何有用的内容。@JariTurkia,如果它能帮助解决此问题:Azure上的任何东西都需要AzureDevOps上托管的VM访问,例如,数据库可以有防火墙规则,允许
0.0.0
(cf.)。这是Azure land中的某种特殊通配符,以避免由于我提到的XML列表而更新IP。在我的场景中,我的Azure DevOps管道和托管的VM应该在Azure上创建/访问SQL Server实例。在SQL Server定义中添加防火墙规则时,所有这些方法看起来都正常,但我无法更改我正在获取IP,将其添加到NSG,但仍然从Blob存储服务接收403…如果您需要在其他Azure服务的防火墙规则中列出这些IP,那么您可以使用启动/停止IP范围
0.0.0
的变通方法,如下所述:这样您就不需要根据o每周从下载的XML对您有用吗?我面临类似的问题。我需要使用管道将sql更改部署到客户端数据库。每周要求客户端更新IP范围不是一个好主意。:(我认为这个答案不再有效。链接现在遇到“[不推荐]”下载。这仍然有效,但使用了一个弃用的API,似乎每个月都会返回更多的警告消息。有人找到了最新版本或类似的替代版本吗?与AKS相关的这种方法的一个问题是,除非您随后在每个构建结束时删除新IP,否则最终您会遇到问题此功能的200 IP地址限制:。您需要处理的另一个挑战是,这些规则最多需要2分钟才能传播。在AKS中,最好在群集上运行自托管生成代理,以确保其安全并避免这些问题。