Menu principal

Statut de la page

Introduction au pipeline de Jenkins

J'utilise Jenkins depuis quelques années. Un peu comme tout le monde je suis passé à la 2 au moment de sa sortie. Comme beaucoup, je n'ai pas vraiment vu de grosse différence avec les versions 1.6xx (si ce n'est que mes jobs ne fonctionnait plus mais ça, c'est une autre histoire). Au bout d'un moment je suis tombé sur une pépite : les pipeline/workflow de Jenkins. Mais avant de parler de ça, je vais vous parler de ce que je faisais traditionnellement. Création de job et parallélisation Pour résumé, je gère énormément d'installations ou de compilation en tout genre et Jenkins me sert d'esclave personnel : il lance des playbooks Ansible, des shells Unix ou des compilations maven (beurk !). Je colle généralement ces scripts dans le repository Git des projets et je les appelle depuis Jenkins. Le petit problème est que j'ai quand même [...]
Lire la suite
Vus : 8688
Publié par Yannig : 63

Chiffrement/déchiffrement des mots de passe de vos scripts gérés avec Ansible

Pour les paresseux, un exemple d'implémentation est disponible à l'adresse suivante : https://github.com/Yannig/yannig-ansible-playbooks/tree/master/scripts-vault Mais pourquoi chiffrer d'abord ? L'automatisation c'est bien mais des fois vous pouvez rencontrer quelques petits problèmes. Un que je rencontre régulièrement vient de la présence de mot de passe en clair dans mes scripts d'administration WebLogic/Oracle etc. Pour comprendre le problème, prenons l'extrait de playbook Ansible suivant :- name: "Dépot d'un template de création" template: src: [...]
Lire la suite
Vus : 4015
Publié par Yannig : 63

Ecriture de filtre Ansible

Écriture de filtre avec Ansible Ansible est un merveilleux outils pour gérer la mise à jour de vos serveurs. Un gros avantage de ce produit et de permettre d'étendre ses capacités assez facilement à l'aide d'un mécanisme de plugin. Vous pourrez retrouver un petit article que j'avais écrit sur la notion de module à l'emplacement suivant : Écriture de module avec ansible. Aujourd'hui, je vais vous présenter un autre mécanisme Ansible : les filtres. Pour info, la notion de filtre vient du monde Jinja. Comme ce moteur est au coeur du fonctionnement d'Ansible, il est donc très facile d'utiliser les mêmes mécanismes chez ce dernier. Dans ce qui va suivre, nous allons voir comment écrire un filtre spécifique et [...]
Lire la suite
Vus : 853
Publié par Yannig : 63

Prototypage d'infra à l'aide de Docker et Ansible

J'utilise depuis quelques temps l'outil Ansible pour gérer mes environnements. Il y a peu, j'ai eu besoin de mettre en place des tests automatiques. Comme toujours, c'est posé la question de savoir où lancer ces fameux tests. La réponse classique aurait de se baser sur des VM mais comme d'habitude, j'avais des difficultés à avoir ces machines : Il faut demander une entrée DNS ; Il me faut une adresse IP ; Il faut l'installer ; Attention, l'hyperviseur est bientôt saturé ; Mais qui va payer ? Mais qui va sauvegarder ? Bref, comme toujours, la VM de test est presque aussi compliquée à installer qu'une VM de production et je n'arrive pas à expliquer aux gens qu'il s'agit d'un besoin jetable. Dans ce cadre, j'ai repensé aux quelques tests que j'avais [...]
Lire la suite
Vus : 1214
Publié par Yannig : 63

Installation de docker et utilisation avec Ansible

Pour fêter la sortie d'Ansible v2, je vous propose un petit article sur l'utilisation de mes deux passe-temps du moment : Docker et Ansible Le premier est très à la mode dans le monde de l'intégration continue. Sans rentrer dans les détails, j'y ai vu un moyen assez simple de faire des tests sur plusieurs types de distribution sans avoir à trop me casser la tête. D'autant que la dernière version d'Ansible embarque un connecteur natif docker. Nous allons donc voir comment faire fonctionner tout ceci ensemble. Installation de docker De ce côté, rien de particulier à signaler. Sous Ubuntu, il vous faudra rajouter une source (en fonction de votre version d'Ubuntu) et sous CentOS, il vous faudra rajouter le repository extras dans vos dépendances. Ci-dessous les instructions sous Ubuntu : Suivre les instructions dans l'article  [...]
Lire la suite
Vus : 2234
Publié par Yannig : 63

Gestion de l'option changed_when dans Ansible

Petite astuce rapide. Sous Ansible, j'ai voulu supprimer le contenu d'un répertoire (suite à la décompression d'une archive) et je voulais faire le ménage dedans sauf une certaine liste de fichier. Pour se faire, je passe pas une commande shell et un register pour pouvoir ensuite itérer sur ces fichiers. Le playbook Ci-dessous mon playbook :- name: "Récupération fichier à supprimer du répertoire" shell: ls -1 /tmp/emplacement/*.xml | grep -v un-fichier.xml | cat register: files_to_remove - name: "Ménage dans le répertoire." file: name={{item}} state=absent with_items: [...]
Lire la suite
Vus : 1088
Publié par Yannig : 63

Activation du cache Ansible par fichier JSON

Lorsque vous lancez Ansible, vous avez déjà dû remarquer que le démarrage peut prendre un certain temps : il s'agit de la phase de récupération des informations sur la machine. Ceci se manifeste au début du lancement d'un playbook sous la forme suivante :GATHERING FACTS ******************************************* ok: [localhost] Pendant cette phase, Ansible va collecter tout un tas d'indicateur qui vont caractériser votre machine. On va y retrouver pêle-mêle le type de processeur, les disques de la machine, les adresses IP etc. Seul petit problème cette phase prend quelques secondes (voir plus certaines fois) et peut devenir vite agaçante dans le cas où vous mettez au point vos procédures d'installation. Heureusement, les petits gars d'Ansible ont introduit un petit mécanisme de cache de ces éléments (des facts dans le jargon Ansiblien). Vous pouvez effectivement stocker ça dans un serveur [...]
Lire la suite
Vus : 1089
Publié par Yannig : 63

Écriture de module avec Ansible

Depuis quelques temps, je m'étais mis en tête de vouloir tester l'espace disque disponible. En effet, il m'arrive assez régulièrement d'avoir un bon gros message d'erreur plus d'espace disponible alors que je viens de faire la moitié de l'installation. Partant de ce constat, je me suis dit qu'il vaudrait mieux avoir une erreur franche en début d'exécution plutôt qu'au milieu de mon installation (sachant que généralement je peux avoir un truc à moitié bancal que je dois supprimé pour avoir une installation correcte). J'ai donc cherché un moyen de tester la quantité de disque restant pour un emplacement donné évitant ainsi ce type de désagrément. Petit problème, je n'ai rien trouvé me permettant de faire ce test simplement. N'étant pas non plus [...]
Lire la suite
Vus : 2506
Publié par Yannig : 63

Comparaison de la gestion des FS avec Puppet et Ansible

Suite de mes aventures avec Ansible : aujourd'hui c'est du système Linux. Les données du problème : je veux pouvoir gérer le LVM Linux et retailler mes FS à la demande. La recette sous Puppet Sous Puppet, en utilisant un fichier yaml/Hiera, l'écriture de tout ceci se ferait avec quelque chose de ce genre : --- classes: ['lvm'] lvm::volume_groups: rootvg: physical_volumes: - /dev/sda2 logical_volumes: tmp: size: 2G mountpath: /tmp datavg: physical_volumes: - /dev/sdb logical_volumes:  [...]
Lire la suite
Vus : 1705
Publié par Yannig : 63

Premier pas avec Ansible et gestion du sudo

Et voilà, à peine je commence à maîtriser le langage autour de Puppet qu'on me demande de me pencher sur Ansible. Pour les personnes qui se sauraient pas ce que font ces deux produits, il faut savoir qu'ils appartiennent à la mouvance du DevOps qui consiste à gérer son infrastructure par du code (Dev) plutôt que par un opérateur (Ops) également appelé être humain (ou bipède, interface chaise-clavier etc.). Installation de Ansible sur votre machine La différence entre les deux produits se trouve au niveau de leur mode de fonctionnement : Puppet fonctionne à l'aide d'agent alors que Ansible s'appuie sur le protocole SSH et l'interpréteur python. Un petit bémol tout de même, si vous utilisez des versions antérieurs à Python 2.5, vous aurez besoin d'une librairie de gestion du json dans python. Comme il se trouve que les versions de RHEL 5.x sont concernées, ça [...]
Lire la suite
Vus : 5454
Publié par Yannig : 63
Powered by BilboPlanet