Compartilhar via


Mais detalhes sobre o cloud-init

Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis

Para saber mais sobre o cloud-init ou solucionar problemas em um nível mais profundo, você precisa entender como ele funciona. Este documento destaca as partes importantes e explica as especificações do Azure.

Quando o cloud-init é incluído em uma imagem generalizada e uma VM é criada a partir dessa imagem, ele processa as configurações e executa cinco estágios durante a inicialização inicial. Esses estágios são importantes, pois mostram em que momento o cloud-init aplica suas configurações.

Noções básicas sobre a configuração do cloud-Init

Configurar uma VM para ser executada em uma plataforma usa o cloud-init para aplicar várias configurações. As principais configurações com as quais você interage são User data (customData), que dá suporte a vários formatos. Para obter mais informações, confira Formatos de dados do usuário e a documentação do cloud-init 21.2. Você também pode adicionar e executar scripts (/var/lib/cloud/scripts) para outra configuração.

Imagens de Azure Marketplace pré-configuradas

Algumas configurações já estão incluídas nas imagens do Azure Marketplace que são fornecidas com o cloud-init.

  • Origem de dados de nuvem - o cloud-init contém códigos que podem interagir com as plataformas de nuvem, esses códigos são chamados de "fontes de dados". Quando uma VM é criada a partir de uma imagem do cloud-init no Azure, o cloud-init carrega a fonte de dados do Azure que interage com os pontos de extremidade de metadados do Azure a fim de obter a configuração específica da VM.

  • Configuração de runtime (/run/cloud-init).

  • Configuração de imagem (/etc/cloud), como /etc/cloud/cloud.cfg, /etc/cloud/cloud.cfg.d/*.cfg. Um exemplo de onde essa configuração é usada no Azure, é comum que imagens do sistema operacional Linux com cloud-init tenham uma diretiva de fonte de dados do Azure informando ao cloud-init qual fonte de dados usar, essa configuração economiza tempo no cloud-init:

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

Estágios de inicialização do cloud-init (configuração de processamento)

Quando você está provisionando VMs com o cloud-init, há cinco estágios de inicialização de configuração. A saída desses estágios é visível nos logs.

  1. Estágio gerador: o gerador de systemd do cloud-init é iniciado e determina se o cloud-init deve ser incluído nas metas de inicialização. Caso afirmativo, o cloud-init é habilitado.

  2. Estágio local do cloud-init: aqui, o cloud-init procura a fonte de dados local do "Azure", que habilita a interação entre o cloud-init e o Azure e aplica uma configuração de rede, incluindo fallback.

  3. Estágio de inicialização do cloud-init (Rede): a rede deve estar online e as informações de NIC e da tabela de rotas devem ser geradas. Nesse estágio, os módulos listados em cloud_init_modules em /etc/cloud/cloud.cfg são executados. A VM no Azure é montada, o disco efêmero será formatado, o nome do host será definido, entre outras tarefas.

    A seguir estão alguns dos cloud_init_modules:

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

    Após esse estágio, o cloud-init envia um sinal à plataforma do Azure que a VM foi provisionada com sucesso. Alguns módulos podem ter falhado, mas nem todas as falhas de módulo resultam automaticamente em uma falha de provisionamento.

  4. Estágio de configuração do cloud-init: nesse estágio, os módulos no cloud_config_modulesdefinidos e listados em/etc/cloud/cloud.cfg são executados.

  5. Estágio final do cloud-init: nesse estágio final, os módulos no cloud_final_modules listados em /etc/cloud/cloud.cfg são executados. Aqui, são executados os módulos cuja execução deve ocorrer em um momento posterior do processo de inicialização, como as instalações de pacote, os scripts de execução etc.

    • Durante esse estágio, é possível executar scripts ao colocá-los nos diretórios em /var/lib/cloud/scripts:
      • per-boot – os scripts neste diretório são executados a cada reinicialização
      • per-instance – os scripts neste diretório são executados quando uma nova instância é inicializada pela primeira vez
      • per-once – os scripts neste diretório são executados somente uma vez

Próximas etapas

Resolução de problemas do cloud-init.