Creare e caricare un'immagine disco OpenBSD in Azure

Questo articolo descrive come creare e caricare un disco rigido virtuale (VHD) che contiene il sistema operativo OpenBSD. Dopo il caricamento, è possibile usarlo come immagine personalizzata per creare una macchina virtuale in Azure tramite l'interfaccia della riga di comando di Azure.

Prerequisiti

In questo articolo si presuppone che l'utente disponga degli elementi seguenti:

Preparare l'immagine OpenBSD per Azure

Nella macchina virtuale in cui è stato installato il sistema operativo OpenBSD 6.1 con l'aggiunta del supporto Hyper-V, completare le procedure seguenti:

  1. Se DHCP non è stato abilitato durante l'installazione, abilitare il servizio come segue:

    echo dhcp > /etc/hostname.hvn0
    
  2. Configurare una console seriale come segue:

    echo "stty com0 115200" >> /etc/boot.conf
    echo "set tty com0" >> /etc/boot.conf
    
  3. Configurare l'installazione del pacchetto come segue:

    echo "https://ftp.openbsd.org/pub/OpenBSD" > /etc/installurl
    
  4. Per impostazione predefinita, l'utente root è disabilitato nelle macchine virtuali in Azure. Gli utenti possono eseguire comandi con privilegi elevati usando il comando doas nella VM OpenBSD. Doas è abilitato per impostazione predefinita. Per altre informazioni, vedere doas.conf.

  5. Installare e configurare i prerequisiti per l'agente di Azure come segue:

    pkg_add py-setuptools openssl git
    ln -sf /usr/local/bin/python2.7 /usr/local/bin/python
    ln -sf /usr/local/bin/python2.7-2to3 /usr/local/bin/2to3
    ln -sf /usr/local/bin/python2.7-config /usr/local/bin/python-config
    ln -sf /usr/local/bin/pydoc2.7  /usr/local/bin/pydoc
    
  6. La versione più recente dell'agente di Azure è sempre disponibile in GitHub. Installare l'agente come segue:

    git clone https://github.com/Azure/WALinuxAgent 
    cd WALinuxAgent
    python setup.py install
    waagent -register-service
    
    Importante

    Dopo aver installato l'agente di Azure, è consigliabile verificare che sia in esecuzione come segue:

    ps auxw | grep waagent
    root     79309  0.0  1.5  9184 15356 p1  S      4:11PM    0:00.46 python /usr/local/sbin/waagent -daemon (python2.7)
    cat /var/log/waagent.log
    
  7. Eseguire il deprovisioning del sistema per pulire il sistema e renderlo idoneo per un nuovo provisioning. Il comando seguente elimina anche l'ultimo account utente di cui è stato effettuato il provisioning e i dati associati:

    waagent -deprovision+user -force
    

Ora è possibile arrestare la macchina virtuale.

Preparare il disco rigido virtuale

Il formato VHDX non è supportato in Azure, solo nei VHD fissi. È possibile convertire il disco in formato VHD fisso tramite la console di gestione di Hyper-V o il cmdlet convert-vhd di PowerShell. Di seguito è riportato un esempio.

Convert-VHD OpenBSD61.vhdx OpenBSD61.vhd -VHDType Fixed

Creare e caricare risorse di archiviazione

Creare prima un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:

az group create --name myResourceGroup --location eastus

Per caricare il disco rigido virtuale, creare un account di archiviazione con il comando az storage account create. Il nome dell'account di archiviazione deve essere univoco; assegnare quindi all'account il proprio nome. L'esempio seguente crea un account di archiviazione denominato mystorageaccount:

az storage account create --resource-group myResourceGroup \
    --name mystorageaccount \
    --location eastus \
    --sku Premium_LRS

Per controllare l'accesso all'account di archiviazione, ottenere la chiave di archiviazione con az storage account keys list come segue:

STORAGE_KEY=$(az storage account keys list \
    --resource-group myResourceGroup \
    --account-name mystorageaccount \
    --query "[?keyName=='key1']  | [0].value" -o tsv)

Per separare in modo logico i dischi rigidi virtuali caricati, creare un contenitore nell'account di archiviazione con az storage container create:

az storage container create \
    --name vhds \
    --account-name mystorageaccount \
    --account-key ${STORAGE_KEY}

Caricare infine il disco rigido virtuale con az storage blob upload come segue:

az storage blob upload \
    --container-name vhds \
    --file ./OpenBSD61.vhd \
    --name OpenBSD61.vhd \
    --account-name mystorageaccount \
    --account-key ${STORAGE_KEY}

Creare una macchina virtuale dal disco rigido virtuale

È possibile creare una macchina virtuale con un script di esempio o direttamente con az vm create. Per specificare il disco rigido virtuale OpenBSD caricato, usare il parametro --image come segue:

az vm create \
    --resource-group myResourceGroup \
    --name myOpenBSD61 \
    --image "https://mystorageaccount.blob.core.windows.net/vhds/OpenBSD61.vhd" \
    --os-type linux \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/id_rsa.pub

Ottenere l'indirizzo IP per la VM OpenBSD con az vm list-ip-addresses come segue:

az vm list-ip-addresses --resource-group myResourceGroup --name myOpenBSD61

Ora è possibile connettersi alla VM OpenBSD tramite SSH nel modo usuale:

ssh azureuser@<ip address>

Passaggi successivi

Per altre informazioni sul supporto di Hyper-V in OpenBSD 6.1, vedere OpenBSD 6.1 e hyperv.4.

Per creare una macchina virtuale dal disco gestito, vedere az disk.