DevOps

Gestion de code source & de version

Bitbucket

Programmer, gérer et collaborer

  • Bitbucket est une solution Git pour les équipes professionnelles.

Accélération de la programmation collaborative

  • Approuver les revues du code plus efficacement avec les pull requests.
  • Mener les discussions directement dans le code source avec les commentaires contextuels.

Bitbucket Pipelines

  • Gestion du workflow de développement dans Bitbucket, du code au déploiement.

Stockage de fichiers volumineux Git (LFS)

  • Utiliser Git LFS pour stocker les fichiers volumineux liés aux développements.

Installation

Caractéristiques

Nom :   dosi01.devops.local        (172.16.71.51)
Nom :   doss01.devops.local        (172.16.71.52)
Alias : bitbucket.devops.local (-> DOSI01)
OS :    Ubuntu Server 16.04.3 LTS
CPU :   x2
RAM :   4 GB
HD :    50 GB (thin provisioning)

Ajout du serveur au domaine (DOSI01)

(Pour doss01, se calquer sur la procédure ci-dessous.)

  • Ajout du compte gregory.tabourin à ces groupes

Groupe domain local : “DOSI01_Administrators” (Bitbucket server)
Groupe domain local : “DOSS01_Administrators” (PostgreSQL)
Groupe domain local : “Bitbucket_admin”
Groupe domain local : “Bitbucket_project_creator”
Groupe domain local : “Bitbucket_system_admin”
Groupe domain local : “Bitbucket_users”

  •  Installation des packages

sudo apt install krb5-user samba sssd ntp openssh-server

  • Configuration Kerberos

sudo nano /etc/krb5.conf
 

   [libdefaults]
   default_realm = DEVOPS.LOCAL
   ticket_lifetime = 24h #
   renew_lifetime = 7d

  • Configuration Samba

sudo nano /etc/samba/smb.conf
 

   [global]
   workgroup = DEVOPS
   client signing = yes
   client use spnego = yes
   kerberos method = secrets and keytab
   realm = DEVOPS.LOCAL
   security = ads

  • Configuration SSSD

sudo nano /etc/sssd/sssd.conf
 

   [sssd]
   services = nss, Pam
   config_file_version = 2
   domains = DEVOPS.LOCAL
 
   [domain/DEVOPS.LOCAL]
   id_provider = ad
   access_provider = ad
   override_homedir = /home/%d/%u
 
   access_provider = simple
   simple_allow_groups = dosi01_administrators

 
sudo chown root:root /etc/sssd/sssd.conf
sudo chmod 600 /etc/sssd/sssd.conf

  • Configuration nsswitch (vérification)

sudo cat /etc/nsswitch.conf

  • Configuration /etc/hosts. Ajouter la ligne ci-dessous.

172.16.71.51 dosi01 dosi01.devops.local

  • Configurer repertoires “Home”

sudo pam-auth-update

  • Sélectionner la dernière ligne

  • Redémarrer les services

sudo systemctl restart ntp.service
sudo systemctl restart smbd.service nmbd.service
sudo systemctl start sssd.servic

  • Tester la configuration pour l’obtention d’un ticket Kerberos

sudo kinit Administrator
sudo klist

  • Joindre le domaine

sudo net ads join –k

  • Ajouter le groupe admin aux sudoers

sudo visudo

   %dosi01_administrators ALL=(ALL) ALL

  •  Vérification
    • Vérifier que l’object figure bien dans l’AD
    • Se loguer avec gregory.tabourin

Installation du serveur PostgreSQL

  • Installation

sudo nano /etc/apt/sources.list.d/pgdg.list

   deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.6

  • Création de l’utilisateur et de la base de données pour Bitbucket

sudo -u postgres -i
psql -t -P format=unaligned -c "CREATE ROLE bitbucketuser WITH LOGIN PASSWORD 'motdepasse' VALID UNTIL 'infinity'";
psql -t -P format=unaligned -c "CREATE DATABASE bitbucket WITH ENCODING='UTF8' OWNER=bitbucketuser CONNECTION LIMIT=-1";

  • Récupération du chemin pour le fichier hba.conf

psql -t -P format=unaligned -c 'show hba_file';
exit

  • Modifier les autorisations d’accès

sudo nano /etc/postgresql/9.6/main/postgresql.conf

   listen_addresses = '*'

sudo nano /etc/postgresql/9.6/main/pg_hba.conf

   host bitbucket bitbucketuser dosi01.devops.local md5
   host all       all           0.0.0.0/0           reject

  • Redémarrage du service

sudo systemctl restart postgresql

Installation du serveur Bitbucket

  • Vérification des prérequis

git --version  -> 2.7.4
perl --version -> 5.8.8+

  • Téléchargement

wget https://www.atlassian.com/software/stash/downloads/binary/atlassian-bitbucket-5.4.1-x64.bin

  • Installation

chmod +x atlassian-bitbucket-5.4.1-x64.bin
sudo ./atlassian-bitbucket-5.4.1-x64.bin

  • Correction du fichier de démarrage

sudo nano /opt/atlassian/bitbucket/5.4.1/bin/_start-webapp.sh
    JVM_SUPPORT_RECOMMENDED_ARGS="-Djava.security.egd=file:/dev/./urandom"

  • Se connecter à http://dosi01.devops.local:7990 pour démarrer la configuration

  • Configurer le nom du serveur

  • Configurer la connexion Active Directory et mapper les groupes de sécurité

  • Importer le certificat SSL CA pour Ubuntu et le serveur Tomcat

sudo nano /usr/local/share/ca-certificates/ca.devops.local.crt

sudo update-ca-certificates

sudo /opt/atlassian/bitbucket/5.4.1/jre/bin/keytool \
   -import \
   -alias ca \
   -keystore /opt/atlassian/bitbucket/5.4.1/jre/lib/security/cacerts \
   -file /usr/local/share/ca-certificates/ca.devops.local.crt

 

  • Générer une clé privée pour le certificat SSL

sudo /opt/atlassian/bitbucket/5.4.1/jre/bin/keytool \
   -genkey \
   -alias tomcat \
   -keyalg RSA \
   -sigalg SHA256withRSA \
   -keystore /var/atlassian/application-data/bitbucket/shared/config/ssl-keystore \
   -dname "CN=bitbucket.devops.local, OU=Ops, O=DevOps, L=Geneva, ST=Geneva, C=CH" \
   -ext "SAN=dns:bitbucket.devops.local"

  • Créer le fichier de requête du certificat

sudo /opt/atlassian/bitbucket/5.4.1/jre/bin/keytool \
   -certreq \
   -keyalg RSA \
   -alias tomcat \
   -file certreq.csr \
   -keystore /var/atlassian/application-data/bitbucket/shared/config/ssl-keystore \
   -dname "CN=bitbucket.devops.local, OU=Ops, O=DevOps, L=Geneva, ST=Geneva, C=CH" \
   -ext "SAN=dns:bitbucket.devops.local"

  • Importer le certificat

sudo nano bitbucket.cer

sudo /opt/atlassian/bitbucket/5.4.1/jre/bin/keytool \
-import \
-alias tomcat \
-file bitbucket.cer \
-keystore /var/atlassian/application-data/bitbucket/shared/config/ssl-keystore

  • Modifier le fichier de configuration

sudo nano /var/atlassian/application-data/bitbucket/shared/bitbucket.properties

   server.require-ssl=true
   server.redirect-port=8443
   server.port=8443
   server.ssl.enabled=true
   server.ssl.key-store=/var/atlassian/application-data/bitbucket/shared/config/ssl-keystore
   server.ssl.key-store-password="motdepasse"
   server.ssl.key-password="motdepasse"

  • Redémarrer les services

sudo /opt/atlassian/bitbucket/5.4.1/bin/stop-bitbucket.sh
sudo /opt/atlassian/bitbucket/5.4.1/bin/start-bitbucket.sh

  • Se connecter à https://bitbucket.devops.local:8443