Criando e configurando novas VMs do CEFALA

Neste artigo, as etapas para a criação e a configuração de máquinas virtuais (VMs) do CEFALA sào descritas. O processo não é complicado, mas exige a realização de uma sequência de ações manuais, dificilmente automatizáveis. Como vocês verão abaixo, eu tentei automatizar ao máximo a configuração dos clientes NSS, LDAP e NFS. Vamos então ao que interessa.

Preliminares

Antes de se criar uma nova VM, é necessário que um IP seja reservado para ela no servidor DNS do CEFALA. Digamos que a VM a ser criada é a xyz. Assim que seu IP estiver atribuído, podemos conhecê-lo através do seguinte comando:

$ host xyz.cefala.org

O arquivo de configuração KVM da VM deverá também ser criada. Não entrarei em detalhes deste processo no presente artigo. Normalmente, após a sua criação, o arquivo de configuração aparecerá como /etc/libvirt/qemu/CEFALA-XYZ.xml ou algo do gênero.

Algo importante para o bom funcionamento da VM é a criação da interface de rede br3. Se ela ainda não existir, é possível fazê-lo no virt-manager. Para tanto, clique no ícone "Show virtual hardware details" e em seguida no botão "Add Hardware". Crie uma interface de rede com esta configuração:

Network source: Specify shared device name
Bridge name: br3
Device model: rtl8139

Instalação do sistema operacional

Antes de iniciar a instalação do sistema operacional, é necessário indicar o arquivo ISO contendo o netinst da Debian. Se isto não tiver ainda sido feito, lance o virt-manager e configure o "IDE CDROM 1", apontando o seu "Source path" para o arquivo ISO /var/lib/libvirt/images/debian-testing-amd64-netinst.iso ou aquele que for apropriado. É também importante colocar "IDE CDROM 1" no topo da lista "Boot Options". Em seguida, basta ligar a VM e o instalador da Debian será lançado.

Dizem por aí que até uma galinha é capaz de instalar um sistema Debian, pois basta ficar bicando na tecla "Enter". No nosso caso, teremos que ter um cérebro ligeiramente superior ao de uma galinha, pois teclas diferentes da "Enter" terão que ser usadas. Em particular, a etapa "Configuring the network with DHCP" não funcionará (pois não existe servidor DHCP para as VMs) e teremos que escolher a opção "Configure network manually" e fornecer os dados abaixo, manualmente:

address: 150.164.32.XX
netmask: 255.255.255.0
gateway: 150.164.32.254
nameserver: 150.164.32.32

O XX do address IP é aquele que o DNS do CEFALA nos fornece. Na sequência da configuração rede, escolhemos o nome da máquina adequado (xyz no nosso exemplo) e usamos o "domain name" cefala.org.

O programa de instalação da Debian exige a criação de um usuário além do root. Escolha um nome de login qualquer para ele. Este usuário deverá ser suprimido mais tarde, pois as contas dos usuário serão compartilhadas via LDAP.

Configuração da VM

Como descrito por Arlindo em um outro artigo, as VMs do CEFALA compartilham o diretório /home através do NFS, cujo servidor é a VM nfs.cefala.org. O protocolo NFS passa pela bridge br3, definida no hospedeiro kvm.cefala.org. Deste modo, será necessário criar na nova VM uma nova interface de rede (a eth1) com o IP apropriado.

Além disto, a administração das contas dos usuários é centralizada na VM nfs.cefala.org, via LDAP. É necessário, assim, instalar e configurar os pacotes Debian com os clientes NSS e LDAP.

No intuito de automatizar ao máximo as ações descritas acima, eu criei um Makefile e alguns arquivos de configuração que estão atualmente sob w controle Git. Aqueles que têm acesso aos repositórios cefala-admin (via par de chaves SSH) poderão obter os arquivos desta maneira:

$ git clone cefala-admin@git.cefala.org:cefala-vm-conf.git

O comando acima não funcionará na VM que acabou de ser criada, pois a partição /home ainda não está disponível. Ora, é para isto mesmo que precisamos dos arquivos! Podemos contornar este problema do ovo e da galinha com os seguintes comandos (utilize a console do virt-manager, fazendo o login como root):

# scp -r rlaboiss@git.cefala.org:/var/git/cefala-admin/cefala-vm-conf.git .
# aptitude install git
# git clone cefala-vm-conf.git
# aptitude remove git

Obviamente, você terá que substituir o rlaboiss acima pelo seu nome de login na base LDAP. Em seguida, instale os pacotes libnss-ldapd e nfs-common:

# aptitude install libnss-ldapd nfs-common

Aceite todos os valores propostos como default no debconf. Eles serão modificados no passo seguinte, que é este abaixo:

# cd cefala-vm-conf
# aptitude install make
# make IP=85 HOSTNAME=xyz
# aptitude remove make

A especificação das variáveis IP e HOSTNAME é obrigatória. A variável IP corresponde ao último número do IP na bridge br3. Atualmente, nós temos as seguintes definições:

172.16.10.1 nfs.cefala.org
172.16.10.2 git.cefala.org
172.16.10.3 www.cefala.org
172.16.10.4 dev.cefala.org
172.16.10.5 sci.cefala.org

Et voilà! A nova VM está pronta para utilização. Para ter certeza que tudo está funcionando, faça um teste de conexão à partir de uma outra máquina, com o comando:

$ ssh xyz.cefala.org

Nota: os comandos para remover os pacotes git e make não são obrigatórios, mas garantem que as VMs permaneçam limpas.

Update: Desde o commit 528e67f, não é mais necessário especificar as variáveis IP e HOSTNAME no lançamento do commando make.

social