# Cloud-init w Wirtualnych Maszynach

Cloud-init stanowi rozwiązanie umożliwiające wstępne skonfigurowanie Wirtualnej Maszyny do pracy już w momencie jej uruchomienia. Dostępne jest w Wirtualnych Maszynach uruchomionych z Rekomendowanych Obrazów bazujących na systemie Linux.

Domyślna konfiguracja Cloud-init w Rekomendowanych Obrazach zapewnia po utworzeniu instancji z Obrazu:

  • utworzenie pierwszego użytkownika, z wykorzystaniem hasła lub kluczy SSH,
  • konfiguracje łączności sieciowej dla podłączonych Adapterów sieciowych,
  • aktualizacje lokalnej nazwę hosta (hostname) na zgodną z nazwą Wirtualnej Maszyny w Platformie.

Jak również rozszerza ostatnią partycje dysku systemowego wraz z każdym restartem systemu.

Cloud-init przez Użytkownika może zostać przykładowo wykorzystany do początkowej konfiguracji oprogramowania w Wirtualnych Maszyn uruchomionych w celu obsłużenia krótkotrwałego wzrostu zużycia, albo wprowadzenia standardowych poprawek bezpieczeństwa odpowiadających polityce organizacji. W tym artykule zostanie przedstawione w jaki sposób wykorzystać ten mechanizm do instalacji serwera Apache2 oraz do ustawienia wybranej nazwy hosta przy utworzeniu Wirtualnej Maszyny.

W przypadku wykonania własnego Obraz w oparciu o instancje utworzoną na podstawie Rekomendowanego Obrazu konfiguracja Cloud-init jest przeniesiona, zatem nastąpi aktualizacja nazwę hosta dla każdej nowej instancji, nawet utworzonej z własnego Obrazu. Przedstawione zostanie w jaki sposób wpłynąć na to zachowanie poprzez konfiguracje lokalnej konfiguracji cloud-init.

# Warunki wstępne

  • zainstalowane narzędzie CLI
  • wykorzystanie Rekomendowanych Obrazów bazujących na systemie Linux

# Utworzenie Wirtualnej Maszyny z Apache2

# Utwórz lokalny, pomocniczy plik

Utwórz nowy plik konfiguracyjny:

sudo nano userdata.sh

Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).

Wklej poniższą zawartość:

set -eux
apt-get update
apt-get install -y apache2
rm /var/www/html/*
echo '<html><body>Hello world!</body></html>' >> /var/www/html/index.html
echo 'Virtual machine setup completed.';

# Utwórz Wirtualną Maszynę z wykorzystaniem Metadanych Użytkownika z pliku userdata.sh

Wykonaj następujące polecenie:

h1 vm create --name test-apache --os-disk ssd,10 --type a1.nano --image ubuntu --ssh my-ssh --userdata-file ./userdata.sh

# Zweryfikuj wykonanie operacji w dzienniku cloud-init

Wykonaj następujące polecenie:

h1 vm ssh --vm test-apache --command 'cat /var/log/cloud*'

# Zweryfikuj uruchomienie serwera WWW

Wykonaj następujące polecenie:

h1 vm ssh --vm test-apache --command 'sudo service apache2 status'

# Zweryfikuj zapis strony

Wykonaj następujące polecenie:

h1 vm ssh --vm test-apache --command 'curl localhost:80'

# Utworzenie Wirtualnej Maszyny z wybraną nazwą hosta

# Utwórz lokalnie plik userdata.cloud zawierający dynamiczną konfiguracje Cloud-init

Utwórz nowy plik konfiguracyjny:

sudo nano userdata.cloud

Możesz zapoznać się z objaśnieniem polecenia na explainshell.com (opens new window).

Wklej poniższą zawartość:

#cloud-config
hostname: fqdn_example

# Utwórz Wirtualną Maszynę z wykorzystaniem Metadanych Użytkownika z pliku userdata.sh

Wykonaj następujące polecenie:

h1 vm create --name test-hostname --os-disk ssd,10 --type a1.nano --image ubuntu --ssh my-ssh --userdata-file ./userdata.cloud

# Zweryfikuj konfiguracje podstawowej nazwy hosta

Wykonaj następujące polecenie:

h1 vm ssh --vm test-hostname --command 'hostname'

# Wyłączenie aktualizacji nazwy hosta w Wirtualnej Maszyny

# Utwórz Wirtualną Maszynę

Wykonaj następujące polecenie:

h1 vm create --name test-cfg --os-disk ssd,10 --type a1.nano --image ubuntu --ssh my-ssh

# Zmodyfikuj trwale konfiguracje Cloud-init

Wykonaj następujące polecenie:

h1 vm ssh --vm test-cfg --command 'sudo sed -i "s/preserve_hostname: .*/preserve_hostname: true/g" /etc/cloud/cloud.cfg'

# Wykonaj Obraz z Wirtualnej Maszyny

Wykonaj następujące polecenie:

h1 image create  --name no-preserve-hostname --vm test-cfg

# Utwórz nowy Wirtualną Maszynę z Obrazu

Wykonaj następujące polecenie:

h1 vm create --name test-preserve-hostname --os-disk ssd,10 --type a1.nano --image no-preserve-hostname --ssh my-ssh

# Zweryfikuj skuteczność wprowadzonych zmian w Cloud-init

Wykonaj następujące polecenie:

h1 vm ssh --vm test-preserve-hostname --command 'hostname'
Czy uważasz ten artykuł za przydatny? Tak Nie