suporte cloud-init para máquinas virtuais no Azure
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
Este artigo explica o suporte que existe para cloud-init para configurar uma máquina virtual (VM) ou Conjuntos de Dimensionamento de Máquina Virtual no momento do provisionamento no Azure. Essas configurações de inicialização na nuvem são executadas na primeira inicialização depois que os recursos são provisionados pelo Azure.
O Provisionamento de VM é o processo pelo qual o Azure transmite seus valores de parâmetro Criar VM, como nome de host, nome de usuário e senha, e os disponibiliza para a VM à medida que ela é inicializada. Um 'agente de provisionamento' consumirá esses valores, configurará a VM e relatará quando concluído.
O Azure dá suporte a dois agentes de provisionamento cloud-init e ao Agente Linux do Azure (WALA).
Visão geral do cloud-init
cloud-init é uma abordagem amplamente utilizada para personalizar uma VM Linux à medida que ela é inicializada pela primeira vez. Pode utilizar o cloud-init para instalar pacotes e escrever ficheiros ou para configurar utilizadores e segurança. Como o cloud-init é chamado durante o processo de inicialização inicial, não há etapas adicionais ou agentes necessários para aplicar sua configuração. Para obter mais informações sobre como formatar corretamente seus #cloud-config
arquivos ou outras entradas, consulte o site de documentação cloud-init. #cloud-config
Os arquivos são arquivos de texto codificados em Base64.
cloud-init também funciona em distribuições. Por exemplo, não utiliza apt-get install nem yum install para instalar um pacote. Em vez disso, pode definir uma lista dos pacotes a instalar. O cloud-init usa automaticamente a ferramenta nativa de gerenciamento de pacotes para a distro selecionada.
Estamos trabalhando ativamente com nossos parceiros de distribuição Linux aprovados para ter imagens habilitadas para inicialização na nuvem disponíveis no Azure Marketplace. Essas imagens farão com que suas implantações e configurações de inicialização na nuvem funcionem perfeitamente com VMs e conjuntos de dimensionamento de máquinas virtuais. Inicialmente, colaboramos com os parceiros de distribuição Linux aprovados e upstream para garantir funções cloud-init com o sistema operacional no Azure, em seguida, os pacotes são atualizados e disponibilizados publicamente nos repositórios de pacotes de distro.
Há dois estágios para disponibilizar o cloud-init para as distribuições Linux com suporte no Azure, suporte a pacotes e, em seguida, suporte a imagens:
- 'cloud-init package support on Azure' documentos, quais pacotes cloud-init em diante são suportados ou em visualização, para que você possa usar esses pacotes com o sistema operacional em uma imagem personalizada.
- Documentos 'Image cloud-init ready' se a imagem já estiver configurada para usar cloud-init.
Canónico
Editora / Versão | Oferecer | SKU | Versão | imagem cloud-init pronto | suporte a pacotes cloud-init no Azure |
---|---|---|---|---|---|
Canônico 24.04 | UbuntuServer | 22.04-LTS | mais recente | sim | sim |
Canônico 22.04 | UbuntuServer | 22.04-LTS | mais recente | sim | sim |
Canônico 20.04 | UbuntuServer | 20.04-LTS | mais recente | sim | sim |
RHEL
Editora / Versão | Oferecer | SKU | Versão | imagem cloud-init pronto | suporte a pacotes cloud-init no Azure |
---|---|---|---|---|---|
RedHat 7 | RHEL | 7.7, 7.8, 7_9 | mais recente | sim | sim |
RedHat 8 | RHEL | 8.1, 8.2, 8_3, 8_4 | mais recente | sim | sim |
RedHat 9 | RHEL | 9_0, 9_1 | mais recente | sim | sim |
- Todos os outros SKUs RedHat a partir do RHEL 7 (versão 7.7) e RHEL 8 (versão 8.1), incluindo imagens Gen1 e Gen2, são provisionados usando cloud-init. O Cloud-init não é suportado no RHEL 6.
Oracle
Editora / Versão | Oferecer | SKU | Versão | imagem cloud-init pronto | suporte a pacotes cloud-init no Azure |
---|---|---|---|---|---|
Oráculo 7 | Oracle Linux | 77, 78, OL79 | mais recente | sim | sim |
Oráculo 8 | Oracle Linux | 81, OL82, OL83-LVM, OL84-LVM | mais recente | sim | sim |
- Todos os outros Oracle SKUs a partir do Oracle 7 (versão 7.7) e Oracle 8 (versão 8.1), incluindo imagens Gen1 e Gen2, são provisionados usando cloud-init.
SUSE SLES
Editora / Versão | Oferecer | SKU | Versão | imagem cloud-init pronto | suporte a pacotes cloud-init no Azure |
---|---|---|---|---|---|
SUSE 15 | SLES (SUSE Linux Enterprise Server) | SP1, SP2, SP3 | mais recente | sim | sim |
SUSE 12 | SLES (SUSE Linux Enterprise Server) | SP5 | mais recente | sim | sim |
Debian
Editora / Versão | Oferecer | SKU | Versão | imagem cloud-init pronto | suporte a pacotes cloud-init no Azure |
---|---|---|---|---|---|
Debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.1015 | sim | sim |
Debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.991 | sim | sim |
Debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.999 | sim | sim |
Atualmente, o Azure Stack dá suporte ao provisionamento de imagens habilitadas para inicialização na nuvem.
Qual é a diferença entre cloud-init e o Linux Agent (WALA)?
O WALA é um agente específico da plataforma Azure usado para provisionar e configurar VMs e manipular extensões do Azure.
Estamos aprimorando a tarefa de configurar VMs para usar cloud-init em vez do Linux Agent, a fim de permitir que os clientes existentes cloud-init usem seus scripts cloud-init atuais, ou novos clientes aproveitem a rica funcionalidade de configuração cloud-init. Se você tiver investimentos existentes em scripts cloud-init para configurar sistemas Linux, não há configurações adicionais necessárias para permitir que o cloud-init os processe.
cloud-init não pode processar extensões do Azure, portanto, o WALA ainda é necessário na imagem para processar extensões, mas precisa ter seu código de provisionamento desabilitado. Para imagens de distros Linux aprovadas que estão sendo convertidas para provisionamento pelo cloud-init, elas têm o WALA instalado e configurado corretamente.
Ao criar uma VM, se você não incluir o switch CLI --custom-data
do Azure no momento do provisionamento, cloud-init ou WALA usará os parâmetros mínimos de provisionamento de VM necessários para provisionar a VM e concluir a implantação com os padrões. Se você fizer referência à configuração cloud-init com o --custom-data
switch, tudo o que estiver contido em seus dados personalizados estará disponível para cloud-init quando a VM for inicializada.
As configurações cloud-init aplicadas a VMs não têm restrições de tempo e não farão com que uma implantação falhe com o tempo limite. Isso não é verdade para WALA, se você alterar os padrões do WALA para processar dados personalizados, ele não poderá exceder o tempo total de provisionamento de VM de 40 minutos, se assim for, a VM Create falhará.
provisionamento de VM cloud-init sem um driver UDF
A partir do cloud-init 21.2, você pode usar o cloud-init para provisionar uma VM no Azure sem um driver UDF. Se um driver UDF não estiver disponível na imagem, o cloud-init usará os metadados disponíveis no Serviço de Metadados de Instância do Azure para provisionar a VM. Esta opção funciona apenas para a chave SSH e dados do usuário. Para passar uma senha ou dados personalizados para uma VM durante o provisionamento, você deve usar um driver UDF.
Implantando uma máquina virtual habilitada para inicialização na nuvem
Implantar uma máquina virtual habilitada para cloud-init é tão simples quanto fazer referência a uma distribuição habilitada para cloud-init durante a implantação. Os mantenedores de distribuição Linux precisam optar por habilitar e integrar o cloud-init em suas imagens publicadas do Azure base. Depois de confirmar que a imagem que você deseja implantar está habilitada para inicialização na nuvem, você pode usar a CLI do Azure para implantar a imagem.
A primeira etapa na implantação dessa imagem é criar um grupo de recursos com o comando az group create . Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.
O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.
az group create --name myResourceGroup --location eastus
A próxima etapa é criar um arquivo em seu shell atual, chamado cloud-init.txt e colar a configuração a seguir. Para este exemplo, crie o arquivo no Cloud Shell e não em sua máquina local. Você pode usar qualquer editor de sua escolha. Digite sensible-editor cloud-init.txt para criar o arquivo e ver uma lista de editores disponíveis. Use o editor de sua escolha. Algumas escolhas típicas são nano, vim ou ed. Certifique-se de que o ficheiro de inicialização da cloud é copiado corretamente, especialmente a primeira linha:
SLES | Ubuntu | RHEL |
---|---|---|
# cloud-config package_upgrade: true packages: - apache2 |
# cloud-config package_upgrade: true packages: - httpd |
# cloud-config package_upgrade: true packages: - httpd |
Nota
cloud-init tem vários tipos de entrada, cloud-init usará a primeira linha do customData/userData para indicar como deve processar a entrada, por exemplo #cloud-config
, indica que o conteúdo deve ser processado como uma configuração cloud-init.
Saia do arquivo e salve-o de acordo com o editor. Verifique o nome do arquivo ao sair.
A etapa final é criar uma VM com o comando az vm create .
O exemplo a seguir cria uma VM chamada ubuntu2204
e cria chaves SSH se elas ainda não existirem em um local de chave padrão. Para utilizar um conjunto específico de chaves, utilize a opção --ssh-key-value
. Utilize o parâmetro --custom-data
para passar o ficheiro de configuração de inicialização da cloud. Forneça o caminho completo para a configuração do cloud-init.txt, se tiver guardado o ficheiro fora do diretório de trabalho atual.
az vm create \
--resource-group myResourceGroup \
--name ubuntu2204 \
--image Canonical:UbuntuServer:22_04-lts:latest \
--custom-data cloud-init.txt \
--generate-ssh-keys
Quando a VM é criada, a CLI do Azure mostra informações específicas para sua implantação. Tome nota do publicIpAddress
. Este endereço é utilizado para aceder à VM. Leva algum tempo para que a VM seja criada, os pacotes sejam instalados e o aplicativo seja iniciado. Existem tarefas em segundo plano que continuam a ser executadas após a CLI do Azure devolver o utilizador à linha de comandos. Você pode SSH na VM e usar as etapas descritas na seção Solução de problemas para exibir os logs de inicialização na nuvem.
Você também pode implantar uma VM habilitada para inicialização na nuvem passando os parâmetros no modelo ARM.
Solução de problemas de cloud-init
Depois que a VM tiver sido provisionada, o cloud-init será executado através de todos os módulos e scripts definidos para --custom-data
configurar a VM. Se você precisar solucionar quaisquer erros ou omissões da configuração, você precisa procurar o nome do módulo (disk_setup
runcmd
ou por exemplo) no log cloud-init - localizado em /var/log/cloud-init.log.
Nota
Nem todas as falhas de módulo resultam em uma falha fatal de configuração geral de inicialização na nuvem. Por exemplo, usando o runcmd
módulo, se o script falhar, o cloud-init ainda relatará o provisionamento bem-sucedido porque o módulo runcmd foi executado.
Para obter mais informações sobre o registro em log do cloud-init, consulte a documentação do cloud-init
Telemetria
cloud-init recolhe dados de utilização e envia-os para a Microsoft para ajudar a melhorar os nossos produtos e serviços. A telemetria só é coletada durante o processo de provisionamento (primeira inicialização da VM). Os dados coletados nos ajudam a investigar falhas de provisionamento e monitorar o desempenho e a confiabilidade. Os dados recolhidos não incluem quaisquer identificadores (identificadores pessoais). Leia a nossa declaração de privacidade para saber mais. Alguns exemplos de telemetria que estão sendo coletados são (esta não é uma lista exaustiva): informações relacionadas ao sistema operacional (versão cloud-init, versão distro, versão kernel), métricas de desempenho de ações essenciais de provisionamento de VM (tempo para obter concessão DHCP, tempo para recuperar metadados necessários para configurar a VM, etc.), log cloud-init e log dmesg.
Atualmente, a coleta de telemetria está habilitada para a maioria das imagens do mercado que usam o cloud-init. Ele é ativado especificando o repórter de telemetria KVP para cloud-init. Na maioria das imagens do Azure Marketplace, essa configuração pode ser encontrada no arquivo /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. A remoção desse arquivo durante a preparação da imagem desabilita a coleta de telemetria para qualquer VM criada a partir dessa imagem.
Conteúdo de exemplo do 10-azure-kvp.cfg
reporting:
logging:
type: log
telemetry:
type: hyperv
Próximos passos
Solucione problemas com o cloud-init.
Para obter exemplos de alterações de configuração no cloud-init, consulte os seguintes documentos: