Compartilhar via


Usar cloud-init para executar um script de bash em uma VM Linux no Azure

Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis

Este artigo mostra como usar cloud-init para executar um script de bash existente em uma VM (máquina virtual) Linux ou VMSS (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

Executar um script de bash com cloud-init

Com a cloud-init você não precisa converter seus scripts existentes em uma cloud-config, a cloud-init aceita vários tipos de entrada, um dos quais é um script de bash.

Se você estiver usando a Extensão do Azure de Script Personalizado do Linux para executar seus scripts, poderá migrá-las para usar a cloud-init. No entanto, as Extensões do Azure integraram os relatórios para alertar para falhas de script, uma implantação de imagem de cloud-init NÃO falhará se o script falhar.

Para ver essa funcionalidade em ação, crie um script de bash simples para teste. Como o arquivo #cloud-config de cloud-init, esse script deve ser local para onde você executará os comandos de AzureCLI para provisionar sua máquina virtual. Para este exemplo, crie o arquivo no Cloud Shell, não no seu computador local. Você pode usar qualquer editor que queira. Verifique se o arquivo cloud-init inteiro foi copiado corretamente, principalmente a primeira linha.

#!/bin/sh
echo "this has been written via cloud-init" + $(date) >> /tmp/myScript.txt

Antes de implantar essa imagem, 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 script de bash com --custom-data simple_bash.sh da seguinte maneira:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data simple_bash.sh \
  --generate-ssh-keys

Observação

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

Verificar se o script de bash foi executado

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>

Certifique-se que o arquivo /tmp/myScript.txt existe e tem o texto apropriado dentro dele.

sudo cat /tmp/myScript

Se não estiver, você poderá verificar o /var/log/cloud-init.log para obter mais detalhes. Pesquise a seguinte entrada:

sudo cat /var/log/cloud-init.log
Running config-scripts-user using lock Running command ['/var/lib/cloud/instance/scripts/part-001']

Próximas etapas

Para obter exemplos adicionais de alterações de configuração do cloud-init, consulte o seguinte: