Usar cloud-init para adicionar um usuário a uma VM Linux no Azure
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
Este artigo mostra como usar cloud-init para adicionar um usuário em uma VM (máquina virtual) ou VMSS (conjuntos de dimensionamento de máquinas virtuais) no tempo de provisionamento no Azure. Esse script cloud-init é executado na primeira inicialização uma vez que os recursos tiverem sido provisionados pelo Azure. Para obter mais informações sobre como o cloud-init funciona nativamente no Azure e as distribuições do Linux compatíveis, consulte Visão geral de cloud-init.
Adicionar um usuário a uma VM com a inicialização de nuvem
Uma das primeiras tarefas em qualquer nova VM Linux é adicionar um usuário adicional para você para evitar o uso do root. As chaves de SSH são uma prática recomendada para segurança e usabilidade. As chaves são adicionadas ao arquivo ~/.ssh/authorized_keys com esse script de inicialização de nuvem.
Para adicionar um usuário a uma VM Linux, crie um arquivo no shell atual chamado cloud_init_add_user.txt e cole a configuração a seguir. 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. Você precisa fornecer sua própria chave pública (como o conteúdo de ~/.ssh/id_rsa.pub) para o valor de ssh-authorized-keys:
, ela foi reduzida aqui para simplificar o exemplo.
#cloud-config
users:
- default
- name: myadminuser
groups: sudo
shell: /bin/bash
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh-authorized-keys:
- ssh-rsa AAAAB3<snip>
Observação
O arquivo #cloud-config inclui o parâmetro - default
incluído. Isso acrescentará o usuário ao usuário administrador existente criado durante o provisionamento. Se você criar um usuário sem o parâmetro - default
, o usuário administrador gerado automaticamente criado pela plataforma Azure será substituído.
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 inicialização de nuvem com --custom-data cloud_init_add_user.txt
da seguinte maneira:
az vm create \
--resource-group myResourceGroup \
--name vmName \
--image imageCIURN \
--custom-data cloud_init_add_user.txt \
--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 da seguinte forma:
ssh <user>@<publicIpAddress>
Para confirmar se o usuário foi adicionado para a VM e os grupos especificados, exiba o conteúdo do arquivo /etc/group da seguinte maneira:
sudo cat /etc/group
A saída de exemplo a seguir mostra que o usuário do arquivo cloud_init_add_user.txt foi adicionado à VM e ao grupo apropriado:
root:x:0:
<snip />
sudo:x:27:myadminuser
<snip />
myadminuser:x:1000:
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)