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.
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.
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.
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.
Estágio de configuração do cloud-init: nesse estágio, os módulos no
cloud_config_modules
definidos e listados em/etc/cloud/cloud
.cfg são executados.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çãoper-instance
– os scripts neste diretório são executados quando uma nova instância é inicializada pela primeira vezper-once
– os scripts neste diretório são executados somente uma vez
- Durante esse estágio, é possível executar scripts ao colocá-los nos diretórios em