diff --git a/OVH-SYS_Hard_RAID_KVMServer.sh b/OVH-SYS_Hard_RAID_KVMServer.sh new file mode 100644 index 0000000..4224bd5 --- /dev/null +++ b/OVH-SYS_Hard_RAID_KVMServer.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/sda1 /, /dev/sda2 /home. +# / doit être sur /dev/sda1. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/sda1 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +parted -s /dev/sda set 1 bios_grub on +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 200M +parted -s /dev/sda set 2 boot on +mkfs.ext4 -LBOOT /dev/sda2 >/dev/null +# / +parted -a optimal -s /dev/sda mkpart primary ext4 200M 1200M +mkfs.ext4 -LROOTFS /dev/sda3 >/dev/null +# /var +parted -a optimal -s /dev/sda mkpart primary ext4 1200M 11200M +mkfs.ext4 -LVAR /dev/sda4 >/dev/null +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 11200M 16200M +mkfs.ext4 -LUSR /dev/sda5 >/dev/null +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 16200M 100% +parted -s /dev/sda set 6 lvm on + + +# Add LVM with a VG for all of the free space. +pvcreate /dev/sda6 +vgcreate ssd0 /dev/sda6 +pvcreate /dev/sdb +vgcreate hdd0 /dev/sdb +lvcreate --size 1G --name tmp ssd0 +mkfs.ext4 -LTMP /dev/mapper/ssd0-tmp >/dev/null +lvcreate --size 10G --name swap1 ssd0 +lvcreate --size 10G --name swap2 hdd0 +mkswap -f -LSWAP1 /dev/mapper/ssd0-swap1 +mkswap -f -LSWAP2 /dev/mapper/hdd0-swap2 +lvcreate --size 20G --name home hdd0 +mkfs.ext4 -LHOME /dev/mapper/hdd0-home >/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# LVM2 déjà OK sur machines OVH +#apt install -y lvm2 +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Hard_RAID_KVMServer_EFI.sh b/OVH-SYS_Hard_RAID_KVMServer_EFI.sh new file mode 100644 index 0000000..e149fea --- /dev/null +++ b/OVH-SYS_Hard_RAID_KVMServer_EFI.sh @@ -0,0 +1,154 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# / doit être sur /dev/sda2. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C + +swapoff -a + +cd /mnt + +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/sda2 /mnt/rootfs/ + +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ + +umount /mnt/rootfs +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +sleep 2 +# BOOT EFI *mandatory* 100 Mo +parted -a minimal -s /dev/sda mkpart ESP fat32 0M 100M +parted -s /dev/sda set 1 esp on +parted -s /dev/sda set 1 boot on +mkfs.vfat -F32 /dev/sda1 >/dev/null +fatlabel /dev/sda1 EFI_SYSPART +sleep 2 +# /boot 500 Mo +parted -a minimal -s /dev/sda mkpart primary ext4 100M 600M +mkfs.ext4 -LBOOT /dev/sda2 >/dev/null +sleep 2 +# / 500 Mo +parted -a optimal -s /dev/sda mkpart primary ext4 600M 1100M +mkfs.ext4 -LROOTFS /dev/sda3 >/dev/null +sleep 2 +# /usr 6 Go +parted -a optimal -s /dev/sda mkpart primary ext4 1100M 7100M +mkfs.ext4 -LUSR /dev/sda4 >/dev/null +sleep 2 +# swap1 10 Go +parted -a minimal -s /dev/sda mkpart primary ext4 7100M 17100M +mkswap -f -LSWAP1 /dev/sda5 +sleep 2 +# swap2 10 Go +parted -a minimal -s /dev/sda mkpart primary ext4 17100M 27100M +mkswap -f -LSWAP2 /dev/sda6 +sleep 2 +# LVM 100% +parted -a minimal -s /dev/sda mkpart primary ext4 27100M 100% +parted -s /dev/sda set 7 lvm on +sleep 2 +# Add LVM with a VG for all of the free space. +pvcreate /dev/sda7 +vgcreate vg0 /dev/sda7 +sleep 2 +# TMP +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +sleep 2 +# VAR +lvcreate --size 5G --name var vg0 +mkfs.ext4 -LVAR /dev/mapper/vg0-var >/dev/null +sleep 2 +# HOME +lvcreate --size 50G --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null +sleep 2 + +# Le reste du disque est laissé tel quel + +# Mount partitions +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mkdir rootfs/usr +mount -LUSR rootfs/usr + +# Copy data from RAM. +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ rootfs/usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ + +umount home var +# si on démonte usr, le chroot n'est pas possible (bash n'est pas trouvé) +# umount rootfs/usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 2 +LABEL=SWAP2 none swap sw 0 2 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* + +chroot /mnt/rootfs/ bash + +export LC_ALL=C + +mount /boot +mount /boot/efi +# /usr est déjà monté depuis l'extérieur du chroot +mount /var +mount /tmp +chmod 1777 /tmp + +# purge des paquets de Grub et du noyau, pour réinitialiser complètement les config +# * Remove GRUB 2 from /boot/grub? Yes +apt purge -y os-prober grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common + +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done + +# réinstallation des paquets +apt install -y lvm2 grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 + +grub-install /dev/sda + +# Questions "update-grub": +# * Linux command line: +# * Linux default command line: quiet +# * Force extra installation to the EFI removable media path? Yes +# * Update NVRAM variables to automatically boot into Debian? Yes +update-grub + +dpkg-reconfigure grub-efi-amd64 + + +# paquets utiles pour evolixisation par Ansible +apt install -y sudo python python-apt + +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Hard_RAID_SpecialServer_2VOLSRAID_GPT.sh b/OVH-SYS_Hard_RAID_SpecialServer_2VOLSRAID_GPT.sh new file mode 100644 index 0000000..83d7914 --- /dev/null +++ b/OVH-SYS_Hard_RAID_SpecialServer_2VOLSRAID_GPT.sh @@ -0,0 +1,111 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/sda1 /, /dev/sda2 /home. +# / doit être sur /dev/sda1. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/sda2 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +parted -s /dev/sda set 1 bios_grub on +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 200M +parted -s /dev/sda set 2 boot on +mkfs.ext4 -LBOOT /dev/sda2 >/dev/null +# / +parted -a optimal -s /dev/sda mkpart primary ext4 200M 1200M +mkfs.ext4 -LROOTFS /dev/sda3 >/dev/null +# /var +parted -a optimal -s /dev/sda mkpart primary ext4 1200M 11200M +mkfs.ext4 -LVAR /dev/sda4 >/dev/null +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 11200M 16200M +mkfs.ext4 -LUSR /dev/sda5 >/dev/null +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 16200M 100% +parted -s /dev/sda set 6 lvm on + + +# Add LVM with a VG for all of the free space. +pvcreate /dev/sda6 +vgcreate RAID1_VOL0 /dev/sda6 +pvcreate /dev/sdb +vgcreate RAID1_VOL1 /dev/sdb +lvcreate --size 1G --name tmp RAID1_VOL0 +mkfs.ext4 -LTMP /dev/mapper/RAID1_VOL0-tmp >/dev/null +lvcreate --size 512M --name swap1 RAID1_VOL0 +lvcreate --size 512M --name swap2 RAID1_VOL1 +mkswap -f -LSWAP1 /dev/mapper/RAID1_VOL0-swap1 +mkswap -f -LSWAP2 /dev/mapper/RAID1_VOL1-swap2 +lvcreate --size 600G --name home RAID1_VOL0 +mkfs.ext4 -LHOME /dev/mapper/RAID1_VOL0-home >/dev/null +lvcreate --size 40G --name log RAID1_VOL0 +mkfs.ext4 -LLOG /dev/mapper/RAID1_VOL0-log >/dev/null +lvcreate --size 200G --name srv RAID1_VOL1 +mkfs.ext4 -LSRV /dev/mapper/RAID1_VOL1-srv >/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LLOG log +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a --exclude="log/**" root_in_ram/var/ var/ +rsync -a root_in_ram/var/log/ log/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr log + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=LOG /var/log ext4 defaults 0 2 +LABEL=SRV /srv ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +mount /var/log +chmod 1777 /tmp +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# LVM2 déjà OK sur machines OVH +#apt install -y lvm2 +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Hard_RAID_StandardServer.sh b/OVH-SYS_Hard_RAID_StandardServer.sh new file mode 100644 index 0000000..34e9176 --- /dev/null +++ b/OVH-SYS_Hard_RAID_StandardServer.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/sda1 /, /dev/sda2 /home. +# / doit être sur /dev/sda1. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/sda1 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +parted -s /dev/sda set 1 bios_grub on +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 200M +parted -s /dev/sda set 2 boot on +mkfs.ext4 -LBOOT /dev/sda2 >/dev/null +# / +parted -a optimal -s /dev/sda mkpart primary ext4 200M 1200M +mkfs.ext4 -LROOTFS /dev/sda3 >/dev/null +# /var +parted -a optimal -s /dev/sda mkpart primary ext4 1200M 11200M +mkfs.ext4 -LVAR /dev/sda4 >/dev/null +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 11200M 16200M +mkfs.ext4 -LUSR /dev/sda5 >/dev/null +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 16200M 100% +parted -s /dev/sda set 6 lvm on + + +# Add LVM with a VG for all of the free space. +pvcreate /dev/sda6 +vgcreate SSD0 /dev/sda6 +pvcreate /dev/sdb +vgcreate HDD0 /dev/sdb +lvcreate --size 1G --name tmp SSD0 +mkfs.ext4 -LTMP /dev/mapper/SSD0-tmp >/dev/null +lvcreate --size 512M --name swap1 SSD0 +lvcreate --size 512M --name swap2 HDD0 +mkswap -f -LSWAP1 /dev/mapper/SSD0-swap1 +mkswap -f -LSWAP2 /dev/mapper/HDD0-swap2 +lvcreate --size 200G --name home HDD0 +mkfs.ext4 -LHOME /dev/mapper/HDD0-home >/dev/null +lvcreate --size 40G --name srv SSD0 +mkfs.ext4 -LSRV /dev/mapper/SSD0-srv >/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SRV /srv ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# LVM2 déjà OK sur machines OVH +#apt install -y lvm2 +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Hard_RAID_StandardServer_EFI.sh b/OVH-SYS_Hard_RAID_StandardServer_EFI.sh new file mode 100644 index 0000000..0ad5f72 --- /dev/null +++ b/OVH-SYS_Hard_RAID_StandardServer_EFI.sh @@ -0,0 +1,192 @@ +#!/bin/bash + +# Le script suppose que : +# * il y a un (seul) ensemble RAID hard +# * le serveur boot en EFI +# * on va reconstruire toute la table de partitionnement (GPT) du serveur +# * le volume "rootfs" actuel est /dev/sda2 +# Enfin un fstab est généré, le raid est configuré, lvm2 est installé, +# grub et le kernel sont réinstallés. + +# Si vous utilisez un terminal exotique, émulez xterm +export TERM=xterm + +# Avant de commencer, consulter les disques pour vérifier les noms +lsblk + +# utilisez "set -e" si vous copiez/collez des bouts de scripts et souhaitez +# un arrêt en cas d'erreur. Si vous le faites dans le shell de votre session SSH +# elle s'interrompra ! +# set -e + +export LC_ALL=C + +swapoff -a +sleep 1 + +cd /mnt + +mkdir -p root_in_ram rootfs home var usr srv +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/sda2 /mnt/rootfs/ +sleep 1 + +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +sleep 1 + +umount /mnt/rootfs +sleep 1 + +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +sleep 1 +# BOOT EFI *mandatory* 100 Mo +parted -a minimal -s /dev/sda mkpart ESP fat32 0M 100M +sleep 1 +parted -s /dev/sda set 1 esp on +sleep 1 +parted -s /dev/sda set 1 boot on +sleep 1 +mkfs.vfat -F32 /dev/sda1 >/dev/null +sleep 1 +fatlabel /dev/sda1 EFI_SYSPART +sleep 1 +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 100M 600M +sleep 1 +parted -s /dev/sda set 2 boot on +sleep 1 +mkfs.ext4 -LBOOT /dev/sda2 >/dev/null +sleep 1 +# / +parted -a optimal -s /dev/sda mkpart primary ext4 600M 1600M +sleep 1 +mkfs.ext4 -LROOTFS /dev/sda3 >/dev/null +sleep 1 +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 1600M 7600M +sleep 1 +mkfs.ext4 -LUSR /dev/sda4 >/dev/null +sleep 1 +# swap1 +parted -a optimal -s /dev/sda mkpart primary ext4 7600M 8100M +sleep 1 +mkswap -f -LSWAP1 /dev/sda5 >/dev/null +sleep 1 +# swap2 +parted -a optimal -s /dev/sda mkpart primary ext4 8100M 8600M +sleep 1 +mkswap -f -LSWAP2 /dev/sda6 >/dev/null +sleep 1 +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 8600M 100% +sleep 1 + + +# Add LVM with a VG for all of the free space. +pvcreate /dev/sda7 +sleep 1 +vgcreate SSD0 /dev/sda7 +sleep 1 + +lvcreate --size 1G --name tmp SSD0 +sleep 1 +mkfs.ext4 -LTMP /dev/mapper/SSD0-tmp >/dev/null +sleep 1 + +lvcreate --size 10G --name var SSD0 +sleep 1 +mkfs.ext4 -LVAR /dev/mapper/SSD0-var >/dev/null +sleep 1 + +lvcreate -l 90%FREE --name home SSD0 +sleep 1 +mkfs.ext4 -LHOME /dev/mapper/SSD0-home >/dev/null +sleep 1 + +# Copy data from RAM. +mount -LROOTFS rootfs +mkdir -p rootfs/home && mount -LHOME rootfs/home +mkdir -p rootfs/var && mount -LVAR rootfs/var +mkdir -p rootfs/usr && mount -LUSR rootfs/usr +sleep 1 + +rsync -a root_in_ram/home/ rootfs/home/ +rsync -a root_in_ram/var/ rootfs/var/ +rsync -a root_in_ram/usr/ rootfs/usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +sleep 1 + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* +sleep 1 + +chroot /mnt/rootfs/ bash +sleep 1 + +export LC_ALL=C + +mkdir -p /boot && mount /boot +mkdir -p /boot/efi && mount /dev/sda1 /boot/efi +mount /tmp +chmod 1777 /tmp +sleep 1 + +# purge des paquets de Grub et du noyau, pour réinitialiser complètement les config +rm -rf /etc/default/grub.d +apt purge -y os-prober grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common +sleep 1 + +# purge des kernels +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +sleep 1 +# réinstallation des paquets +apt install -y lvm2 grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 +sleep 1 +apt purge -y os-prober + +# En cas d'erreur à l'install/config de Grub, il faut vérifier si le RAID est OK +# cat/proc/mdstat + +grub-install /dev/sda +sleep 1 +apt purge -y os-prober + +# Questions "update-grub": +# * Linux command line: +# * Linux default command line: quiet +# * Force extra installation to the EFI removable media path? Yes +# * Update NVRAM variables to automatically boot into Debian? Yes +update-grub +# dpkg-reconfigure --frontend=noninteractive grub-efi-amd64 +dpkg-reconfigure grub-efi-amd64 +sleep 1 + + +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Soft_RAID10_StandardServer_EFI.sh b/OVH-SYS_Soft_RAID10_StandardServer_EFI.sh new file mode 100644 index 0000000..85f2899 --- /dev/null +++ b/OVH-SYS_Soft_RAID10_StandardServer_EFI.sh @@ -0,0 +1,130 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/md3 /, /dev/md4 /home. +# / doit être sur /dev/md3. Sinon adapter le script ! +# Enfin un fstab est généré, le raid est configuré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md3 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Change LABEL for /boot, yeah 2 times, IDK why but the first time is not applied Oo +mdadm --stop /dev/md4 +mdadm --stop /dev/md3 +tune2fs -LBOOT /dev/md2 && tune2fs -LBOOT /dev/md2 +# Check if label is BOOT +wipefs /dev/md2 + +mdadm --stop /dev/md2 +parted -s /dev/sda rm 5 +parted -s /dev/sda rm 4 +parted -s /dev/sda rm 3 +# / +parted -a optimal -s /dev/sda mkpart primary ext4 1073M 2073M +sleep 2 +parted -s /dev/sda set 3 raid on +# /var +parted -a minimal -s /dev/sda mkpart primary ext4 2073M 12073M +sleep 2 +parted -s /dev/sda set 4 raid on +# /usr +parted -a minimal -s /dev/sda mkpart primary ext4 12073M 17073M +sleep 2 +parted -s /dev/sda set 5 raid on +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 17073M 100% +parted -s /dev/sda set 6 raid on +sleep 2 + +#Copy parts to sd{b,c,d,e,f} +for i in sd{b,c,d,e,f}; do + sgdisk -R=/dev/$i /dev/sda + sgdisk -G /dev/$i + partprobe /dev/$i +done + +mdadm --assemble /dev/md2 /dev/{sda,sdb,sdc,sdd,sde,sdf}2 + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {3,4,5}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=6 /dev/{sda,sdb,sdc,sdd,sde,sdf}${part} +done +# No need for LVM part to has metadata 0.90. +yes | mdadm --create /dev/md6 --level=raid10 --raid-devices=6 /dev/{sda,sdb,sdc,sdd,sde,sdf}6 + +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +mkfs.ext4 -LVAR /dev/md4 >/dev/null +mkfs.ext4 -LUSR /dev/md5 >/dev/null + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +vgcreate vg0 /dev/md6 +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +lvcreate --size 512M --name swap1 vg0 +lvcreate --size 512M --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 +lvcreate --extents 95%FREE --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /dev/sda1 /boot/efi +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# LVM2 déjà OK sur machines OVH +#apt install -y lvm2 +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf +apt install -y grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 dosfstools +update-grub2 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Soft_RAID1_BackupServer.sh b/OVH-SYS_Soft_RAID1_BackupServer.sh new file mode 100644 index 0000000..d83dd9d --- /dev/null +++ b/OVH-SYS_Soft_RAID1_BackupServer.sh @@ -0,0 +1,124 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/md2 / 20G, /dev/md3 /home +# / doit être sur /dev/md2. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md2 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +mdadm --stop /dev/md2 +mdadm --stop /dev/md3 +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +parted -s /dev/sda set 1 bios_grub on +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 200M +parted -s /dev/sda set 2 boot on +parted -s /dev/sda set 2 raid on +# / +parted -a optimal -s /dev/sda mkpart primary ext4 200M 1200M +parted -s /dev/sda set 3 raid on +# /var +parted -a optimal -s /dev/sda mkpart primary ext4 1200M 11200M +parted -s /dev/sda set 4 raid on +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 11200M 16200M +parted -s /dev/sda set 5 raid on +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 16200M 100% +parted -s /dev/sda set 6 raid on + +#Copy parts to sdb +sgdisk -R=/dev/sdb /dev/sda +sgdisk -G /dev/sdb +partprobe /dev/sda +partprobe /dev/sdb + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {2,3,4,5}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=2 /dev/{sda,sdb}${part} +done +# No need for LVM part to has metadata 0.90. +yes | mdadm --create /dev/md6 --level=raid1 --raid-devices=2 /dev/{sda,sdb}6 + +mkfs.ext4 -LBOOT /dev/md2 >/dev/null +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +mkfs.ext4 -LVAR /dev/md4 >/dev/null +mkfs.ext4 -LUSR /dev/md5 >/dev/null + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +vgcreate vg0 /dev/md6 +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +lvcreate --size 512M --name swap1 vg0 +lvcreate --size 512M --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 +lvcreate --size 10G --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null +lvcreate --extents 95%FREE --name backup vg0 +mkfs.btrfs -LBACKUP /dev/vg0/backup + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=BACKUP /backup btrfs defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf +# LVM2 déjà OK sur machines OVH +#apt install -y lvm2 +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Soft_RAID1_StandardServer_EFI_NVMe.sh b/OVH-SYS_Soft_RAID1_StandardServer_EFI_NVMe.sh new file mode 100644 index 0000000..7217c20 --- /dev/null +++ b/OVH-SYS_Soft_RAID1_StandardServer_EFI_NVMe.sh @@ -0,0 +1,241 @@ +#!/bin/bash + +# Script vérifié le 2020-04-03 par jlecour + +# Le script suppose que : +# * il y a 2 disques en RAID soft +# * le serveur boot en EFI +# * on va reconstruire toute la table de partitionnement (GPT) du serveur +# * le volume "rootfs" actuel est /dev/md2 +# Enfin un fstab est généré, le raid est configuré, lvm2 est installé, +# grub et le kernel sont réinstallés. + +# Avant de commencer, consulter les disques pour vérifier les noms +lsblk + +################################################################################ +# +# À partir de là, le script *peut* être copié/collé en un bloc +# Mais bien vérifier l'état au fur et à mesure + +# utilisez "set -e" si vous copiez/collez des bouts de scripts et souhaitez +# un arrêt en cas d'erreur. Si vous le faites dans le shell de votre session SSH +# elle s'interrompra ! +# set -e + +export LC_ALL=C + +swapoff -a +sleep 1 + +cd /mnt + +mkdir root_in_ram rootfs home var usr srv +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md2 /mnt/rootfs/ +sleep 1 + +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +sleep 1 + +umount /mnt/rootfs +sleep 1 + +# Stop arrays and destroys partitions +mdadm --stop /dev/md2 +sleep 1 + +# Create a GPT label. (Removes all parts). +parted -s /dev/nvme0n1 mklabel gpt +sleep 1 +# BOOT EFI *mandatory* 100 Mo +parted -a minimal -s /dev/nvme0n1 mkpart ESP fat32 0M 100M +sleep 1 +parted -s /dev/nvme0n1 set 1 esp on +sleep 1 +parted -s /dev/nvme0n1 set 1 boot on +sleep 1 +mkfs.vfat -F32 /dev/nvme0n1p1 >/dev/null +sleep 1 +fatlabel /dev/nvme0n1p1 EFI_SYSPART +sleep 1 +# /boot +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 100M 600M +sleep 1 +parted -s /dev/nvme0n1 set 2 boot on +sleep 1 +parted -s /dev/nvme0n1 set 2 raid on +sleep 1 +# / +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 600M 1100M +sleep 1 +parted -s /dev/nvme0n1 set 3 raid on +sleep 1 +# /usr +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 1100M 7100M +sleep 1 +parted -s /dev/nvme0n1 set 4 raid on +sleep 1 +# swap +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 7100M 7600M +sleep 1 +# LVM +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 7600M 100% +sleep 1 +parted -s /dev/nvme0n1 set 6 raid on +sleep 1 + +# Copy partitions to second disk +sgdisk -R=/dev/nvme1n1 /dev/nvme0n1 +sleep 1 +sgdisk -G /dev/nvme1n1 +sleep 1 +partprobe /dev/nvme0n1 +sleep 1 +partprobe /dev/nvme1n1 +sleep 1 + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {2,3,4,6}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=2 /dev/{nvme0n1p,nvme1n1p}${part} +done +sleep 1 + +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +sleep 1 +mkfs.ext4 -LBOOT /dev/md2 >/dev/null +sleep 1 +mkfs.ext4 -LUSR /dev/md4 >/dev/null +sleep 1 +mkswap -f -LSWAP1 /dev/nvme0n1p5 +sleep 1 +mkswap -f -LSWAP2 /dev/nvme1n1p5 +sleep 1 + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +sleep 1 +vgcreate vg0 /dev/md6 +sleep 1 + +lvcreate --size 1G --name tmp vg0 +sleep 1 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +sleep 1 + +lvcreate --size 5G --name var vg0 +sleep 1 +mkfs.ext4 -LVAR /dev/mapper/vg0-var >/dev/null +sleep 1 + +lvcreate -l 98%FREE --name home vg0 +sleep 1 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null +sleep 1 + +# Copy data from RAM. +mount -LROOTFS rootfs +mkdir -p rootfs/home && mount -LHOME rootfs/home +mkdir -p rootfs/var && mount -LVAR rootfs/var +mkdir -p rootfs/usr && mount -LUSR rootfs/usr +sleep 1 + +rsync -a root_in_ram/home/ rootfs/home/ +rsync -a root_in_ram/var/ rootfs/var/ +rsync -a root_in_ram/usr/ rootfs/usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +sleep 1 + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 2 +LABEL=SWAP2 none swap sw 0 2 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* +sleep 1 + +chroot /mnt/rootfs/ bash +sleep 1 + +export LC_ALL=C + +mkdir -p /boot && mount /boot +mkdir -p /boot/efi && mount /dev/nvme0n1p1 /boot/efi +mount /tmp +chmod 1777 /tmp +sleep 1 + + +# apt install -y debconf-utils apt-utils +# sleep 1 +# cat </tmp/grub-selections +# grub-efi-amd64 grub2/force_efi_extra_removable boolean true +# grub-efi-amd64 grub2/linux_cmdline_default string quiet +# grub-efi-amd64 grub2/update_nvram boolean true +# grub-efi-amd64 grub2/linux_cmdline string +# grub-pc grub-pc/postrm_purge_boot_grub boolean true +# EOT +# sleep 1 +# debconf-set-selections /tmp/grub-selections +# sleep 1 +# dpkg-reconfigure --frontend=noninteractive grub-pc +# sleep 1 + +# purge des paquets de Grub et du noyau, pour réinitialiser complètement les config +rm -rf /etc/default/grub.d +apt purge -y os-prober grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common +sleep 1 + +# purge des kernels +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +sleep 1 +# réinstallation des paquets +apt install -y lvm2 grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 +sleep 1 +apt purge -y os-prober + +# En cas d'erreur à l'install/config de Grub, il faut vérifier si le RAID est OK +# cat/proc/mdstat + +grub-install /dev/nvme0n1 +sleep 1 +grub-install /dev/nvme1n1 +sleep 1 +apt purge -y os-prober + +# Questions "update-grub": +# * Linux command line: +# * Linux default command line: quiet +# * Force extra installation to the EFI removable media path? Yes +# * Update NVRAM variables to automatically boot into Debian? Yes +update-grub +# dpkg-reconfigure --frontend=noninteractive grub-efi-amd64 +dpkg-reconfigure grub-efi-amd64 +sleep 1 + +# paquets utiles pour evolixisation par Ansible +apt install -y sudo python python-apt +sleep 1 + +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Soft_RAID50_BackupServer.sh b/OVH-SYS_Soft_RAID50_BackupServer.sh new file mode 100644 index 0000000..e01ec84 --- /dev/null +++ b/OVH-SYS_Soft_RAID50_BackupServer.sh @@ -0,0 +1,123 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o nounset +set -x + +# Le script suppose que / est sur /boot est sur /dev/md2, / est sur +# /dev/md3 et que /home est sur /dev/md4 +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel +# sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir -p root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md3 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Change LABEL for /boot, yeah 2 times, IDK why but the first time is not applied Oo +mdadm --stop /dev/md4 +mdadm --stop /dev/md3 +tune2fs -LBOOT /dev/md2 && tune2fs -LBOOT /dev/md2 +# Check if label is BOOT +wipefs /dev/md2 + + +mdadm --stop /dev/md2 +parted -s /dev/sda rm 5 +parted -s /dev/sda rm 4 +parted -s /dev/sda rm 3 +# / +parted -a optimal -s /dev/sda mkpart primary ext4 1073M 2073M +sleep 2 +parted -s /dev/sda set 3 raid on +# /var +parted -a minimal -s /dev/sda mkpart primary ext4 2073M 12073M +sleep 2 +parted -s /dev/sda set 4 raid on +# /usr +parted -a minimal -s /dev/sda mkpart primary ext4 12073M 17073M +sleep 2 +parted -s /dev/sda set 5 raid on +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 17073M 100% +parted -s /dev/sda set 6 raid on +sleep 2 + +partprobe /dev/sda + +for disk in {b,c,d,e,f}; do + sgdisk -R=/dev/sd${disk} /dev/sda + sgdisk -G /dev/sd${disk} + partprobe /dev/sd${disk} +done + +mdadm --assemble /dev/md2 /dev/{sda,sdb,sdc,sdd,sde,sdf}2 + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {3,4,5}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=6 /dev/{sda,sdb,sdc,sdd,sde,sdf}${part} +done + +# No need for LVM part to have metadata 0.90. +mdadm --create /dev/md/b6 --level=5 --raid-devices=3 /dev/sd{a,b,c}6 +mdadm --create /dev/md/c6 --level=5 --raid-devices=3 /dev/sd{d,e,f}6 +mdadm --create /dev/md/a6 --level=0 --raid-devices=2 /dev/md/b6 /dev/md/c6 + +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +mkfs.ext4 -LVAR /dev/md4 >/dev/null +mkfs.ext4 -LUSR /dev/md5 >/dev/null + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md125 +vgcreate vg0 /dev/md125 +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +lvcreate --size 512M --name swap1 vg0 +lvcreate --size 512M --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 +lvcreate --size 10G --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null +lvcreate --extents 95%FREE --name backup vg0 +mkfs.btrfs -LBACKUP /dev/vg0/backup + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +#LABEL=BACKUP /backup btrfs defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +# Chroot and install lvm2 + reconfigure grub-pc +echo "Evolix partitioning done... Follow instrutions in projet6140(8) then reboot!" diff --git a/OVH-SYS_Soft_RAID5_StandardServer_EFI_NVMe.sh b/OVH-SYS_Soft_RAID5_StandardServer_EFI_NVMe.sh new file mode 100644 index 0000000..fd010a8 --- /dev/null +++ b/OVH-SYS_Soft_RAID5_StandardServer_EFI_NVMe.sh @@ -0,0 +1,253 @@ +#!/bin/bash + +# Script vérifié le 2020-03-19 par jlecour + +# Le script suppose que : +# * il y a 3 disques en RAID soft +# * le serveur boot en EFI +# * on va reconstruire toute la table de partitionnement (GPT) du serveur +# * le volume "rootfs" actuel est /dev/md2 +# Enfin un fstab est généré, le raid est configuré, lvm2 est installé, +# grub et le kernel sont réinstallés. + +# Avant de commencer, consulter les disques pour vérifier les noms +lsblk + +################################################################################ +# +# À partir de là, le script *peut* être copié/collé en un bloc +# Mais bien vérifier l'état au fur et à mesure + +set -e + +export LC_ALL=C + +swapoff -a +sleep 1 + +cd /mnt + +mkdir root_in_ram rootfs home var usr srv +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md2 /mnt/rootfs/ +sleep 1 + +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +sleep 1 + +umount /mnt/rootfs +sleep 1 + +# Stop arrays and destroys partitions +mdadm --stop /dev/md2 +sleep 1 + +# Create a GPT label. (Removes all parts). +parted -s /dev/nvme0n1 mklabel gpt +sleep 1 +# BOOT EFI *mandatory* 100 Mo +parted -a minimal -s /dev/nvme0n1 mkpart ESP fat32 0M 100M +sleep 1 +parted -s /dev/nvme0n1 set 1 esp on +sleep 1 +parted -s /dev/nvme0n1 set 1 boot on +sleep 1 +mkfs.vfat -F32 /dev/nvme0n1p1 >/dev/null +sleep 1 +fatlabel /dev/nvme0n1p1 EFI_SYSPART +sleep 1 +# /boot +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 100M 600M +sleep 1 +parted -s /dev/nvme0n1 set 2 boot on +sleep 1 +parted -s /dev/nvme0n1 set 2 raid on +sleep 1 +# / +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 600M 1100M +sleep 1 +parted -s /dev/nvme0n1 set 3 raid on +sleep 1 +# /usr +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 1100M 7100M +sleep 1 +parted -s /dev/nvme0n1 set 4 raid on +sleep 1 +# swap +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 7100M 7600M +sleep 1 +# LVM +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 7600M 100% +sleep 1 +parted -s /dev/nvme0n1 set 6 raid on +sleep 1 + +# Copy partitions to secund disk +sgdisk -R=/dev/nvme1n1 /dev/nvme0n1 +sleep 1 +sgdisk -G /dev/nvme1n1 +sleep 1 +partprobe /dev/nvme0n1 +sleep 1 +partprobe /dev/nvme1n1 +sleep 1 + +# Copy partitions to third disk +sgdisk -R=/dev/nvme2n1 /dev/nvme0n1 +sleep 1 +sgdisk -G /dev/nvme2n1 +sleep 1 +partprobe /dev/nvme0n1 +sleep 1 +partprobe /dev/nvme2n1 +sleep 1 + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {2,3,4,6}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid5 --raid-devices=3 /dev/{nvme0n1p,nvme1n1p,nvme2n1p}${part} +done +sleep 1 + +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +sleep 1 +mkfs.ext4 -LBOOT /dev/md2 >/dev/null +sleep 1 +mkfs.ext4 -LUSR /dev/md4 >/dev/null +sleep 1 +mkswap -f -LSWAP1 /dev/nvme0n1p5 +sleep 1 +mkswap -f -LSWAP2 /dev/nvme1n1p5 +sleep 1 +mkswap -f -LSWAP3 /dev/nvme2n1p5 +sleep 1 + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +sleep 1 +vgcreate vg0 /dev/md6 +sleep 1 + +lvcreate --size 1G --name tmp vg0 +sleep 1 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +sleep 1 + +lvcreate --size 5G --name var vg0 +sleep 1 +mkfs.ext4 -LVAR /dev/mapper/vg0-var >/dev/null +sleep 1 + +lvcreate -l 98%FREE --name home vg0 +sleep 1 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null +sleep 1 + +# Copy data from RAM. +mount -LROOTFS rootfs +mkdir -p rootfs/home && mount -LHOME rootfs/home +mkdir -p rootfs/var && mount -LVAR rootfs/var +mkdir -p rootfs/usr && mount -LUSR rootfs/usr +sleep 1 + +rsync -a root_in_ram/home/ rootfs/home/ +rsync -a root_in_ram/var/ rootfs/var/ +rsync -a root_in_ram/usr/ rootfs/usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +sleep 1 + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 2 +LABEL=SWAP2 none swap sw 0 2 +LABEL=SWAP3 none swap sw 0 2 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* +sleep 1 + +chroot /mnt/rootfs/ bash +sleep 1 + +export LC_ALL=C + +mkdir -p /boot && mount /boot +mkdir -p /boot/efi && mount /dev/nvme0n1p1 /boot/efi +mount /tmp +chmod 1777 /tmp +sleep 1 + + +# apt install -y debconf-utils apt-utils +# sleep 1 +# cat </tmp/grub-selections +# grub-efi-amd64 grub2/force_efi_extra_removable boolean true +# grub-efi-amd64 grub2/linux_cmdline_default string quiet +# grub-efi-amd64 grub2/update_nvram boolean true +# grub-efi-amd64 grub2/linux_cmdline string +# grub-pc grub-pc/postrm_purge_boot_grub boolean true +# EOT +# sleep 1 +# debconf-set-selections /tmp/grub-selections +# sleep 1 +# dpkg-reconfigure --frontend=noninteractive grub-pc +# sleep 1 + +# purge des paquets de Grub et du noyau, pour réinitialiser complètement les config +rm -rf /etc/default/grub.d +apt purge -y os-prober grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common +sleep 1 + +# purge des kernels +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +sleep 1 +# réinstallation des paquets +apt install -y lvm2 grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 +sleep 1 +apt purge -y os-prober + +# En cas d'erreur à l'install/config de Grub, il faut vérifier si le RAID est OK +# cat/proc/mdstat + +grub-install /dev/nvme0n1 +sleep 1 +grub-install /dev/nvme1n1 +sleep 1 +grub-install /dev/nvme2n1 +sleep 1 + +# Questions "update-grub": +# * Linux command line: +# * Linux default command line: quiet +# * Force extra installation to the EFI removable media path? Yes +# * Update NVRAM variables to automatically boot into Debian? Yes +update-grub +# dpkg-reconfigure --frontend=noninteractive grub-efi-amd64 +dpkg-reconfigure grub-efi-amd64 + +sleep 1 + +# paquets utiles pour evolixisation par Ansible +apt install -y sudo python python-apt +sleep 1 + +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Soft_RAID_StandardServer_EFI.sh b/OVH-SYS_Soft_RAID_StandardServer_EFI.sh new file mode 100644 index 0000000..cc58dd9 --- /dev/null +++ b/OVH-SYS_Soft_RAID_StandardServer_EFI.sh @@ -0,0 +1,165 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/md3 /, /dev/md4 /home. +# / doit être sur /dev/md3. Sinon adapter le script ! +# Enfin un fstab est généré, le raid est configuré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C + +swapoff -a + +cd /mnt + +mkdir root_in_ram rootfs home var usr log + +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md3 /mnt/rootfs/ + +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ + +umount /mnt/rootfs + +# Change LABEL for /boot, yeah 2 times, IDK why but the first time is not applied Oo +mdadm --stop /dev/md4 +mdadm --stop /dev/md3 + +tune2fs -LBOOT /dev/md2 && tune2fs -LBOOT /dev/md2 + +parted -s /dev/sda rm 5 +parted -s /dev/sda rm 4 +parted -s /dev/sda rm 3 +# / +parted -a optimal -s /dev/sda mkpart primary ext4 1073M 2073M +sleep 2 +parted -s /dev/sda set 3 raid on +# /var +parted -a minimal -s /dev/sda mkpart primary ext4 2073M 12073M +sleep 2 +parted -s /dev/sda set 4 raid on +# /usr +parted -a minimal -s /dev/sda mkpart primary ext4 12073M 17073M +sleep 2 +parted -s /dev/sda set 5 raid on +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 17073M 100% +parted -s /dev/sda set 6 raid on +sleep 2 + +parted -s /dev/sdb rm 5 +parted -s /dev/sdb rm 4 +parted -s /dev/sdb rm 3 +# / +parted -a optimal -s /dev/sdb mkpart primary ext4 1073M 2073M +sleep 2 +parted -s /dev/sdb set 3 raid on +# /var +parted -a minimal -s /dev/sdb mkpart primary ext4 2073M 12073M +sleep 2 +parted -s /dev/sdb set 4 raid on +# /usr +parted -a minimal -s /dev/sdb mkpart primary ext4 12073M 17073M +sleep 2 +parted -s /dev/sdb set 5 raid on +# LVM +parted -a minimal -s /dev/sdb mkpart primary ext4 17073M 100% +parted -s /dev/sdb set 6 raid on +sleep 2 + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {3,4,5}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=2 /dev/{sda,sdb}${part} +done +# No need for LVM part to has metadata 0.90. +yes | mdadm --create /dev/md6 --level=raid1 --raid-devices=2 /dev/{sda,sdb}6 + +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +mkfs.ext4 -LVAR /dev/md4 >/dev/null +mkfs.ext4 -LUSR /dev/md5 >/dev/null + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +vgcreate vg0 /dev/md6 + +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null + +lvcreate --size 512M --name swap1 vg0 +lvcreate --size 512M --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 + +lvcreate --size 20G --name log vg0 +mkfs.ext4 -LLOG /dev/mapper/vg0-log >/dev/null + +lvcreate --extents 95%FREE --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mkdir var/log +mount -LLOG var/log +mount -LUSR usr + +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ + +umount home var/log var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=LOG /var/log ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* + +chroot /mnt/rootfs/ bash + +export LC_ALL=C + +mount /boot +mount /dev/sda1 /boot/efi +mount /usr +mount /var +mount /tmp + +chmod 1777 /tmp + +apt purge -y grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done + +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf + +apt install -y lvm2 grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 dosfstools + +update-grub2 + +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/OVH-SYS_Soft_RAID_StandardServer_EFI_NVMe.sh b/OVH-SYS_Soft_RAID_StandardServer_EFI_NVMe.sh new file mode 100644 index 0000000..4545852 --- /dev/null +++ b/OVH-SYS_Soft_RAID_StandardServer_EFI_NVMe.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/md3 /, /dev/md4 /home. +# / doit être sur /dev/md3. Sinon adapter le script ! +# Enfin un fstab est généré, le raid est configuré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr srv +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md3 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Stop arrays and destroys partitions +mdadm --stop /dev/md4 && wipefs -a /dev/nvme0n1p4 && wipefs -a /dev/nvme1n1p4 +mdadm --stop /dev/md3 && wipefs -a /dev/nvme0n1p3 && wipefs -a /dev/nvme1n1p3 +# Change LABEL for /boot, yeah 2 times, IDK why but the first time is not applied Oo +tune2fs -LBOOT /dev/md2 && sleep 5 && tune2fs -LBOOT /dev/md2 +parted -s /dev/nvme0n1 rm 5 +parted -s /dev/nvme0n1 rm 4 +parted -s /dev/nvme0n1 rm 3 +# / +parted -a optimal -s /dev/nvme0n1 mkpart primary ext4 1073M 2073M +sleep 2 +parted -s /dev/nvme0n1 set 3 raid on +# /var +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 2073M 12073M +sleep 2 +parted -s /dev/nvme0n1 set 4 raid on +# /usr +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 12073M 17073M +sleep 2 +parted -s /dev/nvme0n1 set 5 raid on +# LVM +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 17073M 100% +parted -s /dev/nvme0n1 set 6 raid on +sleep 2 + +#Copy parts to sdb +sgdisk -R=/dev/nvme1n1 /dev/nvme0n1 +sgdisk -G /dev/nvme1n1 +partprobe /dev/nvme0n1 +partprobe /dev/nvme1n1 + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {3,4,5}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=2 /dev/{nvme0n1p,nvme1n1p}${part} +done +# No need for LVM part to has metadata 0.90. +yes | mdadm --create /dev/md6 --level=raid1 --raid-devices=2 /dev/{nvme0n1p,nvme1n1p}6 + +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +mkfs.ext4 -LVAR /dev/md4 >/dev/null +mkfs.ext4 -LUSR /dev/md5 >/dev/null + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +vgcreate vg0 /dev/md6 +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +lvcreate --size 512M --name swap1 vg0 +lvcreate --size 512M --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 +lvcreate --size 20G --name srv vg0 +mkfs.ext4 -LSRV /dev/mapper/vg0-srv >/dev/null +lvcreate --size 100G --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=EFI_SYSPART /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SRV /srv ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /dev/nvme0n1p1 /boot/efi +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub-pc grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# LVM2 déjà OK sur machines OVH +#apt install -y lvm2 +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf +apt install -y grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 dosfstools +update-grub2 +test -f /boot/grub/grub.cfg || echo "Uh? update-grub2 did not create grub.cfg... You need to check the issue!" +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/Online_Hard_RAID_KVMServer.sh b/Online_Hard_RAID_KVMServer.sh new file mode 100755 index 0000000..7fcbd24 --- /dev/null +++ b/Online_Hard_RAID_KVMServer.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre dedibox avec le partionnement par défaut. +# /boot sda1 2OOM, / sda2, swap 1G sda3. +# / doit être sur sda2. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +# Dirty hack for rescue Ubuntu 16.04 +touch /boot/vmlinuz-pouet +touch /boot/initrd.img-pouet +apt install lvm2 + +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/sda2 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +parted -s /dev/sda set 1 bios_grub on +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 200M +parted -s /dev/sda set 2 boot on +mkfs.ext4 -LBOOT /dev/sda2 1>/dev/null +# / +parted -a optimal -s /dev/sda mkpart primary ext4 200M 1200M +mkfs.ext4 -LROOTFS /dev/sda3 1>/dev/null +# /var +parted -a optimal -s /dev/sda mkpart primary ext4 1200M 11200M +mkfs.ext4 -LVAR /dev/sda4 1>/dev/null +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 11200M 16200M +mkfs.ext4 -LUSR /dev/sda5 1>/dev/null +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 16200M 100% +parted -s /dev/sda set 6 lvm on +# Add LVM with a VG for all of the free space. +pvcreate /dev/sda6 +vgcreate vg0 /dev/sda6 +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp 1>/dev/null +lvcreate --size 10G --name swap1 vg0 +lvcreate --size 10G --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 +lvcreate --size 20G --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home 1>/dev/null + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +apt install -y lvm2 +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/Online_Hard_RAID_StandardServer.sh b/Online_Hard_RAID_StandardServer.sh new file mode 100644 index 0000000..987b6a4 --- /dev/null +++ b/Online_Hard_RAID_StandardServer.sh @@ -0,0 +1,158 @@ +#!/bin/bash + +# Ce script est une adaptation par jlecour du script de bserie +# Voici les adaptations : +# - /boot fait 500M +# - pas de LVM +# - on n'installe que le paquet virtuel linux-image-amd64 (pas le paquet réel) + +echo "ce script ne doit pas être joué automatiquement" +echo "les commandes sont à jouer manuellement, par copier/coller" +exit 1 + +# Le script suppose que vous avez installé votre dedibox avec le partionnement par défaut. +# /boot sda1 2OOM, / sda2 2G, swap 1G sda3. +# / doit être sur sda2. Sinon adapter le script ! +# Enfin un fstab est généré, grub et le kernel sont réinstallés. + +ROOT_PART=/dev/sda2 + +export LC_ALL=C +# Dirty hack for rescue Ubuntu 16.04 +touch /boot/vmlinuz-pouet +touch /boot/initrd.img-pouet + +# disable swap +swapoff -a + +cd /mnt + +# mount / +mkdir root_in_ram rootfs home var usr log +mount $ROOT_PART /mnt/rootfs/ + +# copy all the filesystem in ram +mount -t tmpfs none /mnt/root_in_ram -o size=90% +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ + +# unount rootfs to recreate partitions +umount /mnt/rootfs + +# NOTE: sleep 1 second between each command +# to be able to copy/paste the whole bloc + +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +sleep 1 +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +sleep 1 +parted -s /dev/sda set 1 bios_grub on +sleep 1 +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 500M +sleep 1 +parted -s /dev/sda set 2 boot on +sleep 1 +mkfs.ext4 -LBOOT /dev/sda2 1>/dev/null +sleep 1 +# / +parted -a minimal -s /dev/sda mkpart primary ext4 500M 1500M +sleep 1 +mkfs.ext4 -LROOTFS /dev/sda3 1>/dev/null +sleep 1 +# /var +parted -a minimal -s /dev/sda mkpart primary ext4 1500M 11500M +sleep 1 +mkfs.ext4 -LVAR /dev/sda4 1>/dev/null +sleep 1 +# /usr +parted -a minimal -s /dev/sda mkpart primary ext4 11500M 16500M +sleep 1 +mkfs.ext4 -LUSR /dev/sda5 1>/dev/null +sleep 1 +# /tmp +parted -a minimal -s /dev/sda mkpart primary ext4 16500M 17500M +sleep 1 +mkfs.ext4 -LTMP /dev/sda6 1>/dev/null +sleep 1 +# swap1 +parted -a minimal -s /dev/sda mkpart primary linux-swap 17500M 18000M +sleep 1 +mkswap -f -LSWAP1 /dev/sda7 1>/dev/null +sleep 1 +# swap2 +parted -a minimal -s /dev/sda mkpart primary linux-swap 18000M 18500M +sleep 1 +mkswap -f -LSWAP2 /dev/sda8 1>/dev/null +sleep 1 +# /home +parted -a minimal -s /dev/sda mkpart primary ext4 18500M 100% +sleep 1 +mkfs.ext4 -LHOME /dev/sda9 1>/dev/null +sleep 1 + +# mount partitions +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr + +# Copy data from RAM. +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ + +umount home var usr + +# Generate fstab. +cat < rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* + +chroot /mnt/rootfs/ bash + +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp + +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 +apt install -y sudo python python-apt + +# ajouter l'utilisateur dans le groupe sudo +# ça facilite le passage d'Ansible (sans root) +usermod -a -G sudo jlecour + +# change root password +passwd +# permit root login via SSH with password +sed -i 's/without-password/yes/' /etc/ssh/sshd_config + +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/Online_Soft_RAID1_BackupServer.sh b/Online_Soft_RAID1_BackupServer.sh new file mode 100644 index 0000000..fc16fe0 --- /dev/null +++ b/Online_Soft_RAID1_BackupServer.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# Le script suppose que vous avez installé votre serveur avec le partionnement par défaut. +# /dev/md126 / 20G, /dev/md125 /data +# / doit être sur /dev/md126. Sinon adapter le script ! +# Enfin un fstab est généré, lvm2 est installé, grub et le kernel sont réinstallés. + +export LC_ALL=C +swapoff -a +cd /mnt +mkdir root_in_ram rootfs home var usr log +mount -t tmpfs none /mnt/root_in_ram -o size=90% +mount /dev/md126 /mnt/rootfs/ +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ +umount /mnt/rootfs +mdadm --stop /dev/md{125..127} +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +parted -s /dev/sda set 1 bios_grub on +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 200M +parted -s /dev/sda set 2 boot on +parted -s /dev/sda set 2 raid on +# / +parted -a optimal -s /dev/sda mkpart primary ext4 200M 1200M +parted -s /dev/sda set 3 raid on +# /var +parted -a optimal -s /dev/sda mkpart primary ext4 1200M 11200M +parted -s /dev/sda set 4 raid on +# /usr +parted -a optimal -s /dev/sda mkpart primary ext4 11200M 16200M +parted -s /dev/sda set 5 raid on +# LVM +parted -a minimal -s /dev/sda mkpart primary ext4 16200M 100% +parted -s /dev/sda set 6 raid on + +#Copy parts to sdb +sgdisk -R=/dev/sdb /dev/sda +sgdisk -G /dev/sdb +partprobe /dev/sda +partprobe /dev/sdb + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {2,3,4,5}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=2 /dev/{sda,sdb}${part} +done +# No need for LVM part to has metadata 0.90. +yes | mdadm --create /dev/md6 --level=raid1 --raid-devices=2 /dev/{sda,sdb}6 + +mkfs.ext4 -LBOOT /dev/md2 >/dev/null +mkfs.ext4 -LROOTFS /dev/md3 >/dev/null +mkfs.ext4 -LVAR /dev/md4 >/dev/null +mkfs.ext4 -LUSR /dev/md5 >/dev/null + +# Add LVM with a VG for all of the free space. +pvcreate /dev/md6 +vgcreate vg0 /dev/md6 +lvcreate --size 1G --name tmp vg0 +mkfs.ext4 -LTMP /dev/mapper/vg0-tmp >/dev/null +lvcreate --size 512M --name swap1 vg0 +lvcreate --size 512M --name swap2 vg0 +mkswap -f -LSWAP1 /dev/mapper/vg0-swap1 +mkswap -f -LSWAP2 /dev/mapper/vg0-swap2 +lvcreate --size 10G --name home vg0 +mkfs.ext4 -LHOME /dev/mapper/vg0-home >/dev/null +lvcreate --extents 95%FREE --name backup_crypted vg0 +cryptsetup luksFormat /dev/vg0/backup_crypted +cryptsetup open --type luks /dev/vg0/backup_crypted backup +mkfs.btrfs -LBACKUP /dev/mapper/backup + +# Copy data from RAM. +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ +umount home var usr + +# Generate fstab. +cat <rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +# Need to open the LUKS container! +# Evolix password +# cryptsetup open --type luks /dev/vg0/backup_crypted backup +#/dev/mapper/backup /backup btrfs defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot and install lvm2 + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys +rm -rf /mnt/rootfs/boot/* +chroot /mnt/rootfs/ bash +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-4.9.0-3-amd64 linux-image-amd64 cryptsetup lvm2 +passwd +sed -i 's/without-password/yes/' /etc/ssh/sshd_config +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/Online_Soft_RAID5_NVMEServer.sh b/Online_Soft_RAID5_NVMEServer.sh new file mode 100644 index 0000000..05cf483 --- /dev/null +++ b/Online_Soft_RAID5_NVMEServer.sh @@ -0,0 +1,199 @@ +#!/bin/bash + +echo "ce script ne doit pas être joué automatiquement" +echo "les commandes sont à jouer manuellement, par copier/coller" +exit 1 + +# Le script suppose que vous avez installé votre dedibox avec le partionnement par défaut. +# UEFI p1 fait 6OOM, /boot p2 fait 600M, SWAP p3, / p4. +# / doit être sur md127. Sinon adapter le script ! +# Enfin un fstab est généré, grub et le kernel sont réinstallés. + +ROOT_PART=/dev/md127 +export LC_ALL=C +# disable swap +swapoff -a +cd /mnt + +# mount / +mkdir root_in_ram rootfs home var usr log +mount $ROOT_PART /mnt/rootfs/ + +# copy all the filesystem in ram +mount -t tmpfs none /mnt/root_in_ram -o size=90% +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ + +# unount rootfs to recreate partitions +umount /mnt/rootfs + +# stop soft raid +mdadm --stop /dev/md{125..127} +# Wipe all signatures +for i in /dev/nvme?n?p?; do wipefs -a $i; done + +# NOTE: sleep 1 second between each command +# to be able to copy/paste the whole bloc + +# Create a GPT label. (Removes all parts). +parted -s /dev/nvme0n1 mklabel gpt +sleep 1 +# boot,esp GPT/UEFI *mandatory* +parted -a minimal -s /dev/nvme0n1 mkpart primary 0M 600M +sleep 1 +parted -s /dev/nvme0n1 set 1 boot on +parted -s /dev/nvme0n1 set 1 esp on +sleep 1 +# /boot +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 600M 1200M +sleep 1 +parted -s /dev/nvme0n1 set 2 raid on +sleep 1 +# / +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 1200M 2200M +sleep 1 +parted -s /dev/nvme0n1 set 3 raid on +sleep 1 +# /var +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 2200M 12200M +sleep 1 +parted -s /dev/nvme0n1 set 4 raid on +sleep 1 +# /usr +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 12200M 17200M +sleep 1 +parted -s /dev/nvme0n1 set 5 raid on +sleep 1 +# /tmp +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 17200M 18200M +sleep 1 +parted -s /dev/nvme0n1 set 6 raid on +sleep 1 +# swap1 +parted -a minimal -s /dev/nvme0n1 mkpart primary linux-swap 18200M 19200M +sleep 1 +# /home +parted -a minimal -s /dev/nvme0n1 mkpart primary ext4 19200M 100% +sleep 1 +parted -s /dev/nvme0n1 set 8 raid on +sleep 1 + +#Copy parts to nvme1n1 +for i in /dev/nvme[123]n1; do + sgdisk -R=${i} /dev/nvme0n1 + sgdisk -G $i + partprobe $i +done + +# RAID1 for systems. +for part in {2,3,4,5,6}; do + mdadm --create /dev/md${part} --metadata=1.2 --level=raid1 --raid-devices=4 \ + /dev/{nvme0n1p${part},nvme1n1p${part},nvme2n1p${part},nvme3n1p${part}} +done + +# RAID5 for data. +mdadm --create /dev/md8 --metadata=1.2 --level=raid5 --raid-devices=4 \ + /dev/{nvme0n1p8,nvme1n1p8,nvme2n1p8,nvme3n1p8} + +# Make filesystems +l=1 +for i in /dev/nvme?n1p[7]; do + mkswap -f -LSWAP${l} $i 1>/dev/null + l=$((l+1)) +done + +apt install dosfstools +for i in /dev/nvme?n1p[1]; do + mkfs.vfat $i 1>/dev/null +done + +mkfs.ext4 -LBOOT /dev/md2 1>/dev/null +mkfs.ext4 -LROOTFS /dev/md3 1>/dev/null +mkfs.ext4 -LVAR /dev/md4 1>/dev/null +mkfs.ext4 -LUSR /dev/md5 1>/dev/null +mkfs.ext4 -LTMP /dev/md6 1>/dev/null +mkfs.ext4 -LHOME /dev/md9 1>/dev/null + +# mount partitions +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr + +# Copy data from RAM. +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ + +umount home var usr + +# Generate fstab. +cat < rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +/dev/nvme0n1p1 /boot/efi vfat defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +LABEL=SWAP3 none swap sw 0 0 +LABEL=SWAP4 none swap sw 0 0 +LABEL=SWAP5 none swap sw 0 0 +LABEL=SWAP6 none swap sw 0 0 +LABEL=SWAP7 none swap sw 0 0 +LABEL=SWAP8 none swap sw 0 0 +EOT + +# Chroot + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* + +chroot /mnt/rootfs/ bash + +export LC_ALL=C +mount /boot +mount /boot/efi +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp + +# generate RAID configuration +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf + +# purge des paquets de Grub et du noyau, pour réinitialiser complètement les config +apt purge -y grub-common grub-efi-amd64 grub-efi-amd64-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# réinstallation des paquets +# Note: bien installer Grub sur les 4 disques nvme[0123]n1 +apt install -y grub-common grub-efi grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-image-amd64 +grub-install /dev/nvme0n1 +update-grub +dpkg-reconfigure grub-efi-amd64 + + +# paquets utiles pour evolixisation par Ansible +apt install -y sudo python python-apt +# ajouter l'utilisateur dans le groupe sudo +# ça facilite le passage d'Ansible (sans root) +usermod -a -G sudo jlecour +passwd jlecour + +# change root password +passwd +# permit root login via SSH with password +sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config + +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/Online_Soft_RAIDx_StandardServer.sh b/Online_Soft_RAIDx_StandardServer.sh new file mode 100644 index 0000000..11c433d --- /dev/null +++ b/Online_Soft_RAIDx_StandardServer.sh @@ -0,0 +1,194 @@ +#!/bin/bash + +# Ce script est une adaptation par jlecour du script de bserie +# Voici les adaptations : +# - /boot fait 500M +# - pas de LVM +# - on n'installe que le paquet virtuel linux-image-amd64 (pas le paquet réel) + +echo "ce script ne doit pas être joué automatiquement" +echo "les commandes sont à jouer manuellement, par copier/coller" +exit 1 + +# Le script suppose que vous avez installé votre dedibox avec le partionnement par défaut. +# /boot sda1 2OOM, / sda2 2G, swap 1G sda3. +# / doit être sur sda2. Sinon adapter le script ! +# Enfin un fstab est généré, grub et le kernel sont réinstallés. + +ROOT_PART=/dev/md127 + +export LC_ALL=C +# Dirty hack for rescue Ubuntu 16.04 +touch /boot/vmlinuz-pouet +touch /boot/initrd.img-pouet + +# disable swap +swapoff -a + +cd /mnt + +# mount / +mkdir root_in_ram rootfs home var usr log +mount $ROOT_PART /mnt/rootfs/ + +# copy all the filesystem in ram +mount -t tmpfs none /mnt/root_in_ram -o size=90% +rsync -a /mnt/rootfs/ /mnt/root_in_ram/ + +# unount rootfs to recreate partitions +umount /mnt/rootfs + +# stop soft raid +mdadm --stop /dev/md{125..127} + +# NOTE : you need wipe all partition to be linked +# with /dev/md12* +# example : wipefs -a /dev/sda1 + +# NOTE: sleep 1 second between each command +# to be able to copy/paste the whole bloc + +# Create a GPT label. (Removes all parts). +parted -s /dev/sda mklabel gpt +sleep 1 +# bios_grub GPT *mandatory* +parted -a minimal -s /dev/sda mkpart primary 0M 1M +sleep 1 +parted -s /dev/sda set 1 bios_grub on +sleep 1 +# /boot +parted -a minimal -s /dev/sda mkpart primary ext4 1M 500M +sleep 1 +parted -s /dev/sda set 2 boot on +parted -s /dev/sda set 2 raid on +sleep 1 +# / +parted -a minimal -s /dev/sda mkpart primary ext4 500M 1500M +sleep 1 +parted -s /dev/sda set 3 raid on +sleep 1 +# /var +parted -a minimal -s /dev/sda mkpart primary ext4 1500M 11500M +sleep 1 +parted -s /dev/sda set 4 raid on +sleep 1 +# /usr +parted -a minimal -s /dev/sda mkpart primary ext4 11500M 16500M +sleep 1 +parted -s /dev/sda set 5 raid on +sleep 1 +# /tmp +parted -a minimal -s /dev/sda mkpart primary ext4 16500M 17500M +sleep 1 +parted -s /dev/sda set 6 raid on +sleep 1 +# swap1 +parted -a minimal -s /dev/sda mkpart primary linux-swap 17500M 18000M +sleep 1 +parted -s /dev/sda set 7 raid on +sleep 1 +# swap2 +parted -a minimal -s /dev/sda mkpart primary linux-swap 18000M 18500M +sleep 1 +parted -s /dev/sda set 8 raid on +sleep 1 +# /home +parted -a minimal -s /dev/sda mkpart primary ext4 18500M 100% +sleep 1 +parted -s /dev/sda set 9 raid on +sleep 1 + +#Copy parts to sdb +sgdisk -R=/dev/sdb /dev/sda +sgdisk -G /dev/sdb +partprobe /dev/sda +partprobe /dev/sdb + +# RAID1 for systems. +# Metadata 0.90 as some OVH kernel need it to boot. +for part in {2,3,4,5,6,7,8,9}; do + mdadm --create /dev/md${part} --metadata=0.90 --level=raid1 --raid-devices=2 /dev/{sda,sdb}${part} +done + +# Make filesystems +mkfs.ext4 -LBOOT /dev/md2 1>/dev/null +mkfs.ext4 -LROOTFS /dev/md3 1>/dev/null +mkfs.ext4 -LVAR /dev/md4 1>/dev/null +mkfs.ext4 -LUSR /dev/md5 1>/dev/null +mkfs.ext4 -LTMP /dev/md6 1>/dev/null +mkswap -f -LSWAP1 /dev/md7 1>/dev/null +mkswap -f -LSWAP2 /dev/md8 1>/dev/null +mkfs.ext4 -LHOME /dev/md9 1>/dev/null + +# mount partitions +mount -LROOTFS rootfs +mount -LHOME home +mount -LVAR var +mount -LUSR usr + +# Copy data from RAM. +rsync -a root_in_ram/home/ home/ +rsync -a root_in_ram/var/ var/ +rsync -a root_in_ram/usr/ usr/ +rsync -a \ + --exclude="home/**" \ + --exclude="var/**" \ + --exclude="usr/**" \ + root_in_ram/ rootfs/ + +umount home var usr + +# Generate fstab. +cat < rootfs/etc/fstab +LABEL=ROOTFS / ext4 errors=remount-ro 0 1 +LABEL=BOOT /boot ext4 defaults 0 2 +LABEL=HOME /home ext4 defaults 0 2 +LABEL=TMP /tmp ext4 defaults 0 2 +LABEL=USR /usr ext4 defaults 0 2 +LABEL=VAR /var ext4 defaults 0 2 +LABEL=SWAP1 none swap sw 0 0 +LABEL=SWAP2 none swap sw 0 0 +EOT + +# Chroot + reconfigure grub-pc +mount -t proc none /mnt/rootfs/proc +mount -o bind /dev /mnt/rootfs/dev +mount -o bind /dev/pts /mnt/rootfs/dev/pts +mount -t sysfs sys /mnt/rootfs/sys + +rm -rf /mnt/rootfs/boot/* + +chroot /mnt/rootfs/ bash + +export LC_ALL=C +mount /boot +mount /usr +mount /var +mount /tmp +chmod 1777 /tmp + +# generate RAID configuration +/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf + +# purge des paquets de Grub et du noyau, pour réinitialiser complètement les config +apt purge -y grub-common grub-pc grub-pc-bin grub2-common +for kernel_pkg in $(dpkg -l | grep linux-image | awk '{ print $2 }'); do apt purge -y $kernel_pkg; done +# réinstallation des paquets +# Note: bien installer Grub sur les 2 disques sda et sdb +apt install -y grub-common grub-pc grub-pc-bin grub2-common linux-image-amd64 + +# paquets utiles pour evolixisation par Ansible +apt install -y sudo python python-apt +# ajouter l'utilisateur dans le groupe sudo +# ça facilite le passage d'Ansible (sans root) +usermod -a -G sudo jlecour +passwd jlecour + +# change root password +passwd +# permit root login via SSH with password +sed -i 's/without-password/yes/' /etc/ssh/sshd_config + +exit + +echo "Evolix partitioning done... You can now reboot!" diff --git a/README.md b/README.md index e69de29..ee74b00 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,41 @@ +# Rescue Install + +A collection of scripts to remodel partitions on a freshly installed server (Online/Scaleway or OVH/SoYouStart). + +It includes many variants of boot types (BIOS or EFI) and RAID types (hard or soft). + +Those scripts and their main structure come from an original implementation by [Benoit Serie](https://gitea.evolix.org/bserie). + +## Usage + +You should first determine if the server is installed by Online/Scaleway or OVH/SoYouStart. +Then if it has soft RAID or hardware RAID capabilities. +And finaly if th eboot is BIOS or EFI. + +Boot your server in rescue mode. + +The scripts are not exactly meant to be executed from top to bottom in one go. +They are not smart and the slighest change can break you server. + +You should copy/past sections of the script and carefully look for errors in commands output. + +Some scripts tend to reuse some partitions (/boot and /boot/efi) but the more recent ones tend to rebuild everything. + +The scripts for soft RAID are easily adapted to various RAID configurations. + +The scripts for hard RAID are independent of the RAID configuration. The OS doesn't see the physical disks. + +## FAQ + +### Why sleep after nearly every command? + +Some commands are really fast but the kernel needs a moment to commit the changes. +By adding a second of sleep time between commands, we make sure that noone steps on anyone's toe. + +### Why remove os-prober? + +It messes with the Grub configuration. + +### Why does parted give errors about alignment? + +No idea! Please investigate and come back with improvments ;)