Ansible, la voie de l’automatisation

Après m’être étendu sur Docker et sa facilité de déploiement pour les stacks complexes, je vais vous parler d’Ansible pour rajouter une couche d’automatisation aux déploiements.

La première chose à faire est de vous mettre un lab à disposition, quelques VMs feront l’affaire, et comme d’habitude je me concentrerai sur des CentOs 7+.

Ansible est une solution en ligne de commande qui ne s’appuie pas sur l’installation d’agent sur le machines cibles, mais bosse uniquement par la voie (royale) de SSH. Pour cela Ansible est bien plus facile a appréhender que les concurrents (Puppet, Chef, CFEngine, …) et tout aussi puissant.

Avant de commencer, je suis obliger de vous mettre en garde sur le développement rapide (trop) d’Ansible et des versions associées de python. Une installation via les package risque de vous causer quelques désagréments.
Continue reading

Failed to open \EFI\BOOT\grubx64.efi – Not Found

Après une installation d’une Centos 7.2 sur une clé USB sur un HP EliteBook, ou après un yum upgrade qui touche au kernel (donc au grub) je me suis retrouvé avec un boot qui m’affichait :

Failed to open \EFI\BOOT\grubx64.efi - Not Found
Failed to load image \EFI\BOOT\grubx64.efi: Not Found
start_image() returned Not Found

La faute à EFI/UEFI et secureboot qui s’intercale entre BIOS et BootLoader (Grub dans mon cas). Je vous passe la littérature abondante qui traite des différents moyens de contourner cette brique, mais je traiterai directement du moyen de récupérer un boot fonctionnel.

On commence par récupérer une distribution linux live qui bootera proprement puis direction la console.

Après un passage en root on va récupérer les informations de la clé usb (ou du hdd).

[liveuser@localhost liveuser]# su
[root@localhost liveuser]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sdb: 62.7 GB, 62746787840 bytes, 122552320 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic 
 3      1435648    122550271   57.8G  Linux LVM       

Ensuite on monte la partition qui contient l’EFI

Continue reading

Créer un conteneur Docker avec Dockerfile et le publier sur DockerHub

Après un billet sur la prise en main de Docker, en voilà un autre qui va vous détailler:

  • la création d’un conteneur
  • la modification de celui-ci
  • la publication de votre conteneur  sur le Hub de Docker

Avant d’aller plus loin commencez par vous inscrire sur DockerHub.

Un conteneur = Dockerfile

Continue reading

Prise en main de Docker

J’ai longtemps éludé le sujet Docker mais il est grand temps que je vous en parle.

Docker kesako… c’est une implémentation des vieux LXC (Linux Containers) mais qui, cette fois ci, a trouvée son public.

Dans les faits:

  • c’est toujours de la virtualisation
  • c’est toujours étanche par rapport à son host
  • On gagne du temps dans la configuration et le déploiement
  • On découvre plein de trucs
  • On partage le kernel !
  • On économise de la ram

Plutôt qu’un long discours, passons à l’installation. Je serais sur une CentOS en version 7 pour ce tutoriel, mais une Debian voir un Raspberry ça fera l’affaire.

Installation

Continue reading

CentOS configuration lan/lab de RPIs

Après avoir créer les images custom des RPI il va falloir les connecter entre eux.  Pour cela on va créer un lan qui va les accueillir avec :

  • Un linux qui fera passerelle
  • Un dhcp local
  • Un dns local
  • Une route vers le net

Centos 7 et ses noms d’interfaces …

Commençons par cibler les interfaces en jeu:

  • le lan RPI sera de type câble Ethernet (eth0)
  • internet viendra du Wifi (wlan0)

Pour lister les interfaces de la machine :

[root@CentOS#]ip addr show

Oups, pas d’interface eth0 comme attendu mais un ifcfg-enp0s31f6 .

On va donc renommer l’interface et pour cela il faut avoir l’adresse MAC de la carte réseau visible avec la précédente commande et du genre : link/ether xx:xx:xx:xx:xx:xx
Continue reading