使用 Azure CLI 2.0 从自定义磁盘创建 Linux VM
本文说明如何在 Azure 中上传自定义的虚拟硬盘 (VHD) 或复制现有 VHD,并从自定义磁盘创建 Linux 虚拟机 (VM)。 可以根据要求安装并配置 Linux 分发版,并使用该 VHD 快速创建新的 Azure 虚拟机。
如果想要从自定义磁盘创建多个 VM,则应该从 VM 或 VHD 创建映像。 有关详细信息,请参阅使用 CLI 创建 Azure VM 的自定义映像。
可以使用两个选项:
快速命令
Note
在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud。
使用 az vm create 从自定义或专用的磁盘创建新 VM 时,请附加该磁盘 (--attach-os-disk),而不要指定自定义映像或 Marketplace 映像 (--image)。 以下示例使用从自定义 VHD 创建的、名为 myManagedDisk 的托管磁盘,创建名为 myVM 的 VM:
az vm create --resource-group myResourceGroup --location chinaeast --name myVM \
--os-type linux --attach-os-disk myManagedDisk
要求
若要完成以下步骤,需要:
- 已准备好在 Azure 中使用的 Linux 虚拟机。 本文的准备 VM 部分介绍了如何查找有关安装 Azure Linux 代理 (waagent) 的特定于分发版的信息。要使 VM 在 Azure 中正常工作,以及要通过 SSH 连接到 VM,需要用到该代理。
- 用于将 Azure 认可的 Linux 分发版(或参阅关于未认可分发版的信息)安装到采用 VHD 格式的虚拟磁盘的 VHD 文件。 可使用多种工具创建 VM 和 VHD:
- 安装并配置 QEMU 或 KVM,并注意使用 VHD 作为映像格式。 如果需要,可以使用 qemu-img convert 转换映像。
- 也可以在 Windows 10 或 Windows Server 2012/2012 R2 上使用 Hyper-V。
Note
Azure 不支持更新的 VHDX 格式。 创建 VM 时,请将 VHD 指定为映像格式。 如果需要,可以使用 qemu-img convert 或 Convert-VHD PowerShell cmdlet 将 VHDX 磁盘转换为 VHD。 此外,Azure 不支持上传动态 VHD,因此,上传之前,需要将此类磁盘转换为静态 VHD。 可以使用 Azure VHD Utilities for GO 等工具在上传到 Azure 的过程中转换动态磁盘。
- 确保已安装了最新的 Azure CLI 2.0 并已使用 az login 登录到 Azure 帐户。
在以下示例中,请将示例参数名称替换成自己的值。 示例参数名称包括 myResourceGroup、mystorageaccount 和 mydisks。
准备 VM
Azure 支持各种 Linux 分发(请参阅认可的分发)。 以下文章指导用户准备 Azure 上支持的各种 Linux 分发版:
- 基于 CentOS 的分发版
- Debian Linux
- Oracle Linux
- Red Hat Enterprise Linux
- SLES 和 openSUSE
- Ubuntu
- 其他 - 非认可分发版
另请参阅 Linux 安装说明,获取更多有关如何为 Azure 准备 Linux 映像的一般提示。
Note
只有在使用某个认可的分发的时候也使用 Azure 认可的分发中的 Linux 中“支持的版本”下指定的配置详细信息时,Azure 平台 SLA 才适用于运行 Linux 的 VM。
选项 1:上传 VHD
可以上传本地计算机上运行的或者从另一个云导出的自定义 VHD。 若要使用 VHD 创建新的 Azure VM,需要将 VHD 上传到存储帐户,并从该 VHD 创建托管磁盘。
创建资源组
在上传自定义磁盘和创建 VM 之前,首先需要使用 az group create 创建一个资源组。
以下示例在 chinaeast 位置创建名为 myResourceGroup 的资源组:Azure 托管磁盘概述
az group create \
--name myResourceGroup \
--location chinaeast
创建存储帐户
可以使用 az storage account create为自定义磁盘和 VM 创建存储帐户。
以下示例在前面创建的资源组中创建名为 mystorageaccount 的存储帐户:
az storage account create \
--resource-group myResourceGroup \
--location chinaeast \
--name mystorageaccount \
--kind Storage \
--sku Standard_LRS
列出存储帐户密钥
Azure 为每个存储帐户生成两个 512 位的访问密钥。 在向存储帐户进行身份验证以执行操作(例如执行写入操作)时,会使用这些访问密钥。 从此处了解有关管理对存储的访问的详细信息。 可以使用 az storage account keys list查看访问密钥。
查看创建的存储帐户的访问密钥:
az storage account keys list \
--resource-group myResourceGroup \
--account-name mystorageaccount
输出类似于:
info: Executing command storage account keys list
+ Getting storage account keys
data: Name Key Permissions
data: ---- ---------------------------------------------------------------------------------------- -----------
data: key1 d4XAvZzlGAgWdvhlWfkZ9q4k9bYZkXkuPCJ15NTsQOeDeowCDAdB80r9zA/tUINApdSGQ94H9zkszYyxpe8erw== Full
data: key2 Ww0T7g4UyYLaBnLYcxIOTVziGAAHvU+wpwuPvK4ZG0CDFwu/mAxS/YYvAQGHocq1w7/3HcalbnfxtFdqoXOw8g== Full
info: storage account keys list command OK
记下 key1,因为在后续步骤中需要使用它来与存储帐户交互。
创建存储容器
在存储帐户中创建用于整理磁盘的容器的方式,与创建各种目录以便有条理地整理本地文件系统的方式相同。 一个存储帐户可以包含任意数目的容器。 可以使用 az storage container create 创建容器。
以下示例创建名为 mydisks 的容器:
az storage container create \
--account-name mystorageaccount \
--name mydisks
上传 VHD
现在,使用 az storage blob upload上传自定义磁盘。 可以页 Blob 的形式上传和存储自定义磁盘。
指定访问密钥、在上一步中创建的容器,以及自定义磁盘在本地计算机上的路径:
az storage blob upload --account-name mystorageaccount \
--account-key key1 \
--container-name mydisks \
--type page \
--file /path/to/disk/mydisk.vhd \
--name myDisk.vhd
上传 VHD 可能需要一些时间。
创建托管磁盘
使用 az disk create 从 VHD 创建托管磁盘。 以下示例从已上传到命名存储帐户和容器的 VHD 创建名为 myManagedDisk 的托管磁盘:
az disk create \
--resource-group myResourceGroup \
--name myManagedDisk \
--source https://mystorageaccount.blob.core.chinacloudapi.cn/mydisks/myDisk.vhd
选项 2:复制现有 VM
也可以在 Azure 中创建自定义的 VM,并复制 OS 磁盘并将其附加到新 VM 以创建另一个副本。 这种做法在测试中不会有任何问题,但若要将现有 Azure VM 作为多个新 VM 的模型,则必须改为创建映像。 有关从现有 Azure VM 创建映像的详细信息,请参阅使用 CLI 创建 Azure VM 的自定义映像
创建快照
此示例在资源组 myResourceGroup 中创建名为 myVM 的 VM 的快照,并创建名为 osDiskSnapshot 的快照。
osDiskId=$(az vm show -g myResourceGroup -n myVM --query "storageProfile.osDisk.managedDisk.id" -o tsv)
az snapshot create \
-g myResourceGroup \
--source "$osDiskId" \
--name osDiskSnapshot
创建托管磁盘
从快照创建新的托管磁盘。
获取快照的 ID。 在此示例中,快照名为 osDiskSnapshot,位于 myResourceGroup 资源组中。
snapshotId=$(az snapshot show --name osDiskSnapshot --resource-group myResourceGroup --query [id] -o tsv)
创建托管磁盘。 在此示例中,我们会在标准存储中从快照创建大小为 128GB、名为 myManagedDisk 的托管磁盘。
az disk create \
--resource-group myResourceGroup \
--name myManagedDisk \
--sku Standard_LRS \
--size-gb 128 \
--source $snapshotId
创建 VM
现在,使用 az vm create 创建 VM,并将托管磁盘附加为 OS 磁盘 (--attach-os-disk)。 以下示例使用基于上传的 VHD 创建的托管磁盘创建名为 myNewVM 的 VM:
az vm create \
--resource-group myResourceGroup \
--location chinaeast \
--name myNewVM \
--os-type linux \
--attach-os-disk myManagedDisk
现在,应该可以使用凭据通过 SSH 从源 VM 连接到该 VM。
后续步骤
准备好并上传自定义虚拟磁盘之后,可以阅读有关使用 Resource Manager 和模板的详细信息。 可能还需要向新 VM 添加数据磁盘。 如果需要访问在 VM 上运行的应用程序,请务必打开端口和终结点。立即访问http://market.azure.cn
使用 Azure CLI 2.0 从自定义磁盘创建 Linux VM的更多相关文章
- 如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库
译者按: 你可能npm人家的包过成千上万次,但你是否有创建,发布和使用过自己的npm包? 原文: How to create, publish and use your own VueJS Compo ...
- 从专用磁盘创建 Windows VM
通过使用 Powershell 将专用托管磁盘附加为 OS 磁盘来创建新 VM. 专用磁盘是保留原始 VM 中的用户帐户.应用程序和其他状态数据的现有 VM 中虚拟硬盘 (VHD) 的副本. 使用专用 ...
- 【Microsoft Azure 的1024种玩法】五、基于Azure Cloud Shell 一站式创建Linux VM
[文章简介] Azure Cloud Shell 是一个用于管理 Azure 资源的.可通过浏览器访问的交互式经验证 shell. 它使用户能够灵活选择最适合自己工作方式的 shell 体验,无论是 ...
- Azure CLI 2.0-Azure新命令行工具介绍
Azure CLI 2.0 是 Azure 的新命令行体验,用于管理 Azure 资源. 可以将其安装在 macOS.Linux 和 Windows 上,然后从命令行运行它. Azure CLI 2. ...
- 使用 Azure CLI 管理 Azure 磁盘
Azure 虚拟机使用磁盘来存储 VM 操作系统.应用程序和数据. 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置. 本教程介绍如何部署和管理 VM 磁盘. 学习内容: OS 磁盘和临时 ...
- 使用 Azure CLI 创建和管理 Linux VM
Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...
- 使用 Azure CLI 创建 Windows 虚拟机
Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍如何使用 Azure CLI 部署运行 Windows Server 2016 的虚拟机. 部署完成后,我们连接到服 ...
- 使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机
Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程将指导读者部署两个虚拟机,并为这些 VM 配置 Azure 网络. 本教程中的示例假设 VM 将要托管包含数据库后端的 Web ...
- 使用 Azure CLI 创建 Linux 虚拟机
Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...
随机推荐
- 仿照swpu邮寄系统的登录页面
实验过程 跟着老师的文档过了一遍手,稍作了修改 效果展示 页面在网盘: 链接:https://pan.baidu.com/s/1jsT0SDiiJXzPtR93ZAh1YA 提取码:9miq
- Docker - 故障排查指南
这阵子开始捣鼓 Docker,遇到过不少问题,下面记录下问题以及解决方案 一.Docker 报 Failed to start Docker Application Container Engine ...
- ifconfig command not found
CentOS minimal 命令做了修改 可以运行 ip addr
- eureka 和zookeeper 区别 优势
作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的, ...
- JavaScript 刷题一
最近读<JavaScirpt编程精解>,想把里面的三个大的程序实现,现在记录下来. 问题一: 从下面这封信中,emily奶奶每封信的结尾都会用同样的格式注明哪只猫出生了,哪只猫死去了.现要 ...
- 使用swiper来实现轮播图
使用swiper来实现轮播图 swiper实现轮播图几乎是没有一点点技术含量,但是用起来却很方便,包括对移动端的支持也很好. 由于简单这里当然就不会去详细介绍了,推荐两个网址: 1.http://ww ...
- 说说移动端web开发中的点击穿透问题
最近一直在忙于一个无线端的项目,由于之前主要工作都是在桌面端,移动端接触的比较少,所以中间遇到了很多的坑,做一个简单的记录. 问题背景 需求中有这样的一个功能,点击取件信息的时候会弹出一个地址列表的浮 ...
- CF520B——Two Buttons——————【广搜或找规律】
J - Two Buttons Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- vue(2.0)+vue-router(2.0)+vuex(2.0)实战
好久没更新自己的知识库,刚好借双十一的契机,用上了vue(2.0)+vue-router(2.0)+vuex(2.0)来开发公司的双十一电商活动. 项目目录结构: 运行: npm install np ...
- storm之topology的启动
一个topology的启动包括了三个步骤 1)创建TopologyBuilder,设置输入源,输出源 2)获取config 3)提交topology(这里不考虑LocalCluster本地模式) 以s ...