21.5. Preparando Multiplas Máquinas

Contribuição de Mike Meyer.

Se você possui multiplas máquinas que você quer manter a mesma árvore de fontes, então fazer com que todas façam download dos fontes e recompilem tudo parece ser uma perda de recursos: espaço em disco, banda de rede, e ciclos de CPU. E é, e uma idéia é possuir uma máquina para fazer a maior parte do trabalho, enquanto o resto das máquinas pegam este trabalho através de NFS. Esta seção expõe um método para fazer isto.

21.5.1. Preliminares

Primeiro, identifique um conjunto de máquinas que executarão o mesmo conjunto de binários, as quais chamaremos de conjunto de compilação. Cada máquina pode possuir um kernel customizado, mas elas estarão executando os mesmos binários de usuário. Deste conjunto, escolha uma máquina para ser a máquina de compilação . Será a máquina onde os binários de sistema e o kernel serão compilados. Idealmente, deve ser uma máquina rápida com folga para executar o comando make world. Você também desejará escolher uma máquina de testes , para testar as atualizações de programas antes de colocá-las em produção. Esta deve ser uma máquina que pode permanecer fora do ar por grandes períodos de tempo. Pode ser a máquina de compilação, mas não necessariamente.

Todas as máquinas neste conjunto de compilação precisam montar o /usr/obj e /usr/src da mesma máquina, e no mesmo ponto. Idealmente, estes são dois drives diferentes na máquina de compilação, mas eles podem ser montados via NFS nesma máquina também. Se você possui multiplos conjuntos de compilação, o /usr/src deve estar na máquina de compilação, e montado através de NFS no resto.

Finalmente esteja certo que o arquivo /etc/make.conf em todas as máquinas do conjunto de compilação estejam de acordo com a máquina de compilação. Isto significa que a máquina de compilação deve ter todas as partes do sistema base que qualquer máquina do conjunto de instalação vá instalar. Além disso, cada máquina deve ter seu nome de kernel configurado através da variável KERNCONF em /etc/make.conf e a máquina de compilação deve listar todas em KERNCONF, listando seu próprio kernel primeiro. A máquina de compilação deve ter os arquivos de configuração de kernel para cada máquina em /usr/src/sys/arch/conf se for compilar seus kernels.

21.5.2. O Sistema Base

Agora que tudo está feito, você está pronto para compilar tudo. Compile o kernel e o sistema como descrito em Seção 21.4.6.2 na máquina de compilação, mas não instale nada. Depois que a compilação terminar, vá para a máquina de teste e instale o kernel que você acabou de compilar. Se está máquina monta os diretórios /usr/src e /usr/obj via NFS, quando você reinicializar no modo mono usuário, você precisará habilitar a rede e montá-los. A maneira mais fácil de fazer isto é reinicializar no modo multi usuário e executar o comando shutdown now para ir para o modo mono usuário. Uma vez lá, você pode instalar o novo kernel e sistema e executar o mergemaster como você faz normalmente. Ao terminar, reinicialize e volte às operações normais de multi usuário desta máquina.

Após estar certo de que tudo na máquina de teste está funcionando apropriadamente, use o mesmo procedimento para instalar em cada uma das máquinas do conjunto de compilação.

21.5.3. Ports

A mesma idéia pode ser usada na árvore de aplicações portadas. O primeiro passo crítico é montar o diretório /usr/ports a partir da mesma máquina para todas as do conjunto de compilação. Você pode então configurar o arquivo /etc/make.conf apropriadamente para compartilhar os distfiles . Você deve configuarar a variável DISTDIR para um diretório comum compartilhado com permissão de escrita para qualquer usuário root esteja conectado aos diretórios montados via NFS. Cada máquina deve configurar a variável WRKDIRPREFIX para um diretório local de compilação. Finalmente, se você for compilar e distribuir pacotes, você deve configurar a variável PACKAGES para um diretório similar ao da variável DISTDIR.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.