O Alibaba Cloud Linux fornece imagens VHD e QCOW2 com cloud-init integrado para máquinas virtuais baseadas em kernel (KVMs) locais. Este tópico descreve como usar imagens do Alibaba Cloud Linux 2 ou 3 em KVMs locais.
Informações preliminares
Este tópico usa o Anolis OS como sistema operacional host e a fonte de dados NoCloud para gerar arquivos de configuração do cloud-init. Esses arquivos são anexados à KVM como discos virtuais para inicializar as configurações do sistema durante a inicialização. Baixe o Anolis OS na página de download do Anolis OS. Pressupõe-se familiaridade com o gerenciamento de KVM.
Etapa 1: Baixar uma imagem do Alibaba Cloud Linux
Baixe uma imagem VHD ou QCOW2 em uma das seguintes URLs:
Alibaba Cloud Linux 3: Imagem Local do Alibaba Cloud Linux 3
Alibaba Cloud Linux 2: Imagem Local do Alibaba Cloud Linux 2
Etapa 2: Obter a imagem de inicialização seed.img
As imagens do Alibaba Cloud Linux exigem uma imagem de inicialização seed.img contendo configurações de rede, conta e repositório yum para o cloud-init.
A imagem de inicialização geralmente se chama seed.img. Você pode renomeá-la, mas recomendamos manter o nome padrão.
A imagem de inicialização seed.img contém apenas arquivos de configuração do cloud-init, não os arquivos de sistema do Alibaba Cloud Linux.
Use um dos métodos a seguir para obter a imagem de inicialização seed.img:
-
Método 1: Baixar a imagem de inicialização seed.img
Baixe a imagem de inicialização seed.img em uma das seguintes URLs:
Alibaba Cloud Linux 3: Imagem Local do Alibaba Cloud Linux 3
Alibaba Cloud Linux 2: Imagem Local do Alibaba Cloud Linux 2
NotaA imagem pré-construída possui configurações fixas que não podem ser modificadas. Verifique se as configurações atendem aos seus requisitos antes de usá-la.
-
Método 2: Usar a fonte de dados NoCloud para gerar manualmente a imagem de inicialização seed.img
NotaNoCloud é uma fonte de dados do cloud-init que fornece arquivos de configuração em ambientes locais para leitura pela máquina virtual durante a inicialização.
-
Crie dois arquivos de configuração chamados
meta-dataeuser-dataem um diretório local.Esses arquivos fazem parte da imagem de inicialização
seed.img. Durante a inicialização, o cloud-init lê esses arquivos e configura a máquina virtual adequadamente.-
Crie um diretório chamado
seede acesse-o.sudo mkdir seed sudo cd seed/ -
Crie um arquivo de configuração chamado
meta-data.Exemplo de conteúdo. O nome da máquina virtual é
alinux-host. Altere conforme necessário.#cloud-config #vim:syntax=yaml local-hostname: alinux-host -
Crie um arquivo de configuração chamado
user-data.Exemplo de conteúdo. Modifique conforme necessário. Se usar este exemplo diretamente, certifique-se de compreender a configuração.
Cria uma conta de usuário
alinuxcom a senhaaliyune privilégios desudo.-
Adiciona o repositório yum do Alibaba Cloud Linux.
Alibaba Cloud Linux 3
#cloud-config #vim:syntax=yaml # Create an account named alinux and grant the account the permissions to run sudo commands. users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # Create a YUM repository for Alibaba Cloud Linux 3. yum_repos: alinux3-module: name: alinux3-module baseurl: https://mirrors.aliyun.com/alinux/$releasever/module/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-updates: name: alinux3-updates baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-plus: name: alinux3-plus baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-powertools: name: alinux3-powertools baseurl: https://mirrors.aliyun.com/alinux/$releasever/powertools/$basearch/ gpgcheck: 1 enabled: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-os: name: alinux3-os baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ gpgcheck: 1 enabled: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3Alibaba Cloud Linux 2
#cloud-config #vim:syntax=yaml # Create an account named alinux and grant the account the permissions to run sudo commands. users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # Create a YUM repository for Alibaba Cloud Linux 2. yum_repos: base: baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Base - mirrors.aliyun.com updates: baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Updates - mirrors.aliyun.com extras: baseurl: https://mirrors.aliyun.com/alinux/$releasever/extras/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Extras - mirrors.aliyun.com plus: baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Plus - mirrors.aliyun.com
-
-
(Opcional) Se usar o Alibaba Cloud Linux 3, ative o repositório epel-testing.
-
Abra o arquivo
epel-testing.repo.sudo vim /etc/yum.repos.d/epel-testing.repo -
Pressione i para entrar no modo de edição e substitua
enabled=0porenabled=1.[epel-testing] name=Extra Packages for Enterprise Linux 8 - Testing - $basearch baseurl=http://mirrors.cloud.aliyuncs.com/epel/testing/8/Everything/$basearch enabled=0 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 Pressione
Esce insira :wq para salvar e sair.
-
-
Instale o pacote
cloud-utils:sudo yum install -y cloud-utils -
Gere a imagem de inicialização
seed.img:sudo cloud-localds seed.img user-data meta-data
-
Etapa 3: Iniciar sua máquina virtual local
Inicie uma KVM usando um dos seguintes métodos:
Use libvirt to start the KVM
-
Crie um arquivo de configuração XML no seu computador local.
Arquivo de exemplo:
alinux3.xmlpara Alibaba Cloud Linux 3 oualinux2.xmlpara Alibaba Cloud Linux 2. Modifique conforme necessário.Alibaba Cloud Linux 3
<domain type='kvm'> <name>alinux3</name> <memory>1048576</memory><!-- Set the memory size to 1 GB. --> <vcpu>1</vcpu> cpu mode='host-passthrough'><!-- Start the KVM on the server of the corresponding architecture. --> </cpu> <os> <type arch='x86_64'>hvm</type><!-- If the architecture of the server is ARM 64-bit, set arch to aarch64. --> <boot dev='hd'/> </os> <clock sync="localtime"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator><!-- Configure a KVM path based on the operating system. For example, the KVM path for Ubuntu is /usr/bin/kvm. --> <disk type='file' device='disk'><!-- Specify the type parameter based on the image format. Set type to qcow2 if the image is in the QCOW2 format, and set type to vpc if the image is in the VHD format. --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- If you want to create a snapshot in the QCOW2 format, disable dataplane. --> <source file='path'/> <!-- Enter the absolute path of the Alibaba Cloud Linux 3 image. --> <target dev='vda' bus='virtio'/> </disk> <!-- Add information about the seed.img boot image. --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- Enter the absolute path of the seed.img boot image. --> <target dev='vdb' bus='virtio'/> </disk> <interface type='network'> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'> <target type='virtio' port='0'/> </console> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> </video> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> </devices> </domain>Alibaba Cloud Linux 2
<domain type='kvm'> <name>alinux2</name> <memory>1048576</memory> <!-- Set the memory size to 1 GB. --> <vcpu>1</vcpu> <os> <type arch='x86_64'>hvm</type> <boot dev='hd'/> </os> <clock sync="localtime"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator><!-- Configure a KVM path based on the operating system. For example, the KVM path for Ubuntu is /usr/bin/kvm. --> <disk type='file' device='disk'><!-- Specify the type parameter based on the image format. Set type to qcow2 if the image is in the QCOW2 format, and set type to vpc if the image is in the VHD format. --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- If you want to create a snapshot in the QCOW2 format, disable dataplane. --> <source file='path'/> <!-- Enter the absolute path of the Alibaba Cloud Linux 2 image. --> <target dev='vda' bus='virtio'/> </disk> <!-- Add information about the seed.img boot image. --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- Enter the absolute path of the seed.img boot image. --> <target dev='vdb' bus='virtio'/> </disk> <interface type='network'> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'> <target type='virtio' port='0'/> </console> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> </video> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> </devices> </domain> -
Execute o comando
virshpara iniciar a KVM.NotaPor padrão, o libvirt é executado como um usuário não root. Certifique-se de que esse usuário tenha permissões para gerenciar os arquivos de imagem e seus diretórios pai.
Alibaba Cloud Linux 3
sudo virsh define alinux3.xml virsh start <KVMName> # Enter the name of the KVM. You can run the sudo virsh list --name command to query the name of the KVM.Alibaba Cloud Linux 2
sudo virsh define alinux2.xml sudo virsh start <KVMName> # Enter the name of the KVM. You can run the sudo virsh list --name command to query the name of the KVM.
Execute o comando qemu-kvm para iniciar a KVM
Anexe o seguinte parâmetro ao comando qemu-kvm:
-drive file=/path/to/your/seed.img,if=virtio,format=raw
/path/to/your/seed.img: Substitua pelo caminho real do seu arquivo seed.img.if=virtio: Usa a interface virtio para o disco virtual.format=raw: Especifica o formato de imagem de disco RAW.
Exemplo:
sudo /usr/libexec/qemu-kvm -drive file=/home/ecs-user/seed/seed.img,if=virtio,format=raw
Use the virt-manager graphical interface to start the KVM
Adicione o caminho absoluto da sua imagem de inicialização seed.img ao arquivo de configuração da KVM antes de iniciá-la.
Próximos passos
Após a inicialização da KVM, faça login com o nome de usuário e a senha especificados no arquivo de configuração user-data.
Para fazer login com um par de chaves SSH, adicione a chave pública ao arquivo de configuração do cloud-init.
Referências
O cloud-init inicializa automaticamente máquinas virtuais Linux na inicialização, configurando o nome do host, a rede e os pacotes de software.
libvirt, qemu-kvm e virt-manager são ferramentas comuns de gerenciamento de KVM. Consulte a documentação da Red Hat.