Ontem tive um freela no qual a missão era instalar 10 servidores LAMP (Linux, Apache, MySQL, PHP) com o Ubuntu Server, PHPMyAdmin, OpenSSH-server e ProFTPd. Os 10 servidores deveriam ter IPs fixos diferentes.
A instalação do primeiro servidor foi tranquila, pois o Ubuntu Server já instala o LAMP e o SSH para você automaticamente. Após a instalação terminar, é bom deixar tudo atualizado:
sudo apt-get update && sudo apt-get dist-upgrade
Restando apenas instalar o PHPMyAdmin e o ProFTPd, o que foi trivial:
sudo apt-get install phpmyadmin proftpd
A dica aqui é criar no servidor uma partição pequena, como 5 Gibibytes, para que não seja necessário copiar 250GiB de zeros (ou qualquer que seja o tamanho do HD) à toa. É uma boa também criar partições pequenas para que você possa usar HDs de tamanhos diferentes. Depois, se necessário, você poderá redimensionar a partição com o cfdisk ou com o gparted.
Mas vamos ao que interessa. Para clonar as máquinas (que não precisam necessariamente ser idênticas, embora seja uma boa que sejam para evitar dores de cabeça) eu usei o ddrescue. Para tal, retiramos o HD da primeira máquina, plugamos na segunda (onde, como as máquinas tem só um HD, reconhecido como /dev/sda, o HD extra com o servidor a ser clonado será reconhecido como /dev/sdb. Se esse não for o caso, verificar com sudo fdisk -l) e bootamos com um LiveCD do Ubuntu (ou “LivePendrive”, usei o Ubuntu Netbook Remix que instalei no meu Acer Aspire One
). Nele, vamos usar o modo texto, então aperte Ctrl+Alt+F1 – ou abra um terminal gráfico em Aplicativos > Acessórios > Terminal, se preferir. Vamos começar criando uma tabela de alocações vazia no HD zerado (ou com qualquer outra coisa instalada) para que possamos fazer a cópia:
sudo cfdisk -z /dev/sda
No cfdisk, pressione W (Shift+w) e entre com yes para gravar uma tabela de alocação vazia. Note que isto apaga os dados do disco, então tenha certeza de que está usando o dispositivo certo. Agora instalaremos o ddrescue, que fará o trabalho da clonagem:
sudo apt-get install gddrescue
E vamos botar a cópia para rolar.
sudo ddrescue -v --max-size=5Gi /dev/sdb /dev/sda
Os parâmetros são: -v para um modo verbose (indicar a posição da cópia), --max-size=nXX para indicar o quanto copiar, (é opcional, mas se você tem HDs de um 1TB, você não irá querer que ele fique horas copiando um monte de zeros, não é mesmo?) e finalmente /dev/sdx e /dev/sdy são os dispositivos de origem e destino da cópia. Note que a ordem é importante, cuidado pois você pode acabar apagando o servidor original se for descuidado nessa parte. Agora podemos desligar a máquina, tirar o HD de origem da cópia e reiniciá-la.
Um problema que notei foi que mesmo usando máquinas com estritamente o mesmo hardware, a placa de rede é detectada de forma diferente (por exemplo, se na primeira máquina era eth0, na segunda será eth1). Isto é um problema para servidores, pois o script que carrega a configuração de IP fixo está amarrado numa determinada placa. Assim, vamos editar esse arquivo:
sudo nano /etc/network/interfaces
e corrigir as referências de eth0 para eth1. Eu não sei exatamente porque isto acontece, acredito que haja um bind do MAC Address da placa com o endereço da placa no Linux, mas não sei onde essa relação se encontra, e tive que fazer a mudança manualmente. Aproveite para trocar o endereço de IP fixo, se necessário.
Além disso, como a placa de rede não sobe, não há um IP válido, então se você colocou um bind-address diferente de localhost na configuração do MySQL, ele também não irá carregar. Assim, caso você tenha trocado o IP no passo anterior, edite o arquivo de configuração do trocando o bind-address:
sudo nano /etc/mysql/my.cfg
No mais, é isso. Demorei um bocado para configurar a primeira máquina, tava batendo cabeça com as permissões do FTP, umask etc., me enrolei um pouco com o mod rewrite e o htaccess do Apache, e também na clonagem da primeira máquina eu não conseguia entender porque a placa de rede não estava subindo, mas depois que notei o problema e estabeleci estes passos, a clonagem das máquinas e sua posterior configuração ocorreu de maneira muito rápida, gastando menos de 10 minutos por servidor.
Antes de terminar, agradeço ao Pedro Marins que me indicou o freela e a possibilidade de aprender sobre este assunto. Valeu PNC!


Veja o arquivo nano /etc/udev/rules.d/70-persistent-net.rules é neste arquivo que é associado o endereço de MAC a Eth.