Criar uma máquina virtual é chato. Criar centenas é demorado. cloud-init permite automatizar a criação de máquinas virtuais no Microsoft Azure.

Se você já configurou uma máquina virtual, sabe como ela funciona. Você clica aqui e ali, clica mais um pouco do seu jeito, e no final, você tem um sistema montado. Mas você ainda precisa instalar o software e configurar a VM de acordo com sua preferência.

Agora imagine que você deseja configurar centenas de VMs. Clicar no seu caminho através da instalação não é tão eficaz. Em vez disso, você precisa automatizar o processo o máximo possível, e é aí que entra o cloud-init.

Vamos dar uma olhada em como você pode automatizar a instalação do sistema operacional e a configuração da máquina virtual usando cloud-init no Microsoft Azure.

Por que usar cloud-init para automatizar a criação de VM?

cloud-init é uma poderosa ferramenta de automação de implantação que a Canonical, a empresa por trás do Ubuntu, desenvolve.

Com cloud-init, você pode instalar e implantar sistemas operacionais Linux e configurar outros aspectos de uma VM. Por exemplo, você pode usar o cloud-init para configurar contas de usuário, instalar e configurar software, adicionar chaves SSH, etc.

instagram viewer

Atualmente, a maioria dos provedores de serviços em nuvem, como Azure, Linode e Amazon Web Services (AWS), oferece suporte ao cloud-init.

Embora o cloud-init tenha começado no Ubuntu, ele agora suporta todas as principais distribuições do Linux, como openSUSE, Debian, Red Hat Enterprise Linux (RHEL), etc.

Além de implantar software na nuvem, você também pode usar o cloud-init para configurar e instalar software em servidores locais ou ambientes virtuais como VirtualBox, KVM e VMware.

Usaremos a plataforma de nuvem Microsoft Azure para automatizar a implantação de um servidor Ubuntu usando cloud-init.

Etapa 1: criando um script cloud-init

Os scripts cloud-init usam módulos para configurar diferentes aspectos do seu sistema. Por exemplo, você usará o Usuários módulo para configurar informações de usuário e contas, e o guarda-fios módulo para configurar o WireGuard, etc. Existem muitos outros módulos que você pode usar imediatamente.

Vamos criar um script cloud-init para automatizar a maioria das coisas que você configura ao configurar uma nova máquina virtual.

Vamos criar um usuário chamado "mwiza" e atribuir uma senha a ele. Para simplificar, vamos usar uma senha de texto simples, mas você pode criptografá-la se desejar. Além disso, adicione a chave SSH do usuário às chaves autorizadas. Isso permite que você desabilite logins de senha SSH posteriormente para melhor segurança.

Além de criar um novo usuário, o script deve fazer o seguinte:

  • Escrevendo um arquivo: Crie um arquivo simples e escreva conteúdo nele usando o escrever_arquivos módulo. O arquivo será colocado no diretório inicial. Você pode usar os mesmos conceitos para criar arquivos mais complexos no futuro.
  • Comandos de execução: Executaremos comandos simples para configurar o firewall UFW, mas pode ser qualquer outro comando do Linux. Utilize o runcmd módulo para executar qualquer comando de sua escolha; é semelhante a executar comandos do Linux por executando scripts Bash.
  • Configurando localidades: Isso define seus locais preferidos, como o layout do teclado, idioma preferido, fuso horário, etc.
  • Instalar pacotes: Use seu gerenciador de pacotes favorito para instalar pacotes em seu sistema. Por exemplo, em sistemas baseados em Debian, você pode usar o APT.

Estes são apenas alguns dos módulos que você pode usar no cloud-init; existem vários outros módulos disponíveis para automatizar todo tipo de coisa.

Aqui está o script cloud-init completo para configurar a nova conta de usuário. Lembre-se de substituir a chave SSH pela correta. Além disso, sinta-se à vontade para alterar o nome de usuário e quaisquer outros detalhes.

vim: sintaxe=yaml

# Adicione usuários do sistema aqui
Usuários:
- nome: mwiza
grupos: usuários, sudo
shell: /bin/bash
gecos: mwiza
plain_text_passwd: Live-laugh-love12345G123
lock_passwd: falso
ssh_authorized_keys:
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]

# Instalar, atualizar e atualizar pacotes
pacote_atualização: verdadeiro
pacote_atualização: verdadeiro
package_reboot_if_require: verdadeiro

pacotes:
- traceroute
- net-tools
- fail2ban

# Definir localidades
localidade: en_UK
fuso horário: Etc/UTC
teclado:
layout: nb

escrever_arquivos:
- caminho: /etc/salt/minion.d/master_ip_port.conf
conteúdo: |
mestre: sal
master_port: 4506
publish_port: 4505
- caminho: /home/mwiza/cloud-init.txt
conteúdo: |
criado por cloud-init no Azure

# Executando comandos Bash para configurar software e serviços
runcmd:
- habilitar ufw
- ufw permite ssh
- ufw permitir 80
- systemctl habilita ufw

# Desligue a VM após a conclusão da inicialização
desligar: desligar

O script cloud-init usa YAML, portanto, certifique-se de que o recuo esteja correto, caso contrário, não funcionará conforme o esperado.

Etapa 2: criando o recurso de máquina virtual

A próxima etapa é criar o recurso necessário no Azure para a máquina virtual. Faça login no Azure se você já tiver uma conta ou crie uma conta de avaliação gratuita acessando azure.microsoft.com.

Na página inicial do portal do Azure, clique no botão Criar um recurso botão. Na lista dos serviços mais populares do Azure, selecione Máquina virtual.

A próxima página fornece informações para criar recursos de VM, como disco rígido, rede, etc.

Dê à sua VM um nome significativo e selecione a região de implantação. Além disso, crie um grupo de recursos para sua VM ou use um existente.

Debaixo de Autenticação tipo, selecione o Senha opção e forneça seu nome de usuário e senha forte.

Depois de preencher todos os campos desta página, seus dados devem ser semelhantes aos seguintes.

Etapa 3: adicionando seu script cloud-init

A seguir, clique no Avançado guia para adicionar o script cloud-init. Copie e cole o script cloud-init da primeira etapa no campo de dados personalizados.

Por fim, clique no botão Revisar + criar botão. Se tudo estiver bem, o teste será aprovado. Caso contrário, o criador da VM do Azure orientará você sobre as correções a serem feitas.

Etapa 4: fazer login na sua máquina virtual

Use as informações de visão geral da VM para obter o endereço IP público de sua máquina virtual e faça login via SSH. Se você usou a chave SSH correta, o sistema não solicitará que você digite a senha do usuário.

Uma vez logado, você pode verificar se os arquivos que deseja criar por meio do script estão lá. Também, procure por pacotes instalados com APT e verifique se o firewall foi configurado corretamente usando o sudo ufw status comando.

cloud-init também registra informações importantes no /var/log/cloud-init.log arquivo. Ele contém mensagens detalhadas de todos os eventos que ocorreram durante a inicialização do cloud-init. Você pode verificar este arquivo usando o comando cat da seguinte maneira:

cat /var/log/cloud-init.log

Automatize a criação de máquinas virtuais com cloud-init

cloud-init é uma ferramenta poderosa que ajuda a automatizar a instalação e configuração do Linux. Você pode usá-lo na nuvem e em servidores locais. Se você deseja apenas automatizar a implantação de sua máquina virtual ou precisa implantar servidores Linux em grande escala, o cloud-init é uma ótima opção.

Em uma nota relacionada, sempre proteja seus logins SSH para suas máquinas virtuais baseadas em nuvem para evitar violações de segurança.