Azure devops Azure DevOps管道-缩放集代理:安装Docker

Azure devops Azure DevOps管道-缩放集代理:安装Docker,azure-devops,azure-vm-scale-set,azure-devops-pipelines,Azure Devops,Azure Vm Scale Set,Azure Devops Pipelines,我们最近重新配置了构建过程,使其完全在容器中运行,现在我们正在考虑从内部构建代理迁移到在Azure规模集中使用代理 我们希望避免为Azure Scale设置维护我们自己的VM映像,并选择使用Azure中提供的默认Ubuntu 18.04 LTS映像 此映像不包括Docker,因此我们已将Azure Scale集配置为使用云配置脚本,该脚本将在VM首次启动时安装Docker: 云配置 恰当的: 资料来源: docker.list: 资料来源:deb[arch=amd64]https://downl

我们最近重新配置了构建过程,使其完全在容器中运行,现在我们正在考虑从内部构建代理迁移到在Azure规模集中使用代理

我们希望避免为Azure Scale设置维护我们自己的VM映像,并选择使用Azure中提供的默认Ubuntu 18.04 LTS映像

此映像不包括Docker,因此我们已将Azure Scale集配置为使用云配置脚本,该脚本将在VM首次启动时安装Docker:

云配置 恰当的: 资料来源: docker.list: 资料来源:deb[arch=amd64]https://download.docker.com/linux/ubuntu 美元发行稳定 密钥ID:9DC858229FC7DD38854AE2D88D81803C0EBFCD88 包装: -码头工程师 -docker ce cli 组: -码头工人 这似乎很有效,但有时构建作业会失败:

Starting: Initialize containers
/usr/bin/docker version --format '{{.Server.APIVersion}}'
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
'
##[error]Exit code 1 returned from process: file name '/usr/bin/docker', arguments 'version --format '{{.Server.APIVersion}}''.
Finishing: Initialize containers
看起来云初始化脚本失败,或者Azure DevOps代理在云初始化脚本完成之前在VM上启动

到目前为止,我已经看到了以下场景:

配置新VM工作正常,作业运行正常 前几个作业在新配置的VM上失败,然后正常运行。可能是因为cloud init脚本与Azure DevOps扩展并行运行,后者将代理部署到VM,而您有竞争条件? 即使在30分钟后,所有作业都会失败。有时重新想象虚拟机会有所帮助,有时则不然。
有人有类似的设置吗?它能正常工作吗?如果没有,在虚拟机运行容器作业之前,有哪些替代方法可以将Docker部署到虚拟机?

当您配置Azure DevOps代理池以使用Azure规模集来配置生成机器时,Microsoft.Azure.DevOps.Pipelines.agent/TeamServicesAgentLinux扩展将自动添加到您的规模集

此扩展负责在虚拟机上安装Azure DevOps代理,并将其添加到代理池中

该扩展在VM启动时运行,大约与cloud init脚本同时运行。这可能导致比赛条件

要解决此问题,请将bootcmd脚本添加到您的云配置脚本中,以强制walinuxagent代理服务,该服务将在云配置脚本之后启动Azure DevOps扩展,如下所示:

云配置 bootcmd: -mkdir-p/etc/systemd/system/walinuxagent.service.d -echo[Unit]\nAfter=cloud-final.service>/etc/systemd/system/walinuxagent.service.d/override.conf -sed s/After=multi-user.target//g/lib/systemd/system/cloud-final.service>/etc/systemd/system/cloud-final.service -systemctl后台程序重新加载 恰当的: 资料来源: docker.list: 资料来源:deb[arch=amd64]https://download.docker.com/linux/ubuntu 美元发行稳定 密钥ID:9DC858229FC7DD38854AE2D88D81803C0EBFCD88 包装: -码头工程师 -docker ce cli 组: -码头工人 这允许您创建一个使用标准Ubuntu 18.04映像的Azure DevOps scale set代理池,并在该映像上安装docker


有关更多背景信息,请参阅和。

当您配置Azure DevOps代理池以使用Azure规模集来配置生成计算机时,Microsoft.Azure.DevOps.Pipelines.agent/TeamServicesAgentLinux扩展将自动添加到您的规模集

此扩展负责在虚拟机上安装Azure DevOps代理,并将其添加到代理池中

该扩展在VM启动时运行,大约与cloud init脚本同时运行。这可能导致比赛条件

要解决此问题,请将bootcmd脚本添加到您的云配置脚本中,以强制walinuxagent代理服务,该服务将在云配置脚本之后启动Azure DevOps扩展,如下所示:

云配置 bootcmd: -mkdir-p/etc/systemd/system/walinuxagent.service.d -echo[Unit]\nAfter=cloud-final.service>/etc/systemd/system/walinuxagent.service.d/override.conf -sed s/After=multi-user.target//g/lib/systemd/system/cloud-final.service>/etc/systemd/system/cloud-final.service -systemctl后台程序重新加载 恰当的: 资料来源: docker.list: 资料来源:deb[arch=amd64]https://download.docker.com/linux/ubuntu 美元发行稳定 密钥ID:9DC858229FC7DD38854AE2D88D81803C0EBFCD88 包装: -码头工程师 -docker ce cli 组: -码头工人 这允许您创建一个使用标准Ubuntu 18.04映像的Azure DevOps scale set代理池,并在该映像上安装docker


有关更多背景信息,请参见和。

您有时是什么意思?运行管道时VM是否正在运行?虽然这个问题似乎与虚拟机中的设置更相关,但您是否可以分享一些关于管道的详细信息?有时,例如,大约每3个作业中就有1个作业?这是一个缩放集代理,因此在触发作业时可能根本没有任何VM。但管道确实在一个可能已按需配置的代理上启动,错误消息是由代理上运行的代码生成的。工作
它本身是一个容器作业,失败发生在“初始化容器”步骤中。在此之后,管道包含一组shell脚本,这些脚本从未执行,因为容器作业没有成功启动,因为Docker没有正确/及时安装。初始化容器步骤失败,原因是VM没有正确启动,因此azure devops在初始化容器时失败,错误为docker守护进程正在运行吗?。这个问题的原因似乎来自我不熟悉的Azure VM方面……是的,看起来这是自动缩放代理的一个缺陷/限制:,你有时是什么意思?运行管道时VM是否正在运行?虽然这个问题似乎与虚拟机中的设置更相关,但您是否可以分享一些关于管道的详细信息?有时,例如,大约每3个作业中就有1个作业?这是一个缩放集代理,因此在触发作业时可能根本没有任何VM。但管道确实在一个可能已按需配置的代理上启动,错误消息是由代理上运行的代码生成的。作业本身是容器作业,在“初始化容器”步骤中发生故障。在此之后,管道包含一组shell脚本,这些脚本从未执行,因为容器作业没有成功启动,因为Docker没有正确/及时安装。初始化容器步骤失败,原因是VM没有正确启动,因此azure devops在初始化容器时失败,错误为docker守护进程正在运行吗?。这个问题的原因似乎来自我不熟悉的Azure VM方面……是的,看起来这是自动缩放代理的一个bug/限制:,