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

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo mostra como usar o cloud-init para atualizar pacotes em uma máquina virtual (VM) Linux ou conjuntos de dimensionamento de máquina virtual no momento do provisionamento no Azure. Esses scripts de inicialização na nuvem são executados na primeira inicialização depois que os recursos são provisionados pelo Azure. Para obter mais informações sobre como o cloud-init funciona nativamente no Azure e nas distribuições Linux suportadas, consulte visão geral do cloud-init

Atualizar uma VM com cloud-init

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 distros 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 cloud-init determine o mecanismo apropriado para a distro em uso.

Para este exemplo, usaremos o Azure Cloud Shell. Para ver o processo de atualização em ação, crie um arquivo chamado cloud_init_upgrade.txt e cole a seguinte configuração. Pode utilizar qualquer editor que desejar. Certifique-se de que todo o arquivo cloud-init é copiado corretamente, especialmente a primeira linha.

Copie o texto abaixo e cole-o no cloud_init_upgrade.txt arquivo. Certifique-se de que todo o arquivo cloud-init é copiado corretamente, especialmente 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 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

Agora, crie uma VM com az vm create e especifique o arquivo cloud-init com o --custom-data parâmetro 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

Nota

Substitua os valores myResourceGroup, vmName e imageCIURN de acordo. Certifique-se de que uma imagem com Cloud-init foi escolhida.

SSH para o endereço IP público da sua VM mostrado na saída do comando anterior. Digite seu próprio usuário e publicIpAddress da seguinte maneira:

ssh <user>@<publicIpAddress>

Execute a ferramenta de gerenciamento de pacotes e verifique se há atualizações:

  • Execute o seguinte comando para confirmar que não há atualizações pendentes
sudo yum check-update

Como o cloud-init verificou e instalou atualizações 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, bem como a instalação de httpd executando o seguinte comando e rever 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óximos passos

Para obter exemplos adicionais de alterações de configuração na nuvem, consulte o seguinte: