Bonjour à tous,
Je reviens vers vous pour un petit renseignement. Est-il possible de créer un script qui automatiserait l'installation de plusieurs paquets via la commande apt-get? Genre un script qui installerait apache2, php5 et mysql?
De plus toujours avec celui-ci, puis-je copier certains fichiers de confiG (pour en garder une trace en cas de bug) et remplacer ceux_ci par mes propres fichiers de config?
En gros, je cherche à accélérer l'installation d'un serveur LAMP.
Si tout cela est possible, pouvez-vous me donner une ébauche de script ou le gros de la structure que je tenterais d'adapter à ma situation?
Merci.
# Gestion de config ?
Posté par Rémi PALANCHER (site web personnel) . Évalué à 2.
Tu peux évidemment scripter tout cela avec n'importe quel langage de script (shell ou autre) mais il y a des outils spécialisés pour ce type d'opérations : les logiciels de gestion de config. Plusieurs examples : puppet, cfengine, ansible, salstack, etc…
Le ticket d'entrée est un peu plus lourd qu'un simple script mais au fur et à mesure qu'on ajoute des éléments à son infra, ça devient bien plus fiable et maintenable.
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1.
Merci pour cette réponse mais je pense que cette solution est un peu trop élaborée et trop complexe pour mon cas!!
En effet, ce que je cherche est de bien plus petite envergure^
Je cherche juste un script qui me permettrait de remonter mon serveur web rapidement, en cas de bug.
Je bosse sur des machines virtuels. Du coup, ce que je cherche c'est qu'en cas de dysfonctionnement de mon serveur, je puisse remonter un Debian(par exemple) depuis le panneau d'admin de mon hébergeur (quelques minutes), que j'y balance mon script pour avoir mon serveur web paramétrer et configurer selon mes besoins.
Ensuite, je balancerais les fichiers de mon site et hop le tour est joué et mon site internet est de nouveau OP…
[^] # Re: Gestion de config ?
Posté par ntimeu . Évalué à 4.
Vu que ce sont des paquets, il est peut-être possible de créer un "méta paquet" qui dépende de mysql, etc et qui par la suite applique tes fichiers de config (je n'ai fait ça qu'avec des RPMs, mais ça doit marcher pareil avec les .deb).
Après tu pourrais appliquer automatiquement ton paquet ? A moins que ça ne marche pas comme ça ?
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2.
Je ne suis pas convaiuncu qu'un paquet soit la bonne solution dans ce cas. A chaque modification de ligne de conf, il faudrait recréer un paquet. Si ça pourrait se faire, mais il faudrait décoreller la conf du paquet, et avoir un script permettant de récupérer celle-ci par une autre méthode. Celà dit, la création de paquet pour un débutant n'a rien de trivial, je ne conseillerais pas cette méthode dans un premier temps.
[^] # Re: Gestion de config ?
Posté par freem . Évalué à 2.
C'est faisable sans refaire un paquet à chaque fois.
Il suffit de faire dépendre le méta-paquet d'un outil qui ira chercher les fichiers de conf, et d'appliquer un script dans post-inst, ou un truc du genre.
Je ne dis pas que c'est une bonne idée, parce qu'aller chercher un truc changeant automatiquement sur le réseau lors d'une intall, ça me paraît un peu… dangereux, mais ça me semble faisable.
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2. Dernière modification le 16 septembre 2024 à 19:49.
Ca devrait être assez simple à scripter.
tu sauvegardes la liste des paquets installés : comme ça en cas de crash, tu peux les restaurer. Tu mets ça en cron par exemple, et tu le sauvegardes sur une machine distante.
tu sauvegardes les host-keys ssh
tu crées un dépot git pour /etc (ce qui te permet de gérer les versions), ou un dépot GIT par conf de soft utilisé
lorsque tu modifies ta config, tu commit dans GIT, et tu fais une synchro (push) avec une copie de ton dépot sur un site distant ( il y a peut-être moyen d'automatiser ça avec les hooks git - à voir). Tu fais la même chose pour toutes les configs qui ne seraient pas dans /etc. Si ce n'est possible via un hook, tu mets en place un cron qui compare le dépot de référence et ton dépot courant, et qui lance un push s'il y a un diff.
Si c'est possible, tu geres l'arborescence de ton site avec GIT : par contre tu le fais de l'autre sens : tu développes sur ton serveur de dev, et lorsque tout est ok, tu balances le tout sur ton site de prod (push de dev vers prod ou pull sur le serveur de prod à partir du serveur de dev) .
Comme ça le jour ou ça pête :
- tu demandes à ton hébergeur de restaurer ton serveur
- tu restaures les paquets via la méthode indiqué plus haut dans le lien.
- tu utilise GIT pour récupérer tes confs, et pour récupérer tes données.
En tout cas c'est comme ça que je m'y prendrais : tutes ces étapes peuvent être automatisées assez facilement je pense. Si tu as besoin d'aide complémentaire n'hésite pas.
[^] # Re: Gestion de config ?
Posté par Framasky (site web personnel) . Évalué à 2.
Il y a même un paquet qui te permet d'automatiser ça : etckeeper. Par contre, je ne crois pas que ça fasse un push automatique vers un dépôt distant, mais ça c'est réglé rapidement avec un cron :-)
Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 3.
J'ai oublié dans le lot la restauration des host key ssh. Il serait judicieux de le faire au début du process, sauf si la sécurité du serveur a été corrompue et que tu as subi une attaque. Normalement les clés devraient être restaurées avec la récupération de /etc via git, mais tu risques d'avoir des messages d'erreur pendant la phase transitoire.
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1. Dernière modification le 31 décembre 2014 à 17:31.
Oula je suis un peu perdu là…. :/
Moi je pensais plutôt à un truc beaucoup plus simple, un script du genre:
et si c'est possible déplacer les fichiers de config (ex: /etc/apache2/apache2.conf) pour garder une copie de sécurité au cas ou si ça bug et remplacer ce fichier de config par un un que que j'ai modifié, via les commandes:
puis :
Mais quand j'essaye de faire de cette manière, j'obtiens des erreurs et cela ne marche pas??
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2. Dernière modification le 31 décembre 2014 à 12:45.
Tu fais tout ça en 1 seule commande :
sudo dpkg --set-selections < /home//liste-des-paquets
sudo apt-get -u dselect-upgrade
Mais ça nécessite au préalable d'avoir fait :
dpkg --get-selections > /home//liste-des-paquets
Tu insères cette commande en cron pour générer le fichier toutes les heures par exemple (ou alors il ne faut pas l'oublier à chaque fois que tu installes un paquet)
Deuxième solution :
for i in $(cat )
do
apt-get install $i || exit 1
done
Si tu veux pouvoir mettre des commentaires (#)
for i in $(awk -F# '{print $1}' toto.txt ); do
apt-get install $i || exit 1
done
Cette solution t'impose de mettre à jour manuellement la liste de paquets.
Utilise un gestionnaire de versions tel que Git ou Mercurial : dans ton cas tu n'as que quelques commandes à apprendre :
- git init (pour initialiser le dépot)
- git clone ( pour
- git add
- git commit
- git push
- git revert pour revenir en arrière.
Tu peux trouver des introductions à GIT (exemple : http://openclassrooms.com/courses/gerez-vos-codes-source-avec-git ).
Note que n'importe comment, tu seras obligé d'avoir une copie de tes confs à l'extérieur de ton serveur: soit tu le fais manuellement, soit tu l'automatises.
Quelles erreurs ?
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1. Dernière modification le 31 décembre 2014 à 17:32.
bin voila mon script actuel, nommé script.sh:
pour le lancer je tape: bash script.sh et voilà en retour ce que j'obtiens:
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2. Dernière modification le 31 décembre 2014 à 13:21.
pour avoir le nom du paquet exact :
apt-cache search apache2 .
Il te donnera le nom exact du paquet.
Si tu ne le trouves pas, essaie un apt-get update avant.
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1. Dernière modification le 31 décembre 2014 à 17:33.
ok mais quand je tape cette commande, il s'affiche tout plein de lignes, relatif à apache:
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2.
apache est bien là :
apache2 - Apache HTTP Server metapackage
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1.
et ce qui est très bizarre c'est que si je tape dans la console :
apt-get install apache2
y'a pas de soucis, apache s'installe normallement??
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2.
Ca c'est curieux, effectivement…
Essaie de faire apt-cache search apache2 via un script shell pour voir ?
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1.
C'est bon c'est OK de mon côté!! En fait un problème de format de fichier…. mon script avait été édité via Notepad++ et du coup problème de format d'enregistrement^
Un grand merci pour tous les conseils!! ;)
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1.
Je vais maintenant me pencher sur le gestionnaire de versions…..
mais je pense que mon astuce de préparer mes fichiers de confiG perso dans un répertoire et de les copier à la place de ceux crées par défaut va fonctionner plus simplement!! :)
Merci.
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2. Dernière modification le 31 décembre 2014 à 14:44.
Je pensais ça aussi à une époque, comme beaucoup de monde, mais j'en suis revenu … :)
Ah, et comment comptes-tu faire "sortir" tes sauvegardes ou tes scripts de ta VM ?
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 0.
je pense que dans ma situation la manip de modification de fichiers de confiG pourra passer car je suis sur un tout petit serveur web, il y a juste d'installer:
- apache2
- php5
- mysql
-phpmyadmin
- mysecure shell
- postfix
- courier-imap
- squirrelmail
- iptable + fail2ban + rkhunter
- Suexec + suphp
- logwatch + munin + webmin
et en plus pour les sauvegardes backup manager
Pour mes scripts et sauvegardes tout va se faire en sFPT.
[^] # Re: Gestion de config ?
Posté par freem . Évalué à 2.
Il n'y à rien de mal à ce bon vieux VCS cpold :p (à condition bien sûr d'aimer devoir trier des noms de dossier genre "copie de copie de copie de copie de copie de foobar" pour windows ou "foobar.bak.bak.bak.bak.bak.bak.bak"…)
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 2.
Tu as raison : cette solution présente de nombreux avantages lorsque tu dois déployer des configs sur plusieurs serveurs, et tu pourras t'y intéresser si ton serveur vient à être limite en charge par exemple, et qu'il te devienne nécessaire de déployer d'autres serveurs pour l'épauler. En commençant par simple, tu te trouveras confrontés à des problématiques que tu retrouveras avec un outil comme Chef ou Puppet, mais tu n'aura pas en plus à gérer l'apprentissage de ces outils.
[^] # Re: Gestion de config ?
Posté par NeoX . Évalué à 3.
deja evoqué hier, il n'y a pas un systeme de backup avec ton serveur de machine virtuelle ?
tu fais alors un backup de la VM, et en cas de dysfonctionnement, tu reinstalles le backup.
sinon, oui, aujourd'hui les outils comme cfengine, puppet, te semble overkill pour "une" machine.
mais si demain tu en as 25, tu apprecieras d'autant plus de ne pas avoir à refaire des 25 scripts d'installation.
[^] # Re: Gestion de config ?
Posté par Marotte ⛧ . Évalué à 4.
Je pense la même chose. S'il a la main sur l'hôte il doit être possible (est-ce viable ?) de faire un snapshot à intervalle régulier et d'effacer automatiquement les plus vieux, en gardant par exemple les trois derniers. En cas de problème tu reboot sur le snapshot, ça va nettement plus vite que de réinstaller le serveur, quelque soit le degré d'automatisation employé.
S'il n'a pas la main sur l'hôte mais seulement accès à la VM (une VM chez un hébergeur…) ça ne va pas être possible, ou aussi souple, comme solution.
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 4.
Au vu de mon expérience, il est toujours sain d'avoir une méthode de réinstallation complête from scratch.
[^] # Re: Gestion de config ?
Posté par NeoX . Évalué à 2.
qui se basera quand meme sur des backups :
- des fichiers des sites webs
- des fichiers de base de données
etc
[^] # Re: Gestion de config ?
Posté par totof2000 . Évalué à 3.
on est d'accord là dessus, ça ne dispense pas de sauvegardes non plus. L'idée est que parfois on peut trainer des choses "pas propres" au fur et à mesure des installations ( partitionnement inadapté, et/ou système de fichiers vétustes, paquets installés devenus inutiles mais qui sont restés, etc …). Autre point important, il peut être vital de devoir réinstaller une machine from scratch (d'un point de vue système) si celle-ci a été corrompue et qu'on est pas sûr que les sauvegardes ne le sont pas non plus : dans ce cas, avoir une méthode de réinstallation rapide peut être pratique et permet de gagner du temps.
[^] # Re: Gestion de config ?
Posté par samsam07 . Évalué à 1.
il y a bien un système de backup prévu sur ma VM, une chaque jour est prévue! Cependant, moi, je souhaiterais pouvoir en faire une perso de ma machine propre, avant même l'import des fichiers de mon site internet. Comme ça en cas de bug, je pourrais faire une install rapide sur une nouvelle VM à partir de cette copie. Il y a 14 jours de backup ce qui fait que la backup de départ va disparaître au bout de ces 14 jours!! :/ De plus, il faut faire une demande auprès de mon hébergeur pour restaurer une backup (= perte de temps)
Mais oui,je vais me pencher sur les outils proposés (cfengine, puppet….), en effet, c'est jamais une perte de temps d'apprendre à maîtriser de nouvelles choses!! :)
Merci pour toutes ces informations.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.