IBM Cloud Docs
Dati utente

Dati utente

Quando crei un'istanza IBM Cloud® Virtual Servers for Virtual Private Cloud, puoi specificare dei dati utente facoltativi che eseguono automaticamente delle attività di configurazione comuni o eseguono degli script. Per ulteriori informazioni sui dati utente e sui nomi utente, vedi Accesso IAM.

IBM Cloud VPC utilizza la tecnologia Cloud-init per configurare le istanze dei server virtuali. Il campo Dati utente nella pagina Nuovo server virtuale per VPC consente agli utenti di inserire le opzioni di configurazione personalizzate utilizzando cloud - init. Cloud - init supporta diversi formati per i dati di configurazione, incluso yaml in un file cloud - config.

È possibile specificare i dati di configurazione del cloud direttamente nel campo Dati utente, oppure includere i dati di configurazione del cloud in un file di testo e specificare il nome del file quando si crea l'istanza. Ad esempio, se salvi i dati cloud-config in userdata.blob, specifica -user-data @userdata.blob quando crei un'istanza utilizzando la CLI.

Quando crei un'istanza del server virtuale utilizzando l'immagine IBM Hyper Protect Container Runtime, devi passare un contratto come parte del campo Dati utente. Poiché l'immagine è un'immagine bloccata con accesso SSH disabilitato, l'unico modo per interagire con l'istanza è passare il contratto.

Il limite di dimensione del campo (o file) Dati utente è 64 K byte.

Esempi di dati utente per Linux

L'account utente predefinito per Linux dipende dal sistema operativo. Per vedere l'elenco dei sistemi operativi e i relativi account utente predefiniti, consultare Connessione alle istanze di Linux: Determinazione dell'account utente predefinito.

Aggiunta di un utente e di una chiave SSH

Il seguente esempio cloud-init mostra come un utente Linux può aggiungere un utente e fornire all'utente una chiave SSH autorizzata. Il campo Nome contiene la chiave pubblica che viene aggiunta a ~/.ssh/authorized_keys.

Per immagini Linux , il tipo di chiave SSH Ed25519 può essere utilizzato solo se il server SSH per il sistema operativo supporta questo tipo di chiave. Per ulteriori informazioni, vedi Introduzione alle chiavi SSH.

#cloud-config
users:
  - name: demouser
    gecos: Demo User
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    ssh_import_id: None
    lock_passwd: true
    ssh_authorized_keys:
        - <ssh public key>

Il seguente esempio di script shell mostra in che modo un utente Linux può aggiungere una chiave SSH per l'utente corrente.

#!/bin/bash
echo <sshKey> > ~/.ssh/authorized_keys

Puoi incollare uno di questi esempi direttamente nel campo Dati utente . I dati utente sono quindi disponibili per la VSI (virtual server instance) durante il provisioning.

Se si specifica di includere un file e ci sono spazi che precedono il nome del file, i dati non vengono interpretati correttamente. Verificare che #!/bin/sh o #!/bin/bash siano i primi caratteri sulla riga che segue immediatamente la designazione di fine file (<<EOF). I caratteri non possono essere rientrati.

Per ulteriori esempi e informazioni sui dati utente di Linux, vedere Esempi di configurazione cloud).

Configurazione di un'archiviazione di una singola istanza disco utilizzando lo script cloud - config

L'archiviazione delle istanze è una funzione di VPC in cui puoi richiedere istanze del server virtuale con un'archiviazione locale veloce collegata. Per ulteriori informazioni sull'archiviazione dell'istanza, fare riferimento a Informazioni sull'archiviazione dell'istanza.

Per impostazione predefinita, quando esegui il provisioning di un'istanza del server virtuale con l'archiviazione dell'istanza e accedi a tale server per la prima volta, i dischi di archiviazione dell'istanza non saranno configurati. Vengono visualizzati come dispositivi di blocco (ad esempio /dev/vdb) e devono essere eseguiti i seguenti prima di poterli utilizzare con un file system:

  • Partizionare il dispositivo.
  • Formattare la partizione con un file system.
  • Montare il file system.

Queste attività possono essere eseguite automaticamente anche quando si utilizza il campo Dati utente per eseguire il provisioning dell'istanza virtuale. Lo script cloud-config definisce queste azioni:

  • Incarica il processo di inizializzazione del cloud di essere eseguito durante il primo avvio della tua istanza virtuale.
  • Partiziona automaticamente il dispositivo.
  • Formatta la partizione con un filesystem ext4.
  • Monta il file system.

Non specificare il campo Dati utente per configurare automaticamente un disco di archiviazione dell'istanza che non fa parte della definizione dell'istanza virtuale. Il tentativo di configurare automaticamente un disco di archiviazione dell'istanza che non fa parte della definizione dell'istanza virtuale è indirizzato a dev/vdb device e potrebbe puntare all'origine dati cloud - init, che danneggerebbe le configurazioni cloud - init come il nome host e le chiavi ssh.

Il seguente esempio mostra i dati utente che configurano automaticamente un disco di archiviazione dell'istanza. Questo esempio può essere usato con un profilo di istanza che specifica un disco singolo.

#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first
# virtio_blk device after the boot device, initialize ext4 on it and
# mount it on a folder matching the label.
#
disk_setup:
  /dev/vdb:
    table_type: 'mbr'
    layout:
    - 100
    overwrite: false

fs_setup:
  - label: /mnt/inststg1
    filesystem: 'ext4'
    device: /dev/vdb1
    overwrite: false

runcmd:
  - [ mkdir, /mnt/inststg1 ]

mounts:
  - ["/dev/vdb1", "/mnt/inststg1"]

mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]

Questo script configura /dev/vdb, il dispositivo di archiviazione della prima istanza con il tipo di interfaccia virtio_blk disponibile nell'istanza virtuale. Questo script può essere incollato nel campo Dati utente o importato utilizzando il link Importa dati utente nell'interfaccia utente.

Questo script è stato testato con un'immagine stock di Ubuntu 20.04 LTS Focal Fossa. Anche se lo script potrebbe essere appropriato per altre immagini stock e personalizzate di Linux, è possibile che siano necessarie delle modifiche allo script.

Lo script cloud - config non è appropriato per i server virtuali Windows. Se la tua istanza non contiene l'archiviazione dell'istanza, non utilizzare questo script. Potrebbe configurare una periferica non desiderata.

Vedere le seguenti informazioni sugli elementi che si trovano nello script cloud-config:

  • disk_setup: crea una singola partizione predefinita che abbraccia l'intero disco con un record di avvio principale. Il comando "overwrite: false" fa sì che questa operazione venga ignorata se il dispositivo è già partizionato.
  • fs_setup: crea un file system ext4 sulla prima partizione del dispositivo a blocchi vdb e gli fornisce l'etichetta “inststg1”. È possibile regolare il tipo di file system e l'etichetta in base alle proprie necessità. L'impostazione "overwrite: false" impedisce la formattazione della partizione se è già formattata con un file system.
  • runcmd: crea una directory da utilizzare come punto di montaggio off ' /' nel file system principale gerarchico.
  • montaggi: esegue il montaggio del dispositivo del file system su /inststg1. È possibile ridenominare il percorso della directory qui e sotto runcmd.
  • mount_default_fields: crea una direttiva di montaggio permanente nel file /etc/fstab. Se si immette un comando di riavvio, il server virtuale viene ripristinato con il file system di archiviazione dell'istanza ancora montato.

Anche CLI e API supportano il campo Dati utente.

Questo esempio di script di configurazione cloud configura automaticamente un dispositivo di blocco /dev/vdb di archiviazione dell'istanza. Se si riavvia solo il server virtuale, questa configurazione continua a funzionare perché la configurazione e i dati persistono. Tuttavia, se si avvia un server virtuale precedentemente arrestato, al momento dell'avvio il server virtuale dispone di una nuova serie di dischi di archiviazione delle istanze. Questa situazione richiede che i passi cloud - init vengano eseguiti di nuovo manualmente. Per impostazione predefinita, lo script cloud-config viene eseguito solo al primo avvio. Puoi anche modificare la sezione cloud - init del file cloud.config in modo che i passi cloud - init vengano eseguiti automaticamente a ogni avvio. Per la procedura, vedi la sezione Modifica la sezione cloud_cloud_init_modules del file cloud.config da eseguire su ogni sezione di avvio.

Configurazione di un'istanza di archiviazione a due dischi utilizzando lo script cloud-config

Il seguente esempio mostra i dati utente che configurano automaticamente un disco di archiviazione dell'istanza. Questo esempio può essere usato con un profilo di istanza che specifica due dischi.

#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first two
# virtio_blk devices after the boot device, initialize ext4 on them and
# mount them on new folders off of ‘/mnt/’.
#
disk_setup:
  /dev/vdb:
    table_type: 'mbr'
    layout:
    - 100
    overwrite: false
  /dev/vdc:
    table_type: 'mbr'
    layout:
    - 100
    overwrite: false

fs_setup:
  - label: /mnt/inststg1
    filesystem: 'ext4'
    device: /dev/vdb1
    overwrite: false
  - label: /mnt/inststg2
    filesystem: 'ext4'
    device: /dev/vdc1
    overwrite: false

runcmd:
  - [ mkdir, /mnt/inststg1 ]
  - [ mkdir, /mnt/inststg2 ]

mounts:
  - ["/dev/vdb1", "/mnt/inststg1"]
  - ["/dev/vdc1", "/mnt/inststg2"]

mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]

Questo esempio di script di configurazione cloud configura automaticamente sia l'archiviazione dell'istanza /dev/vdb che i dispositivi di blocco dev/vdc e assume un tipo di interfaccia virtio_blk per l'archiviazione dell'istanza. Se si riavvia solo il server virtuale, questa configurazione continua a funzionare perché la configurazione e i dati persistono.

Se si avvia un server virtuale che era stato arrestato, al momento dell'avvio il server virtuale dispone di una nuova serie di dischi di archiviazione delle istanze. Questa situazione richiede che i passi cloud - init vengano eseguiti di nuovo manualmente. Per impostazione predefinita, lo script cloud-config viene eseguito solo al primo avvio. Puoi anche modificare la sezione cloud - init del file cloud.config in modo che i passi cloud - init vengano eseguiti automaticamente a ogni avvio.

Modifica la sezione cloud_cloud_init_modules del file cloud.config da eseguire a ogni avvio

Lo script cloud - config nell'esempio precedente configura automaticamente un dispositivo a blocchi /dev/vdb di archiviazione dell'istanza. Se si riavvia solo il server virtuale, questa configurazione continua a funzionare perché la configurazione e i dati persistono. Tuttavia, se si avvia un server virtuale che era stato arrestato, il server virtuale dispone di una nuova serie di dischi di archiviazione dell'istanza all'avvio. Questa situazione richiede che i passi cloud - init vengano eseguiti di nuovo manualmente. Per impostazione predefinita, lo script cloud-config viene eseguito solo al primo avvio.

  • È necessaria un'istanza con il campo User Data che specifichi i dati yaml cloud-init dell'esempio precedente.
  • Quando si accede all'istanza avviata, il file system deve essere configurato e montato.
  • Non ci sono altre direttive nelle sezioni disk_setup o mount nel file cloud-config yaml specificate come dati utente.

Per eseguire lo script cloud-config ad ogni avvio successivo, utilizzare la seguente procedura:

  1. Modificare il file etc/cloud/cloud.cfg.

  2. Cerca la sezione " cloud_init_modules ": contiene i moduli disk_setup e mount.

  3. Modificare le righe disk_setup e mount modules in always. La sezione si presenta come segue.

    # The modules that run in the 'init' stage
    cloud_init_modules:
    - migrator
    - seed_random
    - bootcmd
    - write-files
    - growpart
    - resizefs
    - [disk_setup, always]
    - [mounts, always]
    - set_hostname
    - update_hostname
    - update_etc_hosts
    - ca-certs
    - rsyslog
    - users-groups
    - ssh
    
  4. Salvare il file, quindi arrestare e avviare l'istanza. Il montaggio viene creato automaticamente su un file system appena partizionato e formattato.

Esempio di dati utente per Windows

Il seguente esempio mostra i dati utente che possono essere passati a un'istanza Windows. Questo esempio di dati utente imposta il fuso orario.

"user_data": "Content-Type: multipart/mixed; boundary=MIMEBOUNDARY\nMIME-Version: 1.0\n\n--MIMEBOUNDARY\nContent-Type: text/cloud-config; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment; filename=\"cloud-config\"\n#cloud-config\n\nset_timezone: America/Detroit\n\n--MIMEBOUNDARY--\n"

Per ulteriori esempi e informazioni sui dati utente di Windows, consultare la documentazione di Cloudbase-init 1.0.

Esempi di dati utente per Fedora Core OS

I seguenti esempi mostrano i dati utente che possono essere passati a un'istanza Fedora Core OS.

L'accesso utente 'root' è disabilitato per impostazione predefinita in Fedora Core OS. Il login utente 'core' può essere utilizzato per accedere alle istanze Fedora Core OS.

I dati utente di Fedora Core OS devono essere in formato Ignition.

Utilizza il seguente esempio per avviare un'istanza Fedora Core OS

ibmcloud is instance-create $NAME $VPC $ZONE $PROFILE $SUBNET --image-id $IMAGE --key-ids $SSHKEY --user-data @example.ign

Utilizzare il seguente esempio per creare un utente locale.

  1. Scrivere la configurazione di Butane nel formato YAML.

    Configurazione Butane

    variant: fcos
    version: 1.4.0
    passwd:
      users:
        - name: demouser
    
  2. Utilizzare Butane per convertire la configurazione Butane in una configurazione Ignition.

    Configurazione accensione

    
    "ignition": {
        "version": "1.4.0"
      },
      "passwd": {
        "users": [
          {
            "name": "demouser"
          }
        ]
      }
    }
    

Utilizzare i seguenti dati utente di esempio per aggiungere una chiave SSH per un utente locale.

  1. Scrivere la configurazione di Butane nel formato YAML.

    Configurazione Butane

    variant: fcos
    version: 1.4.0
    passwd:
      users:
        - name: demouser
          ssh_authorized_keys:
            - <ssh public key>
    
  2. Utilizzare Butane per convertire la configurazione Butane in una configurazione Ignition.

    Configurazione accensione

    
      "ignition": {
        "version": "1.4.0"
      },
      "passwd": {
        "users": [
          {
            "name": "demouser",
            "sshAuthorizedKeys": [
              "<ssh public key>"
            ]
          }
        ]
      }
    }
    

Per ulteriori esempi e informazioni sui dati utente del sistema operativo Fedora Core, consultare Fedora Project documentation.

Passi successivi

Dopo aver scelto un profilo, è tempo di pianificare e creare un'istanza.