Usare cloud-init per aggiungere un utente a una VM Linux in Azure

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Questo articolo illustra come usare cloud-init per aggiungere un utente in una macchina virtuale (VM) o un set di scalabilità di macchine virtuali in fase di provisioning in Azure. Questo script cloud-init viene eseguito al primo avvio dopo il provisioning delle risorse da parte di Azure. Per altre informazioni sul funzionamento di cloud-init in modo nativo in Azure e sulle distribuzioni Linux supportate, vedere la panoramica di cloud-init.

Aggiungere un utente a una macchina virtuale con cloud init

Una delle prime attività eseguite in qualsiasi nuova VM Linux è l'aggiunta di un altro utente per evitare di usare root. Le chiavi SSH sono la procedura consigliata per la sicurezza e l'usabilità. Le chiavi vengono aggiunte al file ~/.ssh/authorized_keys con questo script cloud-init.

Per aggiungere un utente a una VM Linux, creare un file denominato cloud_init_add_user.txt nella shell corrente e incollare la configurazione seguente. Per questo esempio, creare il file in Cloud Shell anziché nel computer locale. È possibile usare qualsiasi editor. Assicurarsi che l'intero file cloud-init venga copiato correttamente, in particolare la prima riga. Come valore di ssh-authorized-keys: è necessario specificare la propria chiave pubblica (ad esempio il contenuto di ~/.ssh/id_rsa.pub). Qui è stato abbreviato per semplificare l'esempio.

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

Nota

Il file #cloud-config include il parametro - default. In questo modo, l'utente verrà aggiunto all'utente amministratore esistente creato durante il provisioning. Se si crea un utente senza il parametro - default, l'utente amministratore generato automaticamente dalla piattaforma Azure verrà sovrascritto.

Prima di distribuire l'immagine, è necessario creare un gruppo di risorse con il comando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

az group create --name myResourceGroup --location eastus

Creare ora una VM con az vm create e specificare il file cloud-init con --custom-data cloud_init_add_user.txt come segue:

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

Nota

Sostituire i valori myResourceGroup, vmNamee imageCIURN di conseguenza. Assicurarsi che sia selezionata un'immagine con Cloud-init.

Stabilire una connessione SSH all'indirizzo IP pubblico della VM visualizzata nell'output del comando precedente. Immettere il proprio utente e publicIpAddress come indicato di seguito:

ssh <user>@<publicIpAddress>

Per verificare che l'utente sia stato aggiunto alla VM e ai gruppi specificati, visualizzare il contenuto del file /etc/group come segue:

sudo cat /etc/group

L'output di esempio seguente illustra che l'utente dal file cloud_init_add_user.txt è stato aggiunto alla VM e al gruppo appropriato:

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

Passaggi successivi

Per altri esempi cloud-init di modifiche di configurazione, vedere i documenti seguenti: