gpt4 book ai didi

azure - 创建 Azure linux VHD 以在管道中使用

转载 作者:行者123 更新时间:2023-12-03 07:04:04 24 4
gpt4 key购买 nike

我想准备一个带有预安装依赖项(python、go 等)的 ubuntu 镜像,以便管道每次都不会浪费时间安装它们。我期望找到某种类似 Dockerfile 的界面,但我一直无法找到一种简单的方法来完成此任务。

我的理解是,我需要使用此镜像创建一个新的虚拟机规模集,然后将其用于代理池。但如何创建 vhd 镜像?

最佳答案

您可以使用以下工具之一在 Azure 上构建镜像。

  1. packer - 跨云的更多行业标准(例如 Hashicorp 的 Terraform)
  2. Azure Image Builder - 仅适用于 Azure(来自 Microsoft)

上述两个工具均可用于自定义 Azure 市场上提供的基础(黄金)镜像,或者如果您在本地有现有的 VM 镜像,则可以按照文档 here 上传该镜像。 .

如果您有多个订阅并且希望在一个订阅的基础上进行构建并在其他订阅/其他租户上使用它们,则需要使用 Azure Compute Gallery 。该库还可以帮助您对 VM 镜像(如 docker 镜像)进行版本控制。简而言之,它就像 VM 镜像的 docker 注册表。

如果您想使用现有的市场镜像(在您的情况下为基本 Ubuntu),则无需将它们转换为 VHD。 Packer/Azure Image Builder 基本上会从基础镜像中配置 VM、安装包(您选择的自定义)、创建 VM 的快照并从中创建镜像。

使用 packer,您将编写如下所示的 JSON 构建器。源代码取自here .

{
"builders": [{
"type": "azure-arm",

"client_id": "f5b6a5cf-fbdf-4a9f-b3b8-3c2cd00225a4",
"client_secret": "0e760437-bf34-4aad-9f8d-870be799c55d",
"tenant_id": "72f988bf-86f1-41af-91ab-2d7cd011db47",
"subscription_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",

"managed_image_resource_group_name": "myResourceGroup",
"managed_image_name": "myPackerImage",

"os_type": "Linux",
"image_publisher": "Canonical",
"image_offer": "UbuntuServer",
"image_sku": "16.04-LTS",

"azure_tags": {
"env": "dev",
"task": "Image deployment with packer on Azure is fun!"
},

"location": "East US",
"vm_size": "Standard_DS2_v2"
}],
"provisioners": [{
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo -E sh '{{ .Path }}'",
"inline": [
"apt-get update",
"apt-get upgrade -y",
"apt-get -y install nginx",
"/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync"
],
"inline_shebang": "/bin/sh -x",
"type": "shell"
}]
}

我这边的建议::在 Azure 上构建镜像时,最后运行的 /usr/sbin/waagent -force -deprovision+user 命令非常重要,因为它会清理 cloud-init/waagent 配置了用户打包程序、ssh key 和其他内容,以便为自定义镜像提供一个干净的开始。

关于azure - 创建 Azure linux VHD 以在管道中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71751217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com