Modifications entre les versions 16 et 19 (s'étendant sur 3 versions)
Version 16 à la date du 2007-11-09 09:28:44
Taille: 3446
Éditeur: ThomasNoël
Commentaire: ça commence à marcher, bon sang de bon sang
Version 19 à la date du 2007-11-09 12:18:36
Taille: 4642
Éditeur: ThomasNoël
Commentaire: début d'inventaire des trucs à ne pas committer...
Texte supprimé. Texte ajouté.
Ligne 3: Ligne 3:
'''Note : j'ai testé tout ça sur Gutsy... merci aux Etchers de confirmer que ça passe aussi sur Debian Etch, qui n'est qu'en git 1.4...''' Sinon il faudra abandonner (oohh...) ou bien utiliser le git de backports.org (uuhh...) '''Note : testé sur Gutsy... en cours de test sur Etch'''
Ligne 19: Ligne 19:
# git init # git init (ou "git init-db" sur une Debian Etch, git version 1.4)
Ligne 32: Ligne 32:
#
# Le fichier /var/lib/git/root/info/exclude
#
# Le fichier /var/lib/git/root/info/exclude :
# Par défaut, on exclut tout, sauf /etc
Ligne 37: Ligne 36:
# ... mais dans /etc on interdit certains fichiers :
/etc/*shadow*
/etc/ssh/ssh_host_*_key
Ligne 39: Ligne 41:
# On n'interdit pas non plus le parcours de /usr. Mais dans ce parcours,
# on interdit tout sauf /usr/local. C'est la technique pour inclure /usr/local...
Ligne 42: Ligne 46:
# quelques type fichiers à ne pas jamais considérer, globalement :
Ligne 100: Ligne 105:
== Un serveur gitweb central ==

''brouillon (manip testées, ça marche, mais j'ai peut-être oublié quelques détails)''

 1. Installation de gitweb sur un serveur à IP publique. Attention, puisqu'il permettra d'accéder à des fichiers du type `shadow` : accès restreint par mot de passe, éventuellement à certaines IP, voir certificat ssl si on passe en mode parano.
 2. Dans /var/lib/git on créée des dépôts (un par serveur à suivre). Ces dépots appartiennent à un utilisateur "gitweb" (pas à root)
 {{{
gitweb@serveur-git$ GIT_DIR=/var/lib/git/apollon git init-db
gitweb@serveur-git$ ln -s /var/lib/git/apollon /var/cache/git/apollon # prise en compte par gitweb
}}}
 3. On met les clés publiques des comptes root des serveurs dans `/home/gitweb/.ssh/authorized_keys`
 4. Pour synchroniser le dépôt local d'un serveur avec le dépôt sur le serveur gitweb :
 {{{
# git pull --all ssh://gitweb@serveur-gitweb/var/lib/git/apollon
}}}
 5. C'est tout.
Ligne 103: Ligne 125:
 . faire un serveur central gitweb (avec les commandes git-ssh-* ou autres, pour envoyer vers le dépot ?)
 . liaison avec le mail : paquet git-email ?
 . hooks à comprendre : envoyer un mail à chaque commit, synchroniser avec le gitweb à chaque commit, etc...

Git est un système de gestion de versions. Voir sa [http://fr.wikipedia.org/wiki/Git_(logiciel) page wikipédia]

Note : testé sur Gutsy... en cours de test sur Etch

Suivre la config d'une machine avec git

On veut pouvoir documenter les modifications faites dans /etc et dans /usr/local.

Installation

  1. On installe git :

    # aptitude install git-core
  2. On créée un dépôt général pour toute la machine. Attention à bien régler les droits : seul root doit pouvoir accéder au dépôt, sinon les fichiers du genre shadow seraient accessibles à tous.

    # cd /
    # git init   (ou "git init-db" sur une Debian Etch, git version 1.4)
    # chmod u=rwx,go= /.git
  3. Pour éviter d'avoir des "saletés" directement à la racine (/), on déplace le dépôt. Le répertoire /.git à la racine ne sera en fait qu'un lien symbolique vers le véritable emplacement du dépôt :

    # mkdir /var/lib/git
    # mv /.git /var/lib/git/root
    # ln -s /var/lib/git/root /.git
  4. On veut suivre /etc et /usr/local seulement, pour cela on modifie les exclusions au niveau du dépôt, dans le fichier /var/lib/git/root/info/exclude :

    # Le fichier /var/lib/git/root/info/exclude :
    # Par défaut, on exclut tout, sauf /etc
    /*
    !/etc
    # ... mais dans /etc on interdit certains fichiers :
    /etc/*shadow*
    /etc/ssh/ssh_host_*_key
    /etc/mtab
    /etc/adjtime
    # On n'interdit pas non plus le parcours de /usr. Mais dans ce parcours,
    # on interdit tout sauf /usr/local. C'est la technique pour inclure /usr/local...
    !/usr
    /usr/*
    !/usr/local
    # quelques type fichiers à ne pas jamais considérer, globalement :
    *.dpkg-old
    *.dpkg-new
    *~
    .*.swp
  5. On fait les premiers ajouts et le premier commit :

    # cd /
    # git add etc usr/local
    # git commit -m "mise en route du suivi : /etc et /usr/local" --author "moi <email@auf.org>"

Utilisation

Après chaque modification d'un fichier, enregistrer les modifications :

  • # git commit -a

Si on veut suivre un nouveau fichier, ou ne committer les modifications que de ce fichier :

  • # git add fichier
    # git commit

et pour un répertoire (modifier exclude si c'est en dehors de /etc ou /usr/local):

  • # cd / ; git add un/reper/toire
    # git commit

Pour voir les modifications, plusieurs techniques en ligne de commande :

  • # tig    <-- à installer avec aptitude install tig
    # git whatchanged
    # git log -10
    # git show ...(le code du commit)...

Quelques scripts d'automatisation (wrapper)

A ajouter dans son ~/.bashrc :

  • export GIT_COMMITTER_NAME="Prenom NOM"
    export GIT_COMMITTER_EMAIL="prenom.nom@auf.org"

confcommit

attachment:confcommit

Permet une utilisation plus simple via sudo :

  • trouve le nom de l'auteur/committer par les variables d'environnement GIT_ et/ou SUDO_USER
  • confcommit -a : effectue un git commit -a pour committer toutes les modifications et suppression de fichiers

  • confcommit -n : effectue un git add etc usr/local pour ajouter tous les nouveaux fichiers

confcommit-status

attachment:confcommit-status

A lancer via un cron au moins quotidien, il donne la liste des modifications non encore enregistrées : fichiers modifiés, fichiers supprimés, nouveaux fichiers.

Un serveur gitweb central

brouillon (manip testées, ça marche, mais j'ai peut-être oublié quelques détails)

  1. Installation de gitweb sur un serveur à IP publique. Attention, puisqu'il permettra d'accéder à des fichiers du type shadow : accès restreint par mot de passe, éventuellement à certaines IP, voir certificat ssl si on passe en mode parano.

  2. Dans /var/lib/git on créée des dépôts (un par serveur à suivre). Ces dépots appartiennent à un utilisateur "gitweb" (pas à root)
    gitweb@serveur-git$ GIT_DIR=/var/lib/git/apollon git init-db
    gitweb@serveur-git$ ln -s /var/lib/git/apollon /var/cache/git/apollon     # prise en compte par gitweb
  3. On met les clés publiques des comptes root des serveurs dans /home/gitweb/.ssh/authorized_keys

  4. Pour synchroniser le dépôt local d'un serveur avec le dépôt sur le serveur gitweb :
    # git pull --all ssh://gitweb@serveur-gitweb/var/lib/git/apollon
  5. C'est tout.

Améliorations à prévoir

Git/SuiviDeConfiguration (dernière édition le 2013-09-02 03:50:32 par JeanChristopheAndré)