Cloud-init i skrypty startowe
Jak automatycznie skonfigurować serwer przy pierwszym uruchomieniu za pomocą #cloud-config lub skryptu bash.
Cloud-init pozwala automatycznie skonfigurować serwer przy pierwszym uruchomieniu: zainstalować pakiety, utworzyć pliki czy uruchomić polecenia. Dzięki temu nowy serwer jest od razu gotowy do pracy.
Gdzie dodać cloud-init
- Przy tworzeniu serwera — w kreatorze, w sekcji 6. Cloud-init (opcjonalnie), kliknij + Dodaj własny cloud-init.
- Przy reinstalacji — na karcie Reinstalacja, w polu Cloud-init po reinstalacji. Pole jest wypełnione treścią użytą wcześniej, więc możesz ją poprawić.
Na karcie Przegląd serwer z własnym cloud-init ma etykietę własny cloud-init.
Uwaga: Cloud-init wykonuje się raz, przy pierwszym uruchomieniu systemu, z uprawnieniami root. Zmiana treści dla istniejącego serwera jest możliwa tylko przez reinstalację, która usuwa dane z dysku.
Dwa formaty
Treść musi zaczynać się od jednego z nagłówków:
#cloud-config— konfiguracja w formacie YAML,#!— skrypt, np.#!/bin/bash.
Maksymalny rozmiar to 64 KB. Panel sprawdza treść na bieżąco i pod polem pokazuje „Cloud-config poprawny” albo „Skrypt poprawny”, a przy błędzie — opis problemu, np. błąd składni YAML z numerem linii. Z błędną treścią nie utworzysz serwera.
Gotowe szablony
Nad polem edycji są przyciski Szablony: Docker, Nginx, Aktualizacje + strefa czasowa i Skrypt bash. Kliknięcie wstawia przykład, który możesz edytować. Wyczyść usuwa treść.
Przykład: #cloud-config
#cloud-config
package_upgrade: true
timezone: Europe/Warsaw
packages:
- nginx
- git
write_files:
- path: /var/www/html/index.html
content: |
<h1>Działa!</h1>
runcmd:
- systemctl enable --now nginx
Najczęściej używane klucze:
packages— lista pakietów do instalacji,package_upgrade: true— aktualizacja systemu,write_files— tworzenie plików,runcmd— polecenia wykonywane na końcu konfiguracji,timezone— strefa czasowa.
Przykład: skrypt bash
#!/bin/bash
set -e
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
echo "Serwer uruchomiony $(date)" > /root/pierwszy-start.txt
Co ustawia panel, a co Ty
Panel sam konfiguruje nazwę hosta, hasło root lub klucze SSH oraz sieć. Twój cloud-init jest dołączany do tej konfiguracji — Twoje listy packages, runcmd i write_files są dopisywane, ale nie nadpiszą ustawień tożsamości serwera. Nie musisz więc dodawać kluczy SSH w cloud-init.
Sprawdzanie wyniku
Konfiguracja może trwać kilka minut po starcie serwera. Zaloguj się przez SSH i sprawdź:
cloud-init status --wait
Szczegółowy log znajdziesz w plikach:
less /var/log/cloud-init-output.log
less /var/log/cloud-init.log
Wskazówka: Jeśli skrypt nie zadziałał, przetestuj polecenia ręcznie na serwerze, a gotową wersję użyj przy kolejnym serwerze. Gdy instalacja pakietów się nie powiodła, upewnij się, że serwer ma dostęp do Internetu (publiczny adres lub NAT) — zobacz Adresy IP serwera.
Gotowe aplikacje
Jeśli potrzebujesz popularnej aplikacji (np. WordPress, Docker, n8n), zamiast pisać cloud-init wybierz ją w kreatorze w zakładce Aplikacje — zobacz Jak utworzyć serwer.