Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
- 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)