Share via


Usar a cloud-init para atualizar e instalar pacotes em uma VM do Linux no Azure

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

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 a inicialização de nuvem funciona em diferentes distribuições de Linux, não é necessário 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, usaremos 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.

  • Consulte o processo de atualização, o número de pacotes alterados, bem como a instalação de httpd executando o comando a seguir e revise 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: