Salut à tous,
J'ai la fâcheuse habitude d'aimer formater et réinstaller mes ordinateurs, notamment pour:
1. Le plaisir
2. Repartir avec une installation propre
3. Essayer un nouvelle distribution (2 semaines, pour finir par revenir à Archlinux)
Afin de palier au fait que j'aie plusieurs PC et aussi pour éviter de perdre tous mes documents, je synchronise mon dossier Documents
entre mes ordinateurs grâce à unison
. Que du bonheur. Et lorsque j'ai un PC tout propre, il y a juste à synchroniser et je retrouve le tout.
Mais il reste encore une étape que j'aimerais améliorer: la gestion de mes configurations. J'utilise par exemple awesome, vim, zsh, pentadactyl, Xorg, etc… qui possèdent chacun leurs propres fichiers/dossiers de configuration, respectivement ~/.config/awesome/
,~/.vimrc
,~/.zshrc
,~/.pentadactylrc
, ~/.xinitrc
, etc…
À l'heure actuelle je me suis fait un dossier Configurations
avec tout ces fichiers dedans, et un petit fichier install.sh
qui me link tout les fichiers de configurations vers leurs équivalent respectif dans Configurations
. Ce dossier est lui aussi synchronisé via unison
ce qui me permet de très facilement l'avoir sur un nouveau PC, et ainsi d'installer mes configurations personnelles. Jusque là c'est sympa.
Le petit détails qui m'embête, c'est la gestion des configurations différentes entre ordinateurs. Par exemple je n'aimerai pas avoir la même configuration de awesome entre mon PC portable ou mon ordinateur fixe, ou encore à l'université. Du coup mon système ne marche pas, à moins de faire les liens symboliques de mano, ou de créer plusieurs fichier, genre install_desktop.sh
, install_laptop.sh
, mais ça ce n'est pas propre.
Du coup première question: "Connaissez-vous un logiciel qui réponde à mes besoins? Et si non, comment faites vous?"
En essayant gentoo la semaine passé, j'ai découvert eselect
, et là, illumination. Je me suis dit: "C'est ça qu'il me faut". Ce qui m’amène à ma deuxième question: "Adapter le code de eselect pour l'incorporer dans Configurations
et ainsi profiter de commandes telles que ./myselect config list
, ./myselect config set 1
, … soit une bonne idée, et si oui/non, pourquoi?"
Merci d'avance de vos réflexions
# github + branches
Posté par Re_ . Évalué à 1.
Salut,
tu peux gérer tes fichiers de configuration sur github, via le gestionnaire de configuration git. Ca permet notamment d'avoir tes fichiers de conf dispo depuis quasiment n'importe où, et par la même occasion tu partage des configs.
Pour la différence entre les desktops, laptops, tu peux créer des branches pour cela (git gère cela).
Par contre, si tu n'es pas familier du gestionnaire de version git, il te faudra un peu de lecture ;)
Tu as ici par exemple des gens qui partagent leur config vim : https://github.com/astrails/dotvim
[^] # Re: github + branches
Posté par StreakyCobra . Évalué à 1.
Je connais et ai déjà utilisé un peu git (bien que je connaisse mieux mercurial), le branching et tout, mais je n'avais jamais pensé à les utiliser pour ça, pas bête c't'histoire.
À première vue le seul détail qui pourrait être embêtant c'est lors de l'ajout ou de la modification d'un fichier de configuration, il faudrait faire un checkout de chaque branche pour ensuite modifier/copier le nouveau fichier, mais on est d'accord ça reste vivable. En utilisant des dossiers normaux il y aurait moyens d'utiliser des liens symboliques pour les fichiers de configurations qui ne diffèrent pas entre chaque machine.
Mais merci de l'idée, je vais y jeter un coup d'œil plus approfondis.
[^] # Re: github + branches
Posté par rakoo (site web personnel) . Évalué à 1.
Plus simple : utilise ta branche
master
comme base commune entre toutes tes machines, et une branche par machine. Lorsque tu veux ajouter un fichier à toutes les configs, tu le commit dansmaster
et tu merge master dans chaque branche.[^] # Re: github + branches
Posté par StreakyCobra . Évalué à 1.
Vu comme ça, c'est plus simple effectivement. Comme ça semble de plus en plus correspondre à ma solution, je pense me lancer dans cette voie.
Merci de l'idée et des conseils!
[^] # Re: github + branches
Posté par 16aR . Évalué à 1.
C'est ce que j'ai fait deja rien que pour mon .gitconfig.
Avec tous les alias qui vont bien, le log en mode minimal, ca permet d'avoir un git plus efficace.
https://gitorious.org/dolanormisc/gitconfig
A mon boulot, comme on a un environnement de développement qui est copié d'une base, on peut se retrouver avec ses configurations écrasées. Du coup, j'ai versionné le ~ et je n'y commite que mes fichiers de conf.
D'une, ca me permet de voir ce qui a été modifié avec la nouvelle version de l'environnement, de 2, ca me permet de ne pas perdre ma config :)
Sinon, un projet intéressant mais pas encore noob friendly, c'est dvcs-autosync. Un daemon python se basant sur inotify tourne en tache de fond et commite automatiquement chaque nouveau fichier modifié.
http://www.mayrhofer.eu.org/dvcs-autosync
http://gitorious.org/dvcs-autosync
# Puppet
Posté par Framasky (site web personnel) . Évalué à 1.
J'ai mis en place puppet pour mon serveurs et ses 11 containers lxc, et je me suis dit, pourquoi ne pas l'utiliser pour mes pc de bureau et portables ?
Avec le système de template, pas de souci : un template, x configurations potentiellement différentes pour tes x ordis.
Sinon, il y a peut-être le problème de la mouche et du bazooka, mais bon.
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: Puppet
Posté par StreakyCobra . Évalué à 1.
Je ne connaissais pas ce logiciel, je viens brièvement de jeter un coup d’œil via quelques pages web.
Je dirais qu'un truc qui me manquerai c'est la synchronisation dans l'autre sens, c'est à dire que j'aime bien modifier la configuration directement sur chaque PC selon l'évolution de mes besoins, puis de "pusher" simplement les modifications sur mon serveur. Hors à voir avec cette solution j'aurais plutôt à aller modifier les configurations sur mon serveur, et seulement ensuite les récupérer sur mon ordinateur. Ça fait plutôt un peu mouche - kalachnikov pour diminuer un peu le sens de l'expression.
Merci de ton idée en tout cas!
[^] # Re: Puppet
Posté par Framasky (site web personnel) . Évalué à 2.
Du tout du tout : ma conf puppet est dans un repo git qui, quand je le pousse, est updaté sur le serveur puppet. Du coup, si je veux modifier ma conf, je modifie dans le repo git, je committe, je pousse, et dès le prochain passage du client puppet (puppet agent), la conf de la bécane est updatée.
Et qui plus est, ça te permet de revenir en arrière, etc, puisque tu utilises git !
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: Puppet
Posté par StreakyCobra . Évalué à 1.
Comme ça rejoins un peu l'idée proposée plus haut d'utiliser le gestionnaire de version, je pense partir sur l'utilisation de git pour gérer mes configurations. Puppet rajoute la mise à jour automatique des configurations sur les machines, mais ça ne m'est pas nécessaire pour l'instant.
Merci encore pour l'idée et les explications!
# Ma solution
Posté par benoar . Évalué à 3.
Perso, j'utilise beaucoup git, et je me suis demandé comment l'adapter à la gestion des « dotfiles » en général, car le coup des différentes config correspond exactement à l'utilisation de git. Restait le fait d'ajouter facilement les modifications au répo, et la solution est toute bête : c'est un répo avec un work-tree externe (OK, quand on ne connaît pas git, ça ne doit pas dire grand chose). Bref, ça donne ça : http://dolka.fr/code/dotfiles.git et comme indiqué, on fait :
Et on utilise la commande dotg comme on utilise git. Sauf que ça gère tous ses dotfiles.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.