在 Azure 中使用 cloud-init 设置 Linux VM 的主机名Use cloud-init to set hostname for a Linux VM in Azure

本文演示如何在 Azure 中使用 cloud-init 在预配时间配置虚拟机 (VM) 或虚拟机规模集 (VMSS) 上特定的主机名。This article shows you how to use cloud-init to configure a specific hostname on a virtual machine (VM) or virtual machine scale sets (VMSS) at provisioning time in Azure. Azure 预配资源后,这些 cloud-init 脚本即会在第一次启动时运行。These cloud-init scripts run on first boot once the resources have been provisioned by Azure. 有关 cloud-init 如何在 Azure 以及受支持的 Linux 发行版中本机工作的详细信息,请参阅 cloud-init 概述For more information about how cloud-init works natively in Azure and the supported Linux distros, see cloud-init overview

使用 cloud-init 设置主机名称Set the hostname with cloud-init

默认情况下,在 Azure 中创建新的虚拟机时,主机名和 VM 名称相同。By default, the hostname is the same as the VM name when you create a new virtual machine in Azure. 如果希望在 Azure 中使用 az vm create 创建 VM 时通过运行 cloud-init 脚本来更改默认主机名,请通过 --custom-data 开关指定 cloud-init 文件。To run a cloud-init script to change this default hostname when you create a VM in Azure with az vm create, specify the cloud-init file with the --custom-data switch.

要查看操作中的升级进程,请在当前 shell 中创建一个名为“cloud_init_hostname.txt”的文件并粘贴下面的配置 。To see upgrade process in action, create a file in your current shell named cloud_init_hostname.txt and paste the following configuration. 对于此示例,请在本地计算机中创建文件。For this example, create the file on your local machine. 可使用任何想要使用的编辑器。You can use any editor you wish. 输入 sensible-editor cloud_init_hostname.txt 以创建文件并查看可用编辑器的列表。Enter sensible-editor cloud_init_hostname.txt to create the file and see a list of available editors. 选择 #1 以使用 nano 编辑器 。Choose #1 to use the nano editor. 请确保已正确复制整个 cloud-init 文件,尤其是第一行。Make sure that the whole cloud-init file is copied correctly, especially the first line.

#cloud-config
hostname: myhostname

在部署此映像之前,需要使用 az group create 命令创建资源组。Before deploying this image, you need to create a resource group with the az group create command. Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。An Azure resource group is a logical container into which Azure resources are deployed and managed. 以下示例在“chinaeast” 位置创建名为“myResourceGroup” 的资源组。The following example creates a resource group named myResourceGroup in the chinaeast location.

az group create --name myResourceGroup --location chinaeast

现在,使用 az vm create 创建 VM,并通过 --custom-data cloud_init_hostname.txt 指定 cloud-init 文件,如下所示:Now, create a VM with az vm create and specify the cloud-init file with --custom-data cloud_init_hostname.txt as follows:

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS:7-CI:latest \
  --custom-data cloud_init_hostname.txt \
  --generate-ssh-keys 

创建后,Azure CLI 将显示有关 VM 的信息。Once created, the Azure CLI shows information about the VM. 使用 publicIpAddress 通过 SSH 连接到 VM。Use the publicIpAddress to SSH to your VM. 按如下所示输入自己的地址:Enter your own address as follows:

ssh <publicIpAddress>

若要查看 VM 名称,请使用 hostname 命令,如下所示:To see the VM name, use the hostname command as follows:

hostname

VM 应将主机名称报告为在 cloud-init 文件中设置的值,如以下示例输出中所示:The VM should report the hostname as that value set in the cloud-init file, as shown in the following example output:

myhostname

后续步骤Next steps

有关配置更改的其他 cloud-init 示例,请参阅以下文章:For additional cloud-init examples of configuration changes, see the following: