Bonjour encore. Semaine (cet article est resté très longtemps dans l'arriéré) Il y a quelque temps, j'ai expliqué comment utiliser rcm pour la gestion de configuration normale. Nous avons un module marionnette dans notre entreprise qui distribue les paramètres personnels de l'utilisateur à tous les hôtes auxquels il a accès. En conséquence, je veux ce qui suit:
- J'ai mes propres paramètres pour tout ce que j'utilise (vim, zsh, git, etc.)
- Mettez-les à jour lors de leur mise à jour dans le référentiel dotfiles
- Tout cela - sans gestes inutiles
Les outils
Tout ce dont j'ai besoin est déjà utilisé par moi, à savoir:
Il n'y a rien de délicat ici: nous déployons des tarballs en déballant leur contenu sur les hôtes. Seuls les fichiers et répertoires d'une liste spécifique sont gérés, broyant complètement chaque couronne à chaque déploiement. Par conséquent, si l'archive tar a changé, tout dans la liste $HOME
est effacé. Sinon, le contenu de $ HOME reste inchangé. Un script distinct est chargé de (re) compresser le dossier avec les fichiers source des fichiers personnels; cela semble assez banal:
Comment créer un nouveau tarball de commit ball
Déployer des fichiers dot pas dans $ HOME
Comme j'ai déjà un outil avec lequel je déploie des configurations sur différents hôtes, je vais évidemment l'utiliser. Il vous suffit de réparer quelque chose et de faire rcm
copier les fichiers là où je dois. Cependant, rcm définit toujours les fichiers de points dans $ HOME, il n'y a aucun argument de ligne de commande pour changer ce comportement.
Après quelques expériences et sélection de la source, j'ai réalisé que vous pouvez directement changer $ HOME, puis le comportement des utilitaires de toutes les commandes rcm changera comme suit: chacun des utilitaires lsrc, mkrc, rcdn, rsup
lira ${HOME}/.rcrc
et utilisera ${HOME}/.dotfiles
par défaut. En conséquence, il suffit de créer le même ${HOME}/.rcrc
avec tous les paramètres nécessaires.
Le moyen le plus simple est de faire un "vide" du dossier de départ et de le remplir à partir de zéro à chaque validation. Un exemple de son apparence peut être vu dans le référentiel . Ce dossier est ignoré sur tous les hôtes sans la balise personnelle ; en conséquence, il n'interférera pas avec la configuration principale. Un seul fichier .rcrc contient tous les paramètres de la logique de copie des fichiers, je ne ferai que quelques remarques:
- Sans
$SYMLINK_DIRS
rcup
fonctionne désespérément longtemps, créant une liste complète des fichiers à copier. Avec cette option, avec $COPY_ALWAYS
utilitaire copie simplement le dossier entier en tant que cp -r
sans problème inutile - Évidemment, beaucoup n'est pas nécessaire sur les serveurs distants, tout cela est répertorié dans
$EXCLUDES
(à l'exception des plugins vim, ils doivent être supprimés dans le crochet car $SYMLINK_DIRS
) - Étant donné que
${HOME}/.dotfiles
cesse de fonctionner pour des raisons évidentes, vous devez également remplacer $DOTFILES_DIRS
C’est tout. Vous pouvez maintenant copier le dossier tag personnel n'importe où, remplacer ${HOME}
pendant un certain temps et exécuter rcup
WORK_DIR="${HOME}/.dotfiles/tag-personal" _OLD_HOME=$HOME HOME="${HOME}/some/long/custom/path" cp -r "${WORK_DIR}" "${HOME}" rcup -v HOME=$_OLD_HOME
Ouah! Mais je veux autre chose ...
Nous automatisons le "déploiement" des configs sur $ HOME personnalisé
Faire ce "quelque chose" est facile, git à ce stade vous aidera avec ses crochets. Il existe un fichier exécutable .git/hooks/post-commit
contenu suivant:
Maintenant, après chaque validation dans le référentiel avec des fichiers dot, ce script sera lancé.
Tout, après cela, il reste à faire un commit + push vers le référentiel avec des données personnelles et attendre que la magie de l'automatisation mette mes configs vers des hôtes actifs.
Pourquoi compliquer des choses comme ça?
Le fait est que même si la société ne disposait d'aucun outil pour déployer une configuration personnelle sur les hôtes, un tel kit n'était pas nécessaire. Mais dès que l'occasion se présente, l'appétit croît instantanément. Certains de mes collègues étaient satisfaits d'avoir apporté trois fichiers aux hôtes, par exemple .vimrc .bashrc .gitconfig
. Cependant, pendant longtemps, j'avais affûté, corrigé et poli avec amour un ensemble complet d'outils divers. Seul le ~/.vim
après l'installation de tous les plugins pèse 427 Mo (oui, 218 d'entre eux sont YCM, et je ne le fais pas glisser vers les serveurs, et après le nettoyage et l'emballage, il perd du poids jusqu'à 3 Mo).
Probablement, quelqu'un pensera que c'est en quelque sorte trop et aurait pu être fait avec les mains. Peut-être que tout le monde ne sera pas d'accord avec cela.
J'espère que quelqu'un d'autre a un besoin presque physique de se sentir à l'aise sur les postes de travail, presque à la maison, et que les outils le lui permettent. Utilisez votre santé et que l'automatisation soit avec nous!