Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)
    • 30/3/2017

    [GitHub Enterprise] Sauvegardez le contenu

    Si vous ne sauvegardez pas votre machine qui contient votre GitHub Enterprise, vous pouvez sauvegarder directement le contenu GitHub du serveyr. Mon serveur de backup est sous Debian 8. La première étape est d'installer rsync si il n'est pas encore installé:

    apt-get update && apt-get install rsync

    Maintenant, téléchargez l'utilitaire de backup et décompressez le. Copiez la configuration et modifiez la:

    wget https://github.com/github/backup-utils/releases/download/v2.9.0/github-backup-utils-v2.9.0.tar.gz
    sudo tar -xvzf github-backup-utils-v2.9.0.tar.gz
    cd /tmp/github-backup-utils-v2.9.0
    sudo cp backup.config-example backup.config
    sudo vi backup.config

    Ajoutez le nom de votre serveur GitHub (assurez-vous de pouvoir pinguer ce serveur) et sauvegardez la configuration:

    Maintenant; exécutez la commande suivante pour effectuer votre première sauvegarde:

    cd bin/
    sudo ./ghe-backup -v

    -v est pour le verbose.

    Acceptez le certificate. La sauvegarde démarre:

    Maintenant que votre serveur Github est sauvegardé, déployez un nouveau serveur GitHub ou utilisez celui ci.

    Si vous utilisez un nouveau serveur GitHub, importez le certificat, refaites la configuration de base, comme l'intégration SAML, etc.

    Maintenant, enregistrez la clé SSH de votre serveur de sauvegarde dans l'interface GitHub et placez votre serveur GitHub en mode maintenance:

    Vous pouvez démarrer la restauration avec la commande suivante:

    sudo ./ghe-restore IPADDRESS -v

    IPADDRESS est l'adresse ip du serveur qui contient le GitHub où vous souhaitez restaurer la dernière sauvegarde:

    C'est très simple à faire avec cet outil mais aussi très simple à automatiser avec un job cron.

    • 28/3/2017

    [GitHub Enterprise] Changer le certificat avec Lets Encrypt

    Par défaut, le certificat utilisé pas le serveur GitHub Enterprise est auto-signé. Si vous ne pouvez pas acheter de certificat, vous pouvez utiliser LetsEncrypt pour avoir un certificat trusté publiquement. Celui ci doit être renouvelé tous les 3 mois.

    Le serveur GitHub est comme une appliance, il ne faut rien installer dessus, c'est pourquoi, pour générer ce certificat, il faut utiliser un autre serveur. Je vais utiliser un serveur sous Debian 8 pour faire ceci. Nous allons utiliser le paquet certbot pour générer le certificat.

    La première étape est d'enregistrer le répertoire et installer le paquet:

    echo "deb http://ftp.debian.org/debian jessie-backports main" | sudo tee -a /etc/apt/sources.list
    sudo apt-get update
    sudo apt-get install certbot -t jessie-backports

    Quand c'est terminé, utilisez la commande suivante pour démarrer la génération du certificat public, avec le nom GitHub et les noms DNS inclus. Remplacez domaine.be par votre nom DNS:

    sudo certbot certonly --manual --preferred-challenges dns -d github.domain.be -d alambic.github.domain.be -d assets.github.domain.be -d avatars.github.domain.be -d codeload.github.domain.be -d gist.github.domain.be -d pages.github.domain.be -d render.github.domain.be -d reply.github.domain.be -d uploads.github.domain.be -d raw.github.domain.be -d media.github.domain.be

    Le script va vous demander de créer des enregistrement DNS, de type TXT, pour chaque sous-domaine, avec une valeur spécifique, pour vérifier que vous êtes bien le propriétaire du domaine:

    Quand c'est terminé, vous avez un message d'information:

    Sur le serveur, créez un répertoire temporaire, et copiez y le certificat fullchain.pem et privkey.pem dans ce dossier:

    sudo mkdir /tmp/certificates
    sudo cp /etc/letsencrypt/live/github.domain.be/fullchain.pem /tmp/certificates/fullchain.pem
    sudo cp /etc/letsencrypt/live/github.domain.be/privkey.pem /tmp/certificates/privkey.pem

    Quand c'est terminé, téléchargez ces certificats sur l'ordinateur depuis lequel vous allez faire la configuration GitHub. Connectez vous à l'interface d'administration, dans la partie Privacy et sélectionnez vos 2 certificats. Cliquez sur Save sur la gauche:

    Les services vont redémarrer:

    Les services ont redémarré correctement:

    Si vous rafraichissez votre page GitHub, vous allez avoir votre nouveau certificat, validé par votre navigateur:

    Et depuis l'interface d'administration GitHub, vous avez un certificat valide:

    C'est gratuit, rapide à mettre en place, donc oubliez les certificats auto signés et utilisez des certificats valides :)

    • 13/3/2017

    [GitHub Enterprise] Authentification avec Azure AD

    Avec les dernières versions de GitHub Enterprise, il est possible d'utiliser l'authentification via SAML, ce que propose Azure AD. Pour mettre en place ceci, il vous faut donc:

    • Un Azure AD
    • Un environnement GitHub Enterprise

    Pour commencer, il faut créer une application sur votre Azure AD. Depuis le nouveau portail, allez dans votre Azure AD, et créez une nouvelle application, de type WebApp / API. La partie SignOn URL correspond à l'URL de votre GitHub Enterprise:

    Vérifiez bien dans l'application que les permissions soient bien avec au moins Sign in and read user profile:

     

    Il faut maintenant récupérer le fichier FederationMetadata.xml. Pour ce faire il faut aller sur l'URL suivante, en remplaçant l'ID par l'ID de votre tenant, que vous pouvez retrouver dans votre Azure AD:

    https://login.windows.net/TENANTID/FederationMetadata/2007-06/FederationMetadata.xml

    Récupérez la valeur qui se trouve au niveau de la flèche, dans la balise X509Certificate:

    Copiez les données dans un fichier texte, puis, tous les 80 caractères, allez à la ligne:

    Enregistrez ce fichier avec l'extension .cert

    Allez maintenant sur la page d'administration de votre GitHub Enterprise, dans la partie Authentication. Ici, choisissez SAML et dans Single Sign On URL, fournissez l'URL suivante, en remplaçant TENANTID par l'ID de votre Azure AD. Fournissez le certificat que vous avez enregistré avant:

    https://login.microsoftonline.com/TENANTID/saml2 

    Sauvegardez. Vous devriez avoir ceci:

    Allez maintenant sur votre URL GitHub. Au moment de vous connecter, vous devriez être redirigé vers la page d'authentification de Microsoft. Connectez-vous avez votre compte Azure AD. Vous devriez ensuite arriver sur la page GitHub:

    Comme vous pouvez le voire, le . dans le nom d'utilisateur est remplacé par un -.

    Bon courage pour cette manipulation et n'hésitez pas si vous avez des questions :)