Installing DevStack

DevStack is a project whose purpose is to quickly deploy a development and testing environment for OpenStack. DevStack supports Ubuntu 16.04/17.04, Fedora 24/25, CentOS/RHEL 7, as well as Debian and OpenSUSE. In this article, we will install the Ocata version of OpenStack. DevStack installs the following modules by default: Keystone: Identity service. Nova: Virtualization management module. Cinder: Storage. Neutron: Network module. Horizon: Web interface. Warning: DevStack is not designed to be restarted. It cannot be used as a production environment. ...

June 7, 2018 · 3 min · Flavien Jourdren

Building a REST API

The principle is to break down the application into resources that clients can use through HTTP requests. This architecture for distributed systems was created in 2000 by Roy Fielding in his doctoral thesis. The benefit of a REST API is making the application’s resources usable by all its components. This enables implementing microservices, portability, and giving external parties access to certain features. Resource Identification by URL Each resource must be identified via a URL that is logically structured. Resource names should use the plural form to indicate that without filtering parameters, all elements are displayed. When filtering, we keep the plural, implying that we retrieve all elements then return only the filtered one. ...

June 6, 2018 · 3 min · Flavien Jourdren

Continuous Deployment with Docker and Jenkins

The goal of this tutorial is to set up continuous and automatic deployment of an application with Jenkins on a Docker architecture. Continuous and automatic deployment is one of the key concepts of the DevOps movement. The purpose is to foster application industrialization by enabling a system to: test the application, build the container image, and deploy it to production. Prerequisites: Docker Docker-compose How It Works Our deployment system will use 4 layers to deploy the application to production: ...

April 14, 2018 · 5 min · Flavien Jourdren

Load Balancing Fundamentals

Load balancing is one of the essential concepts for building architectures that can handle heavy traffic and are resilient to failures. It is a set of techniques for distributing workload across different computers in a group. The use cases for load balancing are increasingly numerous, especially with the advent of cloud computing and decentralized data architectures. These techniques are used in: supercomputers, high-traffic HTTP services, databases requiring permanent access, big data, neural network training, etc. ...

April 7, 2018 · 3 min · Flavien Jourdren

Installing Jenkins

Jenkins is an open source continuous integration tool developed in Java. Adding Repositories to Install Java 8 Adding repositories: echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list Adding the package verification certificate: apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 Updating repositories: apt-get update Installing Java 8 Install the Java 8 package and accept its terms of use: apt-get install oracle-java8-installer Installing Jenkins We will use wget to download the Jenkins .war file: ...

April 6, 2018 · 1 min · Flavien Jourdren

MySQL Master-Master Replication with Load Balancing

This article covers the procedure for setting up a MySQL Master-Master (and Master-Slave) server with a load balancing system using the round robin algorithm (via HAProxy). In our example, we will have three servers: one managing load balancing (named SRV-LBSQL with IP address 10.0.0.100) and two MySQL servers connected to each other (named SRV-MYSQL01 and SRV-MYSQL02 with IP addresses 10.0.0.1 and 10.0.0.2 respectively). Each MySQL server will process SQL queries in turn. The database servers will replicate data between each other using a dual Master-Slave relationship. ...

March 28, 2018 · 5 min · Flavien Jourdren

Introduction to Vagrant

Vagrant is an open source solution designed for automatic configuration of virtual machines and containers. Vagrant can configure RAM amount, CPU count, network settings, and hostname. It can then automatically execute configuration management scripts (Ansible, Chef, Puppet, etc.). These scripts handle package installation and configuration via SSH. The first version was released on March 8, 2010, and was developed by Mitchell Hashimoto and John Bender in Ruby. ...

March 27, 2018 · 3 min · Flavien Jourdren

Setting Up an Ethereum Test Environment on Linux

I’ve been interested in the Ethereum blockchain for a while now, particularly the “Smart Contract” feature. A smart contract is a script deployed on the blockchain that miners execute in exchange for a variable amount of money depending on the script’s content. But to test these smart contracts, you need to set up a private Ethereum network. This tutorial requires a minimal understanding of the Ethereum blockchain and “Proof of Work” systems. ...

March 26, 2018 · 2 min · Flavien Jourdren

Introduction to Ansible

Ansible is an open source configuration management solution that takes the form of a script performing user-defined actions via SSH on one or more machines. It automates tasks like installations across many machines while customizing configurations. The software has numerous extensions that make it almost never necessary to use raw Linux commands in scripts. All these modules also allow Ansible to test whether a task needs to be executed based on the machine’s state – for example, if instructed to start a process that is already running, Ansible will skip it and move to the next action. ...

March 25, 2018 · 2 min · Flavien Jourdren

Setting Up a Git Remote

The Remote is Git’s network backup system. GitHub is nothing more than a Remote manager with a Web interface. The connection uses the SSH protocol. Installing Git on the Server sudo apt-get install git Creating the Git User The “git” user will allow us to interact with the remote repository. sudo adduser --system --shell /bin/bash --group --disabled-password --home /var/git/ git Then change the owner of the “/var/git” directory, which was created during git installation and is the home directory of the git user. ...

March 22, 2018 · 2 min · Flavien Jourdren