From 61b2a0511def9be8f5141257c4bf4e637ec8e2b3 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Thu, 18 Nov 2010 19:56:29 -0200 Subject: Nova rotina de provisionamento usando a hydra suite --- install.mdwn | 173 +++++++---------------------------------------------------- 1 file changed, 19 insertions(+), 154 deletions(-) diff --git a/install.mdwn b/install.mdwn index 54d9441..e9da52f 100644 --- a/install.mdwn +++ b/install.mdwn @@ -8,16 +8,7 @@ A seguir, o procedimento de instala Instalação ---------- -Antes de tudo, determine qual o dispositivo no qual o sistema será instalado, a arquitetura, a versão do sistema e o domínio principal: - - export vg="install" - export device=/dev/nome_do_dispositivo - export arch=amd64 - export version=lenny - export hostname=nome_da_maquina - export domain=projeto.org - -A primeira etapa é o particionamento do disco. Neste exemplo, assumiremos o seguinte layout, ajuste-o conforme as suas necessidades e gostos: +A primeira etapa é o particionamento do disco. Neste exemplo, assumiremos o seguinte layout (ajuste-o conforme as suas necessidades e gostos): # fdisk -l $device Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes @@ -30,146 +21,27 @@ A primeira etapa /dev/sdb2 * 250 273 192780 83 Linux /dev/sdb3 274 121601 974567160 8e Linux LVM -Em seguida vem a criação do LVM: - - pvcreate "$device"3 - vgcreate $vg "$device"3 - lvcreate -L20G -n root $vg - vgchange -a y $vg - -Em seguida, preencher o dispositivo com sujeira: - - dd if=/dev/urandom of=/dev/$vg/root - -A saída do comando acima deve ser algo como - - dd: escrevendo em `/dev/install/root': Não há espaço disponível no dispositivo - 41943041+0 registos dentro - 41943040+0 registos fora - 21474836480 bytes (21 GB) copiados, 8544 s, 2,5 MB/s - -Proceder igualmente com a partição swap: - - dd if=/dev/urandom of="$device"1 - - dd: escrevendo em `/dev/sdb1': Não há espaço disponível no dispositivo - 4000123+0 registos dentro - 4000122+0 registos fora - 2048062464 bytes (2,0 GB) copiados, 972,049 s, 2,1 MB/s - -Com isso, já é possível passar para a criação do volume criptografado: - - cryptsetup -h sha256 -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/$vg/root - cryptsetup luksOpen /dev/$vg/root debootstrap - mkfs.ext3 /dev/mapper/debootstrap - -Montando esse dispositivo num local temporário e instalar o sistema básico: - - mkdir /tmp/debootstrap - mount /dev/mapper/debootstrap /tmp/debootstrap/ - debootstrap --arch=$arch $version /tmp/debootstrap/ - -Configuração inicial --------------------- - - mount none -t proc /tmp/debootstrap/proc/ - mount -o bind /dev/ /tmp/debootstrap/dev - cp -L /etc/resolv.conf /tmp/debootstrap/etc - echo $hostname.$domain > /tmp/debootstrap/etc/hostname - echo "127.0.0.1 localhost $hostname $hostname.$domain" >> /tmp/debootstrap/etc/hosts - echo LANG=C > /tmp/debootstrap/etc/default/locale - - chroot /tmp/debootstrap/ - export PS1="chroot $PS1" - apt-get update ; apt-get upgrade - apt-get install locales cryptsetup lvm2 initramfs-tools grub - -O `/etc/crypttab` deve conter (substitua `/dev/sda1` pelo seu valor correspondente para `$device`): - - cat > /etc/crypttab <<-EOF - # - root /dev/mapper/vg-root none luks,cipher=aes-cbc-essiv:sha256 - cswap /dev/sda1 /dev/random swap,cipher=aes-cbc-essiv:sha256 - EOF - -E o `/etc/fstab` deve conter: - - cat > /etc/fstab <<-EOF - /dev/mapper/cswap none swap sw 0 0 - /dev/mapper/root / ext3 defaults,errors=remount-ro 0 1 - EOF - -Partida -------- - -Agora é a hora de configurar o gerenciador de partida: - - mkfs.ext3 "$device"2 - mount "$device"2 /boot - grub-install --no-floppy "$device" - -Opcionalmente, adicione ao `/etc/fstab` (substituindo `sda1` pelo valor correspondente para `$device`): - - /dev/sda2 /boot ext3 defaults,errors=remount-ro 0 2 +Os tamanhos das partições podem variar, porém as partições e seus tipos devem existir tal como no modelo acima. -Conteúdo do `/boot/grub/menu.lst` (substitua de acordo com os valores de `$arch` e da versão do kernel instalado): - - title Servidor (hd0) - root (hd0,1) - kernel /vmlinuz-2.6.26-2-vserver-amd64 root=/dev/mapper/root ro quiet rootdelay=10 - initrd /initrd.img-2.6.26-2-vserver-amd64 - - title Servidor (hd0) (single) - root (hd0,1) - kernel /vmlinuz-2.6.26-2-vserver-amd64 root=/dev/mapper/root ro single rootdelay=10 - initrd /initrd.img-2.6.26-2-vserver-amd64 - -Note que a opção rootdelay é importante no caso de sistemas contidos dentro de volumes USB, já que o kernel demora alguns instantes para detectar tais volumes. Detalhes a respeito em - -* [Installing Linux on USB - Part 5: Installing Debian Linux on USB flash memory drives](http://blogs.koolwal.net/2009/02/03/installing-linux-on-usb-part-5-installing-debian-linux-on-usb-flash-memory-drives/). -* [initramfs-tools: lvm is not initialized on USB disks](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=366175#37). -* [When root on USB: add rootdelay=xx to kernel command line](https://blueprints.launchpad.net/ubuntu/+spec/kernel-boot-usb-roodelay). - -Kernel ------- - -Adicione a lista dos módulos criptográficos necessários ao arquivo `/etc/initramfs-tools/modules`: - - cat > /etc/initramfs-tools/modules <<-EOF - dm-mod - dm-crypt - aes - twofish - sha256 - EOF - -Tenha certeza de que o kernel irá utilizar uma imagem de inicialização adicionando a seguinte linha ao arquivo `/etc/kernel-img.conf`: +Hydra Suite +----------- - cat > /etc/kernel-img.conf <<-EOF - do_initrd = Yes - EOF +Atualmente o Padrão Saravá utiliza a Hydra Suite para fazer o provisionamento. Versões anteriores deste documento não o utilizam, são mais descritivas e talvez até mais interessantes ao público interessado nos pormenores do procedimento de instalação. -Proceda [desabilitando o firewire do sistema](../firewire) e, em seguida, instale o kernel: +A Hydra Suite pode ser obtida diretamente do seu repositório: - if [ "$arch" == "i386" ]; then - kernel_arch="686" - else - kernel_arch="$arch" - fi - - apt-get install linux-image-2.6-vserver-$kernel_arch + git clone git://git.sarava.org/hydra.git -Imagem de partida ------------------ +Opcionalmente coloque os scripts `hydra` e `hydract` em seu `$PATH` (ou execute os programas a partir da pasta da suíte, por exemplo via `./hydractl`). Após a instalação, basta iniciar o procedimento com os devidos privilégios administrativos (como `root` ou usando o `sudo`): -Para que o sistema consiga inicializar, atualize a imagem de partida: + hydractl provision - update-initramfs -v -u +Antes de começar a instalar, você deverá informar ao programa qual o dispositivo no qual o sistema será instalado, a arquitetura, a versão do sistema e o domínio principal. Depois disso a suíte se encarregará da maior parte dos detalhes de instalação. Renomeando o volume group ------------------------- -Num sistema GNU/Linux, não pode haver dois volume groups com o mesmo nome. Assim, para evitar conflitos de `LVM`, utilizamos um nome temporário (`$vg`) na instalação do sistema. No entanto, o sistema apenas funcionará com o volume group `vg`. Assim, é preciso renomear o volume group. +Num sistema GNU/Linux, não pode haver dois volume groups com o mesmo nome. Assim, para evitar conflitos de `LVM`, o provisionamento usa um nome temporário (`$vg`) na instalação do sistema. No entanto, o sistema apenas funcionará com o volume group `vg`. Assim, é preciso renomear o volume group. Para isso, **certifique-se de estar num sistema e computador que não possua nenhum volume group com o nome** `vg` (caso contrário vá para um que satisfaça tal condição) e proceda com a mudança: @@ -179,20 +51,6 @@ Para isso, **certifique-se de estar num sistema e computador que n Continuando remotamente ----------------------- -Para que seja possível continuar remotamente com a configuração, é preciso instalar um servidor SSH: - - apt-get install openssh-server - ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub - ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub - -Aproveite para instalar aplicativos básicos: - - apt-get install screen cron lsb-release openssl - -Por fim, - - passwd root - Agora a máquina já está quase a ponto de poder ser administrada remotamente. Antes disso, configure a rede, instale o sudo e adicione as contas de usuário/a iniciais: vi /etc/network/interfaces # configuracao de rede @@ -200,7 +58,7 @@ Agora a m vi /etc/resolv.conf # para usar o dns disponivel no data center apt-get install sudo && adduser nome-de-usuario -Antes de largar a máquina no data center, lembre-se de anotar os fingerprints do ssh que você listou anteriormente. +Antes de largar a máquina no data center, lembre-se de anotar os fingerprints do ssh exibidos anteriormente. Expansão de espaço em disco --------------------------- @@ -217,3 +75,10 @@ Algumas refer * [Encrypted Root LVM](http://www.howtoforge.com/encrypted-root-lvm). * [Encrypted filesystem - rigacci.org](http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/cryptfs). * [EncryptedFilesystems - Ubuntu Documentation](https://help.ubuntu.com/community/EncryptedFilesystems). + +A opção de partida `rootdelay` é importante no caso de sistemas contidos dentro de volumes USB, já que o kernel demora alguns instantes para detectar tais volumes. Detalhes a respeito em + +* [Installing Linux on USB - Part 5: Installing Debian Linux on USB flash memory drives](http://blogs.koolwal.net/2009/02/03/installing-linux-on-usb-part-5-installing-debian-linux-on-usb-flash-memory-drives/). +* [initramfs-tools: lvm is not initialized on USB disks](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=366175#37). +* [When root on USB: add rootdelay=xx to kernel command line](https://blueprints.launchpad.net/ubuntu/+spec/kernel-boot-usb-roodelay). + -- cgit v1.2.3