Usar a cloud-init para atualizar e instalar pacotes em uma VM do Linux no Azure
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
Este artigo mostra como usar cloud-init para atualizar pacotes em uma VM (máquina virtual) Linux ou nos conjuntos de dimensionamento de máquinas virtuais no tempo de provisionamento no Azure. Esses scripts de cloud-init são executados na primeira inicialização depois que os recursos são provisionados pelo Azure. Para obter mais informações de como o cloud-init funciona nativamente no Azure e as distribuições do Linux compatíveis, consulte Visão geral de cloud-init
Atualizar uma VM com a inicialização de nuvem
Para fins de segurança, convém configurar uma VM para aplicar as atualizações mais recentes na primeira inicialização. Como o cloud-init funciona em diferentes distribuições Linux, não há necessidade de especificar apt
, zypper
ou yum
para o gerenciador de pacotes. Em vez disso, você define package_upgrade
e permite que o processo de inicialização de nuvem determine o mecanismo apropriado para a distribuição em uso.
Neste exemplo, usamos o Azure Cloud Shell. Para ver o processo de atualização em ação, crie um arquivo chamadocloud_init_upgrade.txt e cole a seguinte configuração. Você pode usar qualquer editor que queira. Verifique se o arquivo cloud-init inteiro foi copiado corretamente, principalmente a primeira linha.
Copie o texto abaixo e cole-o no arquivo cloud_init_upgrade.txt
. Verifique se o arquivo cloud-init inteiro foi copiado corretamente, principalmente a primeira linha.
#cloud-config
package_upgrade: true
packages:
- httpd
Antes de implantar, você precisa criar um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local eastus.
az group create --name myResourceGroup --location eastus
Agora, crie uma VM com az vm create e especifique o arquivo de inicialização de nuvem com --custom-data
da seguinte maneira:
az vm create \
--resource-group myResourceGroup \
--name vmName \
--image imageCIURN \
--custom-data cloud_init_upgrade.txt \
--admin-username azureuser \
--generate-ssh-keys
Observação
Substitua adequadamente os valores myResourceGroup, vmName e imageCIURN. Verifique se uma imagem com o Cloud-init foi escolhida.
Conecte-se por SSH ao endereço IP público da VM mostrado na saída do comando anterior. Insira seu próprio usuário e publicIpAddress como a seguir:
ssh <user>@<publicIpAddress>
Execute a ferramenta de gerenciamento de pacotes e verifique se há atualizações:
- Execute o comando a seguir para confirmar que não há atualizações pendentes
sudo yum check-update
Já que a cloud-init realizou a verificação em busca de atualizações e as instalou na inicialização, não deve haver atualizações adicionais a serem aplicadas.
- Você pode ver o processo de atualização, o número de pacotes alterados e a instalação de
httpd
executando o seguinte comando e revisando a saída.
sudo yum history
ID | Command line | Date and time | Action(s) | Altered
--------------------------------------------------------------------------------------------------
3 | -y install httpd | 2022-02-18 18:30 | Install | 7
2 | -y upgrade | 2022-02-18 18:23 | I, O, U | 321 EE
1 | | 2021-02-04 19:20 | Install | 496 EE
Próximas etapas
Para obter exemplos adicionais de alterações de configuração do cloud-init, consulte o seguinte:
- Add an additional Linux user to a VM (Adicionar um usuário adicional do Linux a uma VM)
- Run a package manager to update existing packages on first boot (Executar um gerenciador de pacotes para atualizar os pacotes existentes na primeira inicialização)
- Change VM local hostname (Alterar o nome do host local da VM)
- Install an application package, update configuration files and inject keys (Instalar um pacote de aplicativo, atualizar os arquivos de configuração e injetar chaves)