我想使用 Azure Pipelines 在 Azure 中的 Linux VM 上部署代码。管道使用 Microsoft 托管代理,VM 具有访问限制,我需要将 IP 地址列入白名单。由于 Azure Pipelines 的每个部署都来自不同的 IP,是否有一种方法可以在不将每个 Microsoft 代理 IP 地址列入白名单的情况下部署到此 VM?
我找到的唯一解决方案是使用自托管代理。 有没有一种方法可以在不将虚拟机上每个部署的每个公共 IP 列入白名单的情况下完成部署?
当您使用 Microsoft 托管代理时,您可能需要知道安装具有特定配置的 Microsoft 托管代理的 IP 地址范围。如果你想通过 IP 地址限制对 Microsoft 托管代理的访问,如果你需要通过防火墙授予他们访问权限。 IP 范围随时间变化,因为 Azure DevOps 使用 Azure 全球网络。 Azure 在 json 文件中每周发布 IP 地址列表,请参阅此处 - https://www.microsoft.com/en-us/download/details.aspx?id=56519
列出按区域分隔的 Azure 数据中心 IP 范围。每周一次将新提议的 IP 范围添加到此文件中。下周将看到新的 IP 范围生效。为了使您的列表保持最新,我们建议您经常返回(至少每周一次)。
您可以每周检查可用的 IP 并将这些 IP 列入白名单,因为没有其他解决方法可以通过这些不同的 IP。
对于以上参考,请遵循此文档:-
Azure Pipelines 的 Microsoft 托管代理 - Azure Pipelines |微软学习
但目前只有自托管代理是可用的替代方案
不想每周更新你的IP。
此外,您还可以通过本文档了解 azure devops 通常使用的各种 IP 和 url - 允许的地址列表和网络连接 - Azure DevOps |微软学习
作为替代方案:-
使用自托管代理是您可以在 Linux VM 上配置并设置防火墙以使用自托管代理允许来自 > 特定 IP 地址的流量的可能解决方案。
然后尝试连接 linux vm 并创建一个文件夹并下载代理:使用下面的命令:
~/$ mkdir myagent && cd myagent
~/myagent$ tar zxvf ~/Downloads/vsts-agent-linux-x64-3.218.0.tar.gz
配置代理:
~/myagent$ ./config.sh
运行代理:
~/myagent$ ./run.sh
创建个人访问令牌:
在用户设置 -> 个人访问令牌
允许对代理池的读取和管理权限,如下所示:
更详细参考这个链接