4 votes

Y a-t-il un moyen d'exécuter des scripts Kickstart sur un serveur préexistant ?

Nous provisionnons normalement des serveurs en utilisant des scripts kickstart (servis par Cobbler) lors de l'installation du système d'exploitation.

Mais nous allons recevoir un nouveau serveur d'un fournisseur d'accès Internet qui a déjà le système d'exploitation installé, et peut-être sans accès à la console à distance.

Y a-t-il un moyen de redémarrer un serveur linux (même système d'exploitation que celui que nous utilisons normalement) et de le forcer à se réinstaller en utilisant un script kickstart ?

4voto

dawud Points 14770

Vous pouvez essayer d'utiliser un serveur snake.

Une fois configuré, à la fois sur le serveur et sur la machine cliente, il fournira une interface curses pour sélectionner un fichier kickstart parmi d'autres options.

4voto

Aaron Copley Points 12225

Si vous avez une partition physique distincte pour copier votre support d'installation, vous pourriez le faire et modifier Grub pour Kickstart au démarrage.

install harddrive --partition=sdb2 --dir=/chemin/vers/le/support-d'installation

Ajouter à /etc/grub.conf:

title Réinstaller CentOS 6
    root(hd0,0)
    kernel /vmlinuz-kickstart ks=kickstart.cfg
    initrd /initrd-kickstart.img

Vous devrez modifier les valeurs ci-dessus (le cas échéant) pour votre environnement. Le Kernel et l'image ramdisk initiale peuvent être copiés à partir du support d'installation (généralement dans le répertoire ./isolinux.) Remarque: J'ai ajouté -kickstart aux noms de fichiers pour qu'ils se démarquent dans une liste de répertoires.

Enfin, définissez l'entrée Grub par défaut sur celle-ci et redémarrez. (Comptez les occurrences de title, en commençant par 0.)

Je ne peux pas assez souligner que vous devriez tester cela localement dans une VM VirtualBox ou similaire avant de l'essayer sur un système en colocation.

Pour plus d'informations:
Options Kickstart
Démarrage d'une installation Kickstart

1voto

Michael Hampton Points 232226

Vous pouvez faire l'installation vous-même si le fournisseur vous donne un accès distant au matériel de gestion hors bande du serveur (par exemple, IPMI, iLO, DRAC). Si vous n'obtenez pas un tel accès, ou si le serveur n'a même pas ce type de matériel, vous ne devriez probablement pas faire affaire avec eux et trouver un autre fournisseur.

1voto

voretaq7 Points 78924

Il n'y a pas de moyen que je connaisse pour faire un kickstart sur un serveur déjà installé (bien que je ne sois pas un expert CentOS/Redhat donc il est tout à fait possible que je ne sache pas de quoi je parle).

La solution de Michael Hampton fonctionne si vous disposez d'un KVM distant (avec support multimédia distant, et une bande passante décente), mais dans votre situation, je suggérerais de vous pencher sur le déploiement / la gestion de la configuration via Puppet, Chef, ou l'un des nombreux autres outils disponibles.
Les outils de gestion de la configuration/déploiement vous permettront de vous assurer que tous vos serveurs correspondent à une configuration standard indépendamment de leur état initial (donc si votre ISP vous fournit un système essentiellement inutilisable, vous pouvez le mettre en marche rapidement), et vous bénéficiez d'une gestion continue pour l'installation de mises à jour et similaires.

C'est un peu plus une solution à long terme et il y a définitivement une courbe d'apprentissage impliquée, mais cela vaut probablement la peine si vous allez gérer plusieurs machines à l'avenir.

1voto

user9517 Points 113163

J'ai récemment été invité à examiner la possibilité de le faire et dans le cadre de la recherche d'une solution, j'ai trouvé cette question-réponse.

Comme le dit Michael, l'utilisation de l'out-of-band est préférable mais ce n'est pas toujours disponible.

J'ai examiné le serveur snake que Dawud suggère. Ça fonctionne mais il n'est pas apprécié et il y a des erreurs dans sa documentation. Je ne recommanderais pas de l'utiliser.

J'ai demandé sur IRC #centos et ils m'ont dirigé vers installer à partir de grub. C'est similaire à la solution d'Aaron mais ça utilise des ressources réseau plutôt qu'une partition séparée. C'est ce que j'ai finalement mis en place. L'idée générale est

  • Télécharger le vmlinuz et initrd.img d'installation dans /boot

    • wget -N http://mirror.centos.org/centos/6.5/os/x86_64/isolinux/vmlinuz
    • wget -N http://mirror.centos.org/centos/6.5/os/x86_64/isolinux/initrd.img
  • Modifier /boot/grub/grub.conf et créer une entrée pour le nouveau noyau

    • title Réinstaller CentOS kernel /vmlinuz ro upgradeany ip=192.168.254.44 netmask=255.255.255.0 hostname=somehost.tld ks=http://server.tld/ks/kickstart.ks gateway=192.168.254.220 dns=8.8.8.8 headless vnc vncpassword=SomePassword initrd /initrd.img
  • Sur le serveur.tld, vous devrez avoir httpd servant un fichier kickstart configuré de manière appropriée, la chose importante ici étant la directive url

  • url --url http://mirror.centos.com/centos/6.5/os/x86_64

Cela provoque la copie des fichiers d'installation à partir du système distant nommé.

Cela ne fonctionne évidemment que si vous pouvez installer votre propre noyau donc par exemple cela ne fonctionnerait pas avec un droplet Digital Ocean.

Vous pouvez facilement mal configurer quelque chose en développant la solution donc je ne recommande pas de le faire sur un système qui n'a pas de méthode pour réinstaller facilement l'image des fournisseurs de services.

Depuis que j'ai réussi à le faire fonctionner, je n'ai rencontré aucun problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X