Installation/Cobbler
Introduction
Cobbler[1] est un serveur d'installation qui permet d'installer facilement et automatiquement des systèmes d'exploitations, virtualisés ou non via PXE.
Sur CentOS 7, les principales différences par rapport à une installation sur CentOS 6 sont:
- Pas de paquet <package>debmirror</package> officiellement disponible
- Disparition du daemon rsync
- Remplacement des commandes <app>iptables</app> par <app>firewalld</app>
Installation
Modification du service DHCP
Si le serveur DHCPd n'est pas la même machine que le serveur cobbler, il faut déclarer le serveur Cobbler sur le serveur DHCPd:
Fichier <path>/etc/dhcp/dhcpd.conf</path>
... allow booting; allow bootp; filename "pxelinux.0"; next-server 192.168.0.205; ...
On redémarre le service DHCPd
service dhcpd restart
Installation de cobbler
Sur un serveur fraichement installé en CentOS 7:
- Mise en place du nom d'hôte
hostnamectl set-hostname cobbler.home.net
- Redémarrage du serveur
- Installation du dépôt EPEL
rpm -Uvh http://mirror.ibcp.fr/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
- Installation des paquets
yum -y install cobbler pykickstart tftp
- Activation du service tftpd (xinetd)
sed -i -e '/disable/ s/yes/no/' /etc/xinetd.d/tftp
- Démarrage et activation des services concernés: httpd, xinetd et cobblerd
for service in xinetd httpd cobblerd ; do systemctl start $service ; systemctl enable $service ; done
Installation de debmirror
- Téléchargement du RPM noarch debmirror
- Installation
yum localinstall debmirror-2.14-2.el7.noarch.rpm
- Mise en commentaire des lignes suivantes dans le fichier <path>/etc/debmirror.conf</path>
#@dists="sid";
#@arches="i386";
Configuration
Firewall
- Open for HTTP
firewall-cmd --permanent --add-service=http
- Open for HTTPS
firewall-cmd --permanent --add-service=https
- Open for TFTP
firewall-cmd --permanent --add-service=tftp
- Open for Cobbler
firewall-cmd --permanent --add-port=25151/tcp
- Open for TFTP
firewall-cmd --permanent --add-port=69/tcp
- Reload firewall
firewall-cmd --reload
SELinux
Au niveau configuration, on va dans un premier temps s'occuper de SELinux[2].
setsebool -P httpd_can_network_connect true setsebool -P cobbler_can_network_connect true semanage fcontext -a -t public_content_t "/var/lib/tftpboot/.*" restorecon -Rv /var/lib/tftpboot
Cobbler
Puis dans le fichier de configuration <path>/etc/cobbler/settings</path>, on va:
- Définir un mot de passe crypté qui sera le mot de passe root pour les machines installées en PXE
- Modifier l'adresse IP du serveur cobbler.
On commence donc par créer le mot de passe crypté à l'aide d'openssl.
openssl passwd -1
On peut donc maintenant éditer le fichier de configuration du serveur cobbler: Fichier <path>/etc/cobbler/settings</path>
default_password_crypted: <mot-de-passe-crypté> next_server: 192.168.0.205 server: 192.168.0.205
On va maintenant télécharger les boot-loaders
cobbler get-loaders
Redémarrage du cobbler
systemctl restart cobblerd
Synchronisation
cobbler sync
Et vérification
cobbler check No configuration problems found. All systems go.
Cobbler est maintenant correctement configuré.
Ajout de distributions
- On monte l'image ISO du DVD
mount -t iso9660 -o loop,ro /downloads/CentOS-5.5-x86_64-core.iso /mnt/
- On l'importe dans cobbler
cobbler import --path=/mnt --name=CentOS-5-x86_64
Suppression de distributions
Pour supprimer une distribution:
- On supprime le(s) profile(s) qui nécessite la distribution
cobbler profile remove --name=CentOS-6-x86_64
- On supprime la distribution
cobbler distro remove --name=CentOS-6-x86_64
Francisation
Modification des fichiers kickstart par défaut.
Pour toutes les distributions (boot PXE rescue)
Modification du fichier <path>/var/lib/cobbler/kickstarts/pxerescue.ks</path>
lang fr_FR keyboard "fr-latin9"
Spécifiquement pour les distribution Debian/Ubuntu
Modification du fichier <path>/var/lib/cobbler/kickstarts/sample.seed</path>
d-i debian-installer/locale string fr_FR d-i keyboard-configuration/layoutcode string fr-latin9 d-i time/zone string Europe/Paris
Modification du fichier <path>/var/lib/cobbler/kickstarts/sample_old.seed</path>
d-i console-keymaps-at/keymap select fr-latin9 tzsetup-udeb time/zone select Europe/Paris
Spécifiquement pour les distribution Redhat/Centos/Fedora
Modification du fichier <path>/var/lib/cobbler/kickstarts/sample.ks</path>, du fichier <path>/var/lib/cobbler/kickstarts/sample_end.ks</path> et du fichier <path>/var/lib/cobbler/kickstarts/legacy.ks</path>
keyboard fr-latin9 lang fr_FR timezone --utc Europe/Paris
Snippets
Les snippets (ou extraits) de kickstart sont un moyen de réutiliser les blocs de code commun entre les fichiers kickstart.
Editer la taille des partitions avec les snippets
Par défaut, cobbler utilise tout l'espace du disque dur qu'il assigne à la partition /, on peut vouloir définir les partitions en fonction de la taille du disque. Pour cela, nous allons utiliser les snippets kickstart de cobbler.
Donc pour pouvoir définir la taille d'une ou plusieurs partitions
On créé un snippet: fichier <path>/var/lib/cobbler/snippets/partition_config</path>
part /boot --size=200 --recommended --asprimary
part pv.01 --size=1024 --grow
volgroup vg0 pv.01
logvol / --vgname=vg0 --name=lv0 --size=1024 --maxsize=3072 --grow
logvol /var --vgname=vg0 --name=lv1 --size=512 --maxsize=1024 --grow
logvol swap --vgname=vg0 --name=lv2 --size=1024 --maxsize=2048
Dans tous les fichiers kickstart (sample*.ks), on remplace la ligne
autopart
par
$SNIPPET('partition_config')
Mise à jour de la distribution
On créé un snippet: fichier <path>/var/lib/cobbler/snippets/yum_update</path>
# Update package
yum update -y
Dans tous les fichiers kickstart (sample*.ks), on insert la ligne suivante à la fin du fichier
$SNIPPET('yum_update')
Autorisation des connexions ssh par clés publiques
On créé un snippet: fichier <path>/var/lib/cobbler/snippets/ssh_public_keys</path>
# Public key to import
mkdir /root/.ssh
chmod 700 /root/.ssh
touch /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
# Didier
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCgXXO+1osvzeWottxs1HGLtycjR0Y/CnBH4Q0vvz0QTifw6d2Dkwmt7WhPU3kAeauGMJr295lfjCsIW57y
qhp7jFG64AHMD8bdBlLcxZiHffA0tDUXPobESfCqoymimr32ubE7HgoyKaw4TScL6DRbny+d6B+5mSFHCu/vJcJYOfoobdr5drWscvh0c7t3POxFT/MRS4rI17hbAQ
0QdF81jtKst9+kUD9bB0cJFPZ4GuVHD6re8vVWxm86IQ+1/kpIzXKWtFld3o7jKD21c3wDxu7o5eD2wf7eY+3hLHmYYX4lhwqnT1rKfyxmDLH38J8qzjuCiEVsD143
B1hwQiwJ didier@didier.b2pweb.com' >> /root/.ssh/authorized_keys
Dans tous les fichiers kickstart (sample*.ks), on insert la ligne suivante à la fin du fichier, ainsi que dans le fichier <path>/var/lib/cobbler/scripts/preseed_late_default</path> (debian)
$SNIPPET('ssh_public_keys')
Interface Web
On va maintenant installer l'interface web permettant l'administration de cobbler puis la configurer:
yum install cobbler-web
Il faut s'assurer que le fichier <path>/etc/cobbler/modules.conf</path> contienne bien les lignes suivantes:
[authentication] module = authn_configfile [authorization] module = authz_allowall
On créer le fichier de mot de passe <path>/etc/cobbler/users.digest</path> en mettant le login à cobbler et le mot de passe à cobbler
htdigest -c /etc/cobbler/users.digest "Cobbler" cobbler
On redémarre les services cobbler et apache
systemctl restart cobblerd systemctl restart httpd
On peut maintenant se rendre sur l'interface avec un navigateur avec l'URL https://<cobbler_addr>/cobbler_web
Trucs et astuces
Profils
Obtenir la liste des profils
cobbler profile list CentOS-5-i386 CentOS-5-x86_64 CentOS-5-xen-i386 CentOS-5-xen-x86_64 CentOS-6-i386 CentOS-6-x86_64 CentOS-7-x86_64
Obtenir le détail d'un profil
cobbler profile report --name=CentOS-7-x86_64
Name : CentOS-7-x86_64
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : CentOS-7-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/sample_end.ks
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <<inherit>>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Proxy :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : 1
Virt Bridge : virbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 8
Virt Path :
Virt RAM (MB) : 1024
Virt Type : kvm
Obtenir le fichier kickstart d'un profil
cobbler profile getks --name=CentOS-7-x86_64
Distributions
Obtenir la liste des distributions
cobbler distro list CentOS-5-i386 CentOS-5-x86_64 CentOS-5-xen-i386 CentOS-5-xen-x86_64 CentOS-6-i386 CentOS-6-x86_64 CentOS-7-x86_64
Obtenir la configuration d'une distribution
cobbler distro report --name=CentOS-7-x86_64
Name : CentOS-7-x86_64
Architecture : x86_64
TFTP Boot Files : {}
Breed : redhat
Comment :
Fetchable Files : {}
Initrd : /var/www/cobbler/ks_mirror/CentOS-7-x86_64/images/pxeboot/initrd.img
Kernel : /var/www/cobbler/ks_mirror/CentOS-7-x86_64/images/pxeboot/vmlinuz
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart Metadata : {'tree': 'http://@@http_server@@/cblr/links/CentOS-7-x86_64'}
Management Classes : []
OS Version : rhel7
Owners : ['admin']
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Template Files : {}
Kickstart
Valider les fichiers kickstart
cobbler validateks task started: 2014-10-30_100015_validateks task started (id=Kickstart Validation, time=Thu Oct 30 10:00:15 2014) ---------------------------- osversion: rhel5 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-i386 running: /usr/bin/ksvalidator -v "rhel5" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-i386" received on stdout: received on stderr: ---------------------------- osversion: rhel6 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-6-i386 running: /usr/bin/ksvalidator -v "rhel6" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-6-i386" received on stdout: received on stderr: ---------------------------- osversion: rhel5 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-xen-i386 running: /usr/bin/ksvalidator -v "rhel5" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-xen-i386" received on stdout: received on stderr: ---------------------------- osversion: rhel5 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-x86_64 running: /usr/bin/ksvalidator -v "rhel5" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-x86_64" received on stdout: received on stderr: ---------------------------- osversion: rhel5 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-xen-x86_64 running: /usr/bin/ksvalidator -v "rhel5" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-5-xen-x86_64" received on stdout: received on stderr: ---------------------------- osversion: rhel6 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-6-x86_64 running: /usr/bin/ksvalidator -v "rhel6" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-6-x86_64" received on stdout: received on stderr: ---------------------------- osversion: rhel7 checking url: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-7-x86_64 running: /usr/bin/ksvalidator -v "rhel7" "http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-7-x86_64" received on stdout: received on stderr: *** all kickstarts seem to be ok *** *** TASK COMPLETE ***
Trucs et astuces concernant Koan
Modifier les valeurs par défaut d'un profil concernant:
- la taille du disque virtuel
cobbler profile edit --name=CentOS-7-x86_64 --virt-file-size=8
- le nom de l'interface du bridge
cobbler profile edit --name=CentOS-7-x86_64 --virt-bridge=virbr0
- la RAM allouée
cobbler profile edit --name=CentOS-7-x86_64 --virt-ram=1024
- le nombre de CPU
cobbler profile edit --name=CentOS-7-x86_64 --virt-cpus=2
Koan
Il faut modifier la configuration de cobbler pour pouvoir l'utiliser avec kvm/qemu
- default_virt_bridge: virbr0
- default_virt_file_size: 8
- default_virt_ram: 1024
- default_virt_type: kvm
Koan permet l'installation de machine virtuelle. Koan signifie: kickstart over a network, on l'utilise donc sur un serveur de virtualisation afin de nous installer des machines virtuelles via cobbler.
koan --virt --profile=CentOS-6-x86_64 --server=192.168.0.205 --virt-name=test --virt-type=kvm \
--qemu-net-type=virtio --qemu-disk-type=virtio --virt-bridge=virbr0
- looking for Cobbler at http://192.168.0.205:80/cobbler_api
- reading URL: http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-7-x86_64
install_tree: http://192.168.0.205/cblr/links/CentOS-7-x86_64
- ['/usr/bin/virt-install', '--version']
1.0.1
- ['virt-install', '--version']
1.0.1
- ['virt-install', '--os-variant', 'list']
- ['qemu-img', 'create', '-f', 'raw', '/var/lib/libvirt/images//test-disk0', '8G']
Formatting '/var/lib/libvirt/images//test-disk0', fmt=raw size=8589934592
- warning: old virt-install detected, a lot of features will be disabled
- adding disk: /var/lib/libvirt/images//test-disk0 of size 8 (driver type=raw)
- ['virt-install', '--connect', 'qemu:///system', '--name', 'test', '--ram', '1024', '--vcpus', '1', '--vnc', '--accelerate',
'--location', 'http://192.168.0.205/cblr/links/CentOS-7-x86_64/',
'--extra-args=ks=http://192.168.0.205/cblr/svc/op/ks/profile/CentOS-7-x86_64 ksdevice=link kssendmac lang= text ',
'--arch', 'x86_64', '--os-variant', 'rhel7', '--disk', 'path=/var/lib/libvirt/images//test-disk0,size=8,bus=virtio',
'--network', 'bridge=virbr0', '--wait', '0', '--noautoconsole']
Début d'installation...
Récupération du fichier .treeinfo... | 1.9 kB 00:00:00 !!!
Récupération du fichier vmlinuz... | 9.4 MB 00:00:00 !!!
Récupération du fichier initrd.img... | 67 MB 00:00:00 !!!
Création du domaine... | 0 B 00:00:00
Installation du domaine encore en cours. Vous pouvez vous reconnecter à
la console pour terminer le processus d'installation.
