DevOps

Déploiement continu d’applications

Bamboo

  • Livraison continue, du code au déploiement
  • Rassemble les builds automatisés, les tests et les livraisons dans un workflow unique.
  • S’intègre avec Bitbucket.

Installation

Caractéristiques

Nom :  dosi11.devops.local        (172.16.71.53)
Alias : bamboo.devops.local          (-> dosi11)
OS :    Ubuntu Server 16.04.3 LTS
CPU :   x2
RAM :   4 GB
HD :    80 GB (thin provisioning)

Ajout des serveurs au domaine

  • Ajout du compte gregory.tabourin à ces groupes

Groupe domain local : “DOSI11_Administrators”
Groupe domain local : “Bamboo_Access”
Groupe domain local : “Bamboo_Admin”
Groupe domain local : “Bamboo_Create”
Groupe domain local : “Bamboo_Create_Repository”

  • Le reste de la procédure est identique à l’ajout du serveur DOSI01 au domaine.

Configuration du serveur PostgreSQL

  • Création de l’utilisateur et de la base de données sur DOSS01

sudo -u postgres -i

psql -t -P format=unaligned -c "CREATE ROLE bamboouser WITH LOGIN PASSWORD 'Tr0pComplique' VALID UNTIL 'infinity'";
psql -t -P format=unaligned -c "CREATE DATABASE bamboo WITH ENCODING='UTF8' OWNER=bamboouser CONNECTION LIMIT=-1";

exit

  • Modifier les autorisations d’accès

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

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

  • Redémarrage du service

sudo systemctl restart postgresql

Installation du serveur Bamboo

  • Création du répertoire $HOME pour l’utilisateur Bamboo

sudo mkdir /usr/local/bamboo
sudo chmod 744 -R /usr/local/bamboo
sudo chown -hvR bamboo /usr/local/bamboo

sudo apt install sssd-tools
sudo sss_override user-add bamboo -h /usr/local/bamboo -s /bin/bash -c "Bamboo User" -n "Bamboo User"
sudo systemctl restart sssd

  • Redémarrer et se loguer en tant que bamboo

 

  • Installation de Java

sudo mkdir /usr/bin/jdk
sudo mv /usr/local/bamboo/jdk-8u152-linux-x64.tar.gz /usr/bin/jdk/8u152
cd /usr/bin/jdk
sudo tar zxvf jdk-8u152-linux-x64.tar.gz

  • Configuration de JAVA_HOME

sudo nano /etc/profile

   JAVA_HOME=/usr/bin/jdk/jdk1.8.0_152

export JAVA_HOME

  • Téléchargement

sudo mkdir /opt/atlassian
cd /opt/atlassian
sudo wget https://www.atlassian.com/software/bamboo/downloads/binary/atlassian-bamboo-6.2.2.tar.gz
sudo tar zxvf atlassian-bamboo-6.2.2.tar.gz

  • Modification des permissions

sudo chown bamboo: /opt/atlassian -R

  • Création du lien current

ln -s atlassian-bamboo-6.2.2/ current

  • Configuration du script de démarrage

sudo apt-get install daemon

sudo nano /etc/init.d/bamboo

   #!/bin/sh
   set -e
   ### BEGIN INIT INFO
   # Provides: bamboo
   # Required-Start: $local_fs $remote_fs $network $time
   # Required-Stop: $local_fs $remote_fs $network $time
   # Should-Start: $syslog
   # Should-Stop: $syslog
   # Default-Start: 2 3 4 5
   # Default-Stop: 0 1 6
   # Short-Description: Atlassian Bamboo Server
   ### END INIT INFO
   # INIT Script
   ######################################

   # Define some variables
   # Name of app ( bamboo, Confluence, etc )
   APP=bamboo
   # Name of the user to run as
   USER=bamboo
  # L ocation of application's bin directory
   BASE=/opt/atlassian/current

   case "$1" in
   # Start command
   start)
      echo "Starting $APP"
      daemon --user=bamboo export BAMBOO_HOME=/etc/usr/bamboo; &> /dev/null
      daemon --user=bamboo /opt/atlassian/current/bin/start-bamboo.sh &> /dev/null
      ;;
   # Stop command
   stop)
      echo "Stopping $APP"
      daemon --user=bamboo /opt/atlassian/current/bin/stop-bamboo.sh &> /dev/null
      echo "$APP stopped successfully"
      ;;
   # Restart command
   restart)
      $0 stop
      sleep 5
      $0 start
      ;;
   *)
   echo "Usage: /etc/init.d/$APP {start|restart|stop}"
   exit 1
   ;;
   esac

   exit 0

  • Modification des permissions

sudo chmod a+x /etc/init.d/bamboo

  • Initialisation

update-rc.d bamboo defaults

  • Redémarrer

 

  • Aller à http://bamboo.devops.local:8085 pour lancer l’assistant de configuration

 

  • Configuration LDAP

nano /usr/local/bamboo/xml-data/configuration/atlassian-user-custom.xml

<atlassian-user>
   <repositories>
      <!-- LDAP repository -->
      <ldap key="ldapRepository" name="Active Directory LDAP Repository" cache="true">
         <host>dodc01.devops.local</host>
         <port>389</port>
         <securityPrincipal>CN=zzbindldap,OU=Service accounts,OU=DevOps,DC=devops,DC=local</securityPrincipal>
         <securityCredential>motdepasse</securityCredential>
          <securityProtocol>plain</securityProtocol>
          <securityAuthentication>simple</securityAuthentication>
         <baseContext>dc=devops,dc=local</baseContext>
         <baseUserNamespace>OU=Users,OU=DevOps,DC=devops,DC=local</baseUserNamespace>
         <baseGroupNamespace>OU=Groups,OU=DevOps,DC=devops,DC=local</baseGroupNamespace>
         <userSearchAllDepths>true</userSearchAllDepths>
         <groupSearchAllDepths>true</groupSearchAllDepths>
         <usernameAttribute>sAMAccountName</usernameAttribute>
         <userSearchFilter>(&(objectClass=person)(|(memberOf=CN=Bamboo_Access,OU=Apps,OU=Groups,OU=DevOps,DC=devops,DC=local)(memberOf=CN=Bamboo_Admin,OU=Apps,OU=Groups,OU=DevOps,DC=devops,DC=local)(memberOf=CN=Bamboo_Create,OU=Apps,OU=Groups,OU=DevOps,DC=devops,DC=local)(memberOf=CN=Bamboo_Create_Repository,OU=Apps,OU=Groups,OU=DevOps,DC=devops,DC=local)))</userSearchFilter>
         <firstnameAttribute>givenName</firstnameAttribute>
         <surnameAttribute>sn</surnameAttribute>
         <emailAttribute>mail</emailAttribute>
         <groupnameAttribute>cn</groupnameAttribute>
         <groupSearchFilter>(&(objectClass=group))</groupSearchFilter>
         <membershipAttribute>member</membershipAttribute>
      </ldap>
      <!-- Default bamboo user repository -->
      <hibernate name="Hibernate Repository" key="hibernateRepository" description="Hibernate Repository" cache="true"/>
   </repositories>
</atlassian-user>

  • Redémarrer le service

/opt/atlassian/atlassian-bamboo-6.2.2/bin/stop-bamboo.sh
/opt/atlassian/atlassian-bamboo-6.2.2/bin/start-bamboo.sh

  • Aller à http://bamboo.devops.local:8085 et configurer les groupes AD

 

  • 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 $JAVA_HOME/bin/keytool \
   -import \
   -alias ca \
   -keystore $JAVA_HOME/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 mkdir /var/bamboo
sudo chown bamboo: /var/bamboo -R

$JAVA_HOME/bin/keytool \
   -genkey \
   -alias tomcat \
   -keyalg RSA \
   -sigalg SHA256withRSA \
   -keystore /var/bamboo/ssl-keystore \
   -dname "CN=bamboo.devops.local, OU=Ops, O=DevOps, L=Geneva, ST=Geneva, C=CH"
   -ext "SAN=dns:bamboo.devops.local"

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

$JAVA_HOME/bin/keytool \
   -certreq \
   -keyalg RSA \
   -alias tomcat \
   -file certreq.csr \
   -keystore /var/bamboo/ssl-keystore \
   -dname "CN=bamboo.devops.local, OU=Ops, O=DevOps, L=Geneva, ST=Geneva, C=CH" \
   -ext "SAN=dns:bamboo.devops.local"

  • Importer le certificat

nano bamboo.cer

$JAVA_HOME/bin/keytool \
   -import \
   -alias tomcat \
   -file bamboo.cer \
   -keystore /var/bamboo/ssl-keystore

  • Modifier le fichier de configuration

nano /opt/atlassian/atlassian-bamboo-6.2.2/conf/server.xml

<Connector

      port="8443"

      maxThreads="150" minSpareThreads="25"
      connectionTimeout="20000"
      disableUploadTimeout="true"
      acceptCount="100"

      enableLookups="false"
      maxHttpHeaderSize="8192"

      useBodyEncodingForURI="true"
      URIEncoding="UTF-8"

      scheme="https" secure="true" SSLEnabled="true" sslProtocol="TLS"
      clientAuth="false"

      keystoreFile="/var/bamboo/ssl-keystore"
      keystorePass="motdepasse"
      keyAlias="tomcat"
   />

  • Redémarrer les services

/opt/atlassian/atlassian-bamboo-6.2.2/bin/stop-bamboo.sh
/opt/atlassian/atlassian-bamboo-6.2.2/bin/start-bamboo.sh

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

 

  • Lier Automate à Bitbucket

 

  • Contrôler le résultat