Udostępnij za pośrednictwem


Szczegółowe informacje na temat pakietu cloud-init

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Aby dowiedzieć się więcej na temat pakietu cloud-init lub rozwiązywania problemów na wyższym poziomie, musisz zrozumieć, jak działa. W tym dokumencie wyróżniono ważne elementy i wyjaśniono specyfikę platformy Azure.

Gdy plik cloud-init jest dołączany do uogólnionego obrazu, a maszyna wirtualna jest tworzona na podstawie tego obrazu, przetwarza konfiguracje i przechodzi przez pięć etapów podczas początkowego rozruchu. Te etapy pokazują, kiedy cloud-init stosuje swoje konfiguracje.

Omówienie konfiguracji Cloud-Init

Konfiguracja maszyny wirtualnej na platformie używa cloud-init do zastosowania wielu konfiguracji. Główne konfiguracje, z którymi korzystasz, to User data (customData), która obsługuje wiele formatów. Aby uzyskać więcej informacji, zobacz dokumentacjęUser-Data Formaty i cloud-init 21.2. Istnieje również możliwość dodawania i uruchamiania skryptów (/var/lib/cloud/scripts) dla innych konfiguracji.

Wstępnie skonfigurowane obrazy Azure Marketplace

Niektóre konfiguracje są już zawarte w obrazach Azure Marketplace dostarczanych z rozwiązaniem cloud-init.

  • Źródło danych w chmurze — cloud-init zawiera kod, który może współdziałać z platformami w chmurze. Te kody są nazywane "źródłami danych". Po utworzeniu maszyny wirtualnej na podstawie obrazu cloud-init na platformie Azure, cloud-init ładuje źródło danych platformy Azure, który współdziała z punktami końcowymi metadanych platformy Azure w celu uzyskania specyficznej konfiguracji maszyny wirtualnej.

  • Konfiguracja środowiska uruchomieniowego (/run/cloud-init).

  • Konfiguracja obrazu (/etc/cloud), na przykład /etc/cloud/cloud.cfg, /etc/cloud/cloud.cfg.d/*.cfg. Przykład użycia tej konfiguracji na platformie Azure to częste występowanie obrazów systemu operacyjnego Linux z pakietem cloud-init, które zawierają dyrektywę źródła danych Azure. Ta dyrektywa informuje cloud-init, z jakiego źródła danych należy skorzystać, co pozwala zaoszczędzić czas cloud-init.

    sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
    
    # to update this file, run dpkg-reconfigure cloud-init
    datasource_list: [ Azure ]
    

Etapy rozruchu cloud-init (konfiguracja przetwarzania)

Podczas aprowizowania maszyn wirtualnych przy użyciu pakietu cloud-init istnieje pięć etapów rozruchu konfiguracji. Dane wyjściowe z tych etapów są widoczne w dziennikach.

  1. Etap generatora: generator systemowy cloud-init uruchamia się i określa, że pakiet cloud-init powinien zostać uwzględniony w celach rozruchu, a jeśli tak, włącza pakiet cloud-init.

  2. Etap lokalny cloud-init: Na tym etapie cloud-init szuka lokalnego źródła danych "Azure", które umożliwia cloud-init współpracę z Azure i zastosowanie konfiguracji sieciowej, w tym zapewniającej tryb awaryjny.

  3. Cloud-init init Stage (Network): Sieć powinna być w trybie online, a informacje o karcie sieciowej i tabeli tras powinny być generowane. Na tym etapie uruchamiane są moduły wymienione w cloud_init_modules, w ramach /etc/cloud/cloud.cfg. Maszyna wirtualna na platformie Azure jest instalowana, dysk efemeryczny jest sformatowany, a nazwa hosta jest ustawiona wraz z innymi zadaniami.

    Poniżej przedstawiono niektóre z poniższych elementów:cloud_init_modules

    - migrator
    - seed_random
    - bootcmd
    - write-files
    - growpart
    - resizefs
    - disk_setup
    - mounts
    - set_hostname
    - update_hostname
    - ssh
    

    Po tym etapie dostawca cloud-init wysyła sygnał do platformy Azure, że maszyna wirtualna została pomyślnie aprowizowana. Niektóre moduły mogły zakończyć się niepowodzeniem, jednak nie wszystkie błędy modułu automatycznie powodują niepowodzenie aprowizacji.

  4. Etap konfiguracji cloud-init: na tym etapie moduły cloud_config_modules zdefiniowane i wymienione w /etc/cloud/cloudpliku .cfg są uruchamiane.

  5. Etap końcowy cloud-init: Moduły wymienione w /etc/cloud/cloud.cfg w cloud_final_modules uruchamiają się na tym etapie końcowym. W tym miejscu moduły, które muszą być uruchamiane pod koniec przebiegu procesu rozruchu, takie jak instalacje pakietów i uruchamianie skryptów itp.

    • Na tym etapie można uruchamiać skrypty, umieszczając je w katalogach w obszarze /var/lib/cloud/scripts:
      • per-boot - skrypty w tym katalogu, uruchamiane przy każdym ponownym uruchomieniu
      • per-instance — skrypty w tym katalogu są uruchamiane po pierwszym uruchomieniu nowego wystąpienia
      • per-once - skrypty w tym katalogu są uruchamiane tylko raz

Dalsze kroki

Rozwiązywanie problemów z rozwiązaniem cloud-init.