Já se perguntou como os provedores de VPS configuram suas VMs, adicione suas SSH-Keys, crie usuários e instale pacotes toda vez que você gira uma nova VM na 'nuvem'? Bem, a resposta para a maioria dos fornecedores é a nuvem-in. A maioria dos sistemas operacionais e distribuições envia imagens de disco virtual com seus respectivos sistemas operacionais instalados na imagem. A instalação é muito mínima e pode servir como um modelo para o sistema de arquivos raiz do sistema operacional. Os mantenedores do sistema operacional também são gentis o suficiente para fornecer a imagem do disco virtual para todos os vários formatos, desde imagens de disco bruto até QCOW2 e até VMDK, VDI e VHD.
A imagem também possui um pacote extra pré-instalado e que é a nuvem-init. É o trabalho de ter a nuvem para inicializar A VM (normalmente dentro de um serviço de hospedagem em nuvem como Digitalocean, AWS ou Azure) converse com o provedor de hospedagem fonte de dados e obtenha as informações de configuração que ele usa para configurar a VM.
As informações de configuração podem incluir dados do usuário Como as chaves ssh, o nome do host da instância, usuários e senhas, juntamente com qualquer outro comando arbitrário que o usuário deseja executar.
O problema com a nuvem-inite
A Initing Cloud é uma ótima ferramenta se você é um usuário de nuvem, se estiver girando VMs ou contêineres e seu provedor de nuvem tem a gentileza de pedir uma configuração de nuvem, é ótimo! Com um arquivo em nuvem-config, também conhecido. O processo pode ser repetido repetidamente sem que os comandos tediosos sejam digitados repetidamente. Logo você tem uma frota de VMs, tudo com configuração idêntica.
No entanto, se você cavar um pouco mais fundo e ver como a salsicha está sendo feita, você começará a questionar alguns dos aspectos da nuvem-init. Por exemplo, por padrão, o DataSource é como um ponto de extremidade de descanso, e estes são essencialmente codificados no próprio pacote de initadores de nuvem. Claro, você pode configurar um conjunto de dados sozinho, mas o processo é cluoso e intensivo em tempo. A documentação para fazer isso é quase inexistente.
A documentação oficial não passa de um manual de usuário para usuários finais que confiam em serviços de nuvem preexistentes. Ele não diz como você pode configurar seu próprio DataSource-Initing de Cloud, caso você seja um próximo fornecedor. Até a documentação do usuário final é ruim, e eu recomendaria pessoas que usam o excelente tutorial do Digitalocean.
Para piorar a situação, os usuários com laboratórios de virtualização doméstica e pequenas startups de VPS acham difícil se beneficiar daquelas imagens leves de nuvem. Você realmente não pode iniciar uma VM desses modelos sem uma fonte de dados de entrada de nuvem ou alguns hackery que são difíceis de automatizar e escalar. Em outras palavras, você não pode nem optar por ignorar a entrada da nuvem, a menos que queira criar seus próprios modelos.
De uma maneira clássica do Systemd, está se libertando de seus papéis predefinidos e começando a mexer com a rede e outras partes do sistema operacional, o que afasta os usuários. É empacotado no Ubuntu 18.04 ISO do servidor, o que não faz absolutamente nenhum sentido (pelo menos não para mim).
Solução alternativa para laboratórios domésticos
Todo o discurso de lado, eu ainda tenho que lidar com a entrada da nuvem no meu uso diário. Eu tenho uma instalação muito mínima do Debian 9 no hardware x86_64, que eu uso como um hipervisor KVM. Eu realmente queria usar as imagens de disco QCOW2 que são enviadas pelo Ubuntu e CentOS. Essas imagens de disco têm o sistema operacional pré -instalado nelas e, para usá -las, você simplesmente precisa:
As etapas a seguir são seguidas:
$ cd/var/lib/libvirt/bota
$ curl -o https: // cloud-images.Ubuntu.com/xenial/corrente/xenial-server-cloudimg-
AMD64-DISK1.img
$ cd/var/lib/libvirt/imagens
$ qemu -img Create -f qcow2 myvm.QCOW2 8G ## Crie um disco rígido com
Tamanho do disco virtual de 8 GB
$ virt-resize --expand/dev/sda1/var/libVirt/boot/xenial-server-
CloudImg-AMD64-Disk1.img
./myvm.QCOW2
$ vim meta-dados
Instância-Id: MyVM
Local-HostName: MyVM
$ vim Data de usuário
#Cloud-Config
Usuários:
- Nome: raiz
Chpasswd:
Lista: |
Raiz: MyPassword
Expire: Falso
O único usuário que tenho aqui é o usuário root. Se você não mencionar nenhum usuário, o usuário padrão com nome Ubuntu é criado. O nome de usuário padrão difere de um sistema operacional para outro, e é por isso que eu recomendo especificar um usuário, mesmo que seja apenas raiz. A próxima parte do arquivo de dados do usuário diz ao Cloud-Init para configurar a senha para todos os usuários que você deseja atribuir uma senha. Novamente, estou apenas definindo a senha apenas para o usuário root, e é minha senha. Certifique -se de que não há espaço entre o cólon e a sequência de senha.
Melhor ainda, você pode usar SSH-KEYS em vez de ter senhas codificadas.
$ vim Data de usuário
#Cloud-Config
Usuários:
- Nome: raiz
ssh_pwauth: true
ssh_authorized_keys:
- SSH-RSA
$ genisoimage -Output cidata -myvm.ISO -VOLID CIDATA -JOLIET -ROCK -ROCK DATA META -DATA
Certifique-se de que o arquivo cidata-myvm.ISO está situado em/var/lib/libvirt/imagens/
$ virt-Install --import--name myvm --mory 2048 --vcpus 2-host da CPU
--disco myvm.qcow2, formato = qcow2, barramento = virtio-disco myvm-cidata.iso, dispositivo = cdrom
--Rede Bridge = Virbr0, Model = Virtio --s-Type = Linux
--OS-Variant = Ubuntu16.04 -NOAUTOCONSOL
Agora você pode tentar fazer login na VM usando o comando virsh console myvm e usando o nome de usuário root e sua senha correspondente para fazer login. Para sair do console, basta digitar Ctrl+]
As imagens em nuvem que a maioria dos fornecedores navios são realmente eficientes em termos de utilização de recursos e também se sentem muito rápidos e receptivos. O fato de precisarmos lidar com a configuração estranha da nuvem como ponto de partida apenas dificulta a adoção da comunidade de KVM e as tecnologias relacionadas.
A comunidade pode aprender muito com a maneira como o Docker constrói e envia suas imagens. Eles são realmente fáceis de gerenciar como recipientes e modelos em execução que são fáceis de distribuir e usar.z