Uso de cloud-init para agregar a un usuario a una máquina virtual Linux en Azure

Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles

En este artículo se muestra el uso de cloud-init para agrear a un usuario en una máquina virtual (VM) o en conjuntos de escalado de máquinas virtuales (VMSS) en el momento del aprovisionamiento en Azure. Este script cloud-init se ejecuta durante el primer arranque una vez que Azure ha aprovisionado los recursos. Para más información acerca del funcionamiento nativo de cloud-init en Azure y las distribuciones de Linux compatibles, consulte la introducción a cloud-init.

Incorporación de un usuario a una máquina virtual con cloud-init

Una de las primeras tareas en cualquier máquina virtual Linux nueva es agregar un usuario para usted mismo a fin de evitar el uso de root. Las claves SSH son un procedimiento recomendado de seguridad y facilidad de uso. Las claves se agregan al archivo ~/.ssh/authorized_keys con este script cloud-init.

Para agregar un usuario a una máquina virtual Linux, cree un archivo en el shell actual denominado cloud_init_add_user.txt y pegue la configuración siguiente. Para este ejemplo, cree el archivo en Cloud Shell, no en la máquina local. Puede utilizar el editor que prefiera. Asegúrese de que todo el archivo cloud-init se copia correctamente, especialmente la primera línea. Tiene que proporcionar su propia clave pública (por ejemplo, el contenido de ~/.ssh/id_rsa.pub) para el valor de ssh-authorized-keys:, aquí se ha abreviado para simplificar el ejemplo.

#cloud-config
users:
  - default
  - name: myadminuser
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh-authorized-keys:
      - ssh-rsa AAAAB3<snip>

Nota

El archivo #cloud-config incluye el parámetro - default incluido. Esto anexará al usuario al usuario administrador existente creado durante el aprovisionamiento. Si crea un usuario sin el parámetro - default, el usuario de administrador generado automáticamente que creó la plataforma Azure se sobrescribirá.

Antes de implementar esta imagen, debe crear un grupo de recursos con el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.

az group create --name myResourceGroup --location eastus

Ahora, cree una máquina virtual con az vm create y especifique el archivo cloud-init con --custom-data cloud_init_add_user.txt como se indica a continuación:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_add_user.txt \
  --generate-ssh-keys

Nota

Reemplace los valores myResourceGroup, vmName e imageCIURN según corresponda. Asegúrese de que se elige una imagen con Cloud-init.

SSH a la dirección IP pública de la máquina virtual que se muestra en la salida del comando anterior. Escriba su propio user y publicIpAddress, como se indica a continuación:

ssh <user>@<publicIpAddress>

Para confirmar que se agregó el usuario a la máquina virtual y los grupos especificados, consulte el contenido del archivo /etc/group como se indica a continuación:

sudo cat /etc/group

En la salida de ejemplo siguiente se muestra que el usuario del archivo cloud_init_add_user.txt se agregó a la máquina virtual y al grupo adecuado:

root:x:0:
<snip />
sudo:x:27:myadminuser
<snip />
myadminuser:x:1000:

Pasos siguientes

Para ejemplos de cloud-init de cambios de configuración adicionales, vea lo siguiente: