VirtualBox Vagrant Box para Gitian VM

Tanto o Vagrant quanto o Gitian são ferramentas que usam máquinas virtuais para auxiliar no desenvolvimento, embora o Gitian esteja mais focado na construção final da ferramenta, enquanto o Vagrant está mais no desenvolvimento iterativo.

No entanto, ambos precisam de alguma configuração da VM antes de usar. Seguir este guia é bom, mas instala um SO do zero, demorando um pouco para fazer. Parte da comunidade Vagrant é criar arquivos Box que podem ser distribuídos como um ponto de partida para trabalhar. As caixas padrão que o Vagrant sugere ( precise64e precise32) são caixas do Ubuntu, perfeitas para o que o Gitian precisa. Então, podemos cortar algumas das configurações do Gitian inicializando-as com o Vagrant? Certo!

Clone Vagrant Box

Se você já usou o precise64Vagrant box para qualquer projeto, o Vagrant já baixou o arquivo base do Box para você e o salvou em ~/.vagrant.d/boxes. Caso contrário, baixe o arquivo box diretamente e extraia-o (é um ZIP com uma extensão renomeada).

Abra o VirtualBox e escolha File > Import Appliance.... Faça uma precise64busca detalhada na pasta para localizar o box.ovfarquivo e selecioná-lo.

Renomear

Gitian espera que a VM seja nomeada “Gitian- {suite} – {architecture}”, então verifique seu arquivo YML descritor e renomeie a VM apropriadamente (Provavelmente “Gitian-precise-amd64”).

Recursos do sistema

A caixa Vagrant precise64 padrão é configurada para usar apenas 386 MB de RAM, o que pode ser bom para um servidor Apache pequeno, mas não é o suficiente para processos de construção que usam muitos recursos. Clique no ícone “Configurações” e ajuste a memória do sistema para pelo menos 1024 MB (1 GB).

Configuração SSH

Na máquina host, execute:

$ VBoxManage modifyvm Gitian-precise-amd64 --natpf1 "guestssh,tcp,,2223,,22"

Isso configura o encaminhamento de porta, então se localhost:2223conecta à porta 22 da máquina virtual, a porta SSH padrão.

Agora inicialize a máquina virtual.

Em seguida, precisaremos de uma chave SSH para permitir logins sem senha. Em sua máquina host, faça:

$ mkdir var
$ ssh
-keygen -t dsa -f var/id_dsa -N ""
$ ssh
-p 2223 -oNoHostAuthenticationForLocalhost=yes vagrant@localhost 'mkdir -p .ssh && chmod 700 .ssh && cat >> .ssh/authorized_keys' < var/id_dsa.pub

NOTA: a última linha deve ser “ssh -p 2223 -oNoHostAuthenticationForLocalhost = yes vagrant @localhost ‘mkdir -p .ssh && chmod 700 .ssh && cat >> .ssh / chaves autorizadas ‘ <var / id dsa.pub”, há um problema com os blocos de código delimitados de redução com os símbolos em …

Digite vagranta senha do vagrantusuário quando solicitado. Agora o usuário vagrant deve ser capaz de fazer o login sem uma senha. Mas…

Configuração do usuário

… Gitian espera que haja um usuário chamado “ubuntu” na máquina, enquanto o Vagrant o configura com o nome de usuário “vagrant”. Então, vamos usar o usuário Vagrant para criar um para Gitian: Inicie a máquina virtual, faça o login como vagrant/ vagrante faça o seguinte:

$ sudo adduser ubuntu
$ sudo adduser ubuntu sudo

$ sudo mkdir
-p /home/ubuntu/.ssh
$ sudo chmod
700 /home/ubuntu/.ssh
$ sudo cp
~/.ssh/authorized_keys /home/ubuntu/.ssh/
$ sudo chown
-R ubuntu:ubuntu /home/ubuntu/.ssh
$ sudo mkdir
-p /root/.ssh
$ sudo chmod
700 /root/.ssh
$ sudo cp
~/.ssh/authorized_keys /root/.ssh/

Isso copia a chave SSH do usuário Vagrant para o usuário Ubuntu, bem como para o usuário root.

Pacotes

Para garantir que os pacotes adequados para a construção do gitian já estejam presentes na máquina antes de você fazer o snapshot (para acelerar a inicialização mais tarde, faça login como ubuntuusuário e execute:

$ sudo apt-get update
$ sudo apt
-get install autoconf2.13 automake build-essential bsdmainutils faketime g++ g++-mingw-w64 git-core libqt4-dev libtool libz-dev mingw-w64 nsis pciutils pkg-config psmisc subversion unzip zip

Gitian pega uma impressão digital SHA dos pacotes instalados, para garantir a consistência, e faz isso pegando o hash dos arquivos armazenados , mas as caixas do Vagrant Precise não os têm em cache por padrão, então vamos construir isso para que não baixado novamente a cada vez:*.deb/var/cache/apt/archives

$ sudo apt-get upgrade
$ sudo apt
-get clean
$ sudo dpkg
-query -W -f '${Package}n' | sudo xargs -n 50 apt-get install --reinstall -y -d

Instantâneo

Gitian sempre restaura a VM para um estado conhecido antes de reconstruir o projeto, portanto, precisamos criar um instantâneo para ele. Saia da VM e escolha . Nomeie o instantâneoMachine > Take Snapshot...Gitian-Clean

Teste

Em sua máquina host, navegue até sua pasta e execute o seguinte:gitian-builder

$ export USE_VBOX=1
$ export PATH
=$PATH:$(pwd)/libexec
$ make
-clean-vm --suite precise --arch amd64 # VM in VirtualBox should restore itself to Snapshot state
$ start
-target 64 precise-amd64 # VM should power on
$ on
-target ls -la # Should output a listing of the Ubuntu user's home folder, without prompting for a password
$ stop
-target # Should power off the VM

Erros

Se você receber um timeout waiting for bannererro, é uma indicação de que o SSH não está funcionando corretamente na VM. Ao configurar várias máquinas por meio desse processo, às vezes o instantâneo do VirtualBox não captura o SSH em um estado adequado e, ao restaurar o instantâneo, o serviço SSH é interrompido. Tente excluir o instantâneo “Gitian-Clean” e recriá-lo, e isso deve resolver o problema.