Hello les moules !
Voici Simple Provisioning System, un tout petit programme de moins de 200 lignes de code en c++11 qui permet de remplir une machine par ssh. N'ayant pas vraiment d'infrastructure je ne voulais pas sortir l'artillerie lourde. Ma problématique était que je voulais simplement un moyen de reproduire facilement une installation avec sa configuration ou la sauvegarder. Pas d'opérations très compliquées. De plus, je n'avais plus envie de maintenir une documentation qui de toutes manières ressemblait peu ou prou au script d'installation et vice-versa.
C'est pourquoi j'ai écrit sps, un truc simple et qui le restera (pas d'évolution dessus) parce qu'il me convient et que je n'aurais pas le temps de m'occuper d'éventuelles contributions.
Il vous suffit donc d'écrire une documentation au format Markdown avec juste quelques règles et ensuite n'exécuter que quelques parties de cette documentation. Les parties exécutées sont les sections de niveau 1 sélectionnées dans les paramètres fournies à sps.
# Choix du langage
Posté par auve . Évalué à 5.
Salut,
C'est chouette de partager ton code avec d'autre dans l'espoir qu'il soit utile. Merci !
Petite question : pourquoi avoir choisi C++ pour un programme qui consiste essentiellement à manipuler des chaînes de caractères puis à les passer au shell ? Il me semble que ce n'est pas connu pour être une des grandes forces du langage.
[^] # Re: Choix du langage
Posté par soohwa . Évalué à 5.
La réponse est assez simple : je suis un peu old-school et je ne connais pas bien les autres langages même si je sais qu'ils existent.
Alors si cela peut donner des idées à d'autres personnes pour en reprendre le principe général (parser une doc pour en exécuter une partie) et l'implémenter dans d'autres langages ce serait plutôt cool et probablement mieux que ce que j'ai fait.
# Programmation littéraire
Posté par . . Évalué à 5.
Vous devriez jeter un œil sur les outils de programmation littéraire, inventée par Donald Knuth. TeX a été écrit en utilisant cette technique (PDF). Il existe aussi des outils pour le C++.
Pour citer Knuth :
[^] # Re: Programmation littéraire
Posté par Serge Julien . Évalué à 3.
[HS] Ce concept a été inspiré à Donald Knuth par la lecture d'un article de Pierre-Arnoul de Marneffe, que certains lecteurs de ce site ont peut-être connu comme professeur à l'Université de Liège.
[^] # Re: Programmation littéraire
Posté par Nicolas Boulay (site web personnel) . Évalué à 1.
Je dirais que ce genre de programmation n'a jamais vraiment percé. Ce qui devient à la mode, c'est l'ingénierie par les modèles : https://fr.wikipedia.org/wiki/Ing%C3%A9nierie_dirig%C3%A9e_par_les_mod%C3%A8les
"La première sécurité est la liberté"
[^] # Re: Programmation littéraire
Posté par . . Évalué à 2.
Il n'y a pas beaucoup de programmes écrits avec cette technique en effet.
Je la trouve adaptée à l'écriture de certains types de programmes, de référence notamment. Tel que TeX, qui est complexe mais dont j'ai trouvé la lecture très claire. LCC, un compilateur C portable a aussi été écrit dans un langage littéraire. Ainsi que le livre "C Interfaces and Implementations" de David Hanson.
Aussi, c'est que cela demande beaucoup de travail pour créer un programme littéraire bien écrit, plus qu'un programme classique. Et les mises à jour ne sont pas simple à suivre : on ne peut pas se permettre de sortir une nouvelle édition toutes les semaines ou tous les mois.
[^] # Re: Programmation littéraire
Posté par soohwa . Évalué à 0.
C'est un lien très intéressant, merci.
# c++11
Posté par David Demelier (site web personnel) . Évalué à 4.
Du coup comme tu as dit que tu faisais du C++11, je me permet de commenter deux trois choses :
Mis à part ça, code moderne :)
git is great because linus did it, mercurial is better because he didn't
[^] # Re: c++11
Posté par soohwa . Évalué à 1.
Corrigé, merci :-)
En fait, je n'avais pas envie d'utiliser des substr …
# Ansible
Posté par chdorb . Évalué à 8.
Ansible correspond pourtant bien à ton besoin. En tout cas je l'utilise pour exactement le même besoin.
Très vite mis en place, un échange de clé, python sur la machine distante et c'est parti !
Un playbook simple se lit comme une doc, ça n'est pas du Markdown mais ça va bien.
C'est un peu plus lourd que tes 200 lignes de code en C++, mais ça n'est pas l'artillerie lourde genre Puppet avec des agents partout.
[^] # Re: Ansible
Posté par Tangi Colin . Évalué à 2.
Ansible est clairement plus simple que puppet ou chef,le coté déploiement par ssh évite d'avoir des clients installés sur les cibles. Par contre niveau syntaxe et organisation des différentes fichiers c'est pas toujours ce qu'il y a de plus simple, le yaml permet pas mal de syntaxe différentes, les playbooks sont vraiment de qualité variables (très peu on des dry-run par exemple). Et malheureusement ça nécessite d'avoir du python sur la cible, ce qui n'est pas gênant pour du x86 mais beaucoup plus si on veut l'utiliser dans l'embarqué.
[^] # Re: Ansible
Posté par barmic . Évalué à 3.
Bof je trouve pas ça hyper lisible et la gestion du flow de contrôle, des variables, etc n'est pas très agréable je trouve.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Ansible
Posté par chdorb . Évalué à 1.
C'est pour ça que j'ai parlé de playbook «simple», effectivement pour des choses complexes avec des appels de rôles dans tous les sens, des variables qui peuvent être à tous les niveaux (group_vars, hosts_vars, internes aux rôles ou aux playbooks, extra vars etc.) ça devient effectivement difficile. Mais du coup c'est beaucoup plus puissant.
En fait je voulais juste dire que pour faire la même chose que SPS, il y avait déjà Ansible et que ça va bien.
# fabric
Posté par François GUÉRIN (Mastodon) . Évalué à 4.
J'utilise fabric pour faire la même chose, en python.
Je code des commandes :
Ensuite je les execute:
$ fab -H monserveur apache_setup
Et apache2 est installé sur le serveur "monserveur"
Voila… un fabfile et c'est réglé !
[^] # Re: fabric
Posté par barmic . Évalué à 4.
J'en ai profité pour aller voir. Il y a une version d'Invoke et Fabric2 est en cours de développement. C'est super !
Pour ceux qui ne connaissent pas. Fabric1 c'est une bibliothèque python qui va permettre d’exécuter des actions sur un serveur donné (des fois juste avec un exec, comme dans l'exemple au dessus, des fois avec des syntaxes plus pythonique, comme le changement d'utilisateur qui se fait avec un
with
).La version 2 de fabric est une réécriture dans la quelle ils séparent la partie gestion de tâche/exécution de commande dans une bibliothèque Invoke et la partie SSH dans fabric2.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: fabric
Posté par flan (site web personnel) . Évalué à 2. Dernière modification le 27 octobre 2016 à 23:05.
Malheureusement, fabric2 ne bouge pas beaucoup (du tout ?). Ils ont lancé le projet depuis quelques années, et il n'est toujours pas utilisable.
De plus, fabric et ansible sont sur le même créneau (code Python lancé depuis le poste d'admin et connexion SSH vers les machines administrées), je ne suis pas sûr qu'il y ait de la place pour les deux outils (sachant qu'Ansible a plus ou moins raflé le marché).
Bref, je trouve que parier sur fabric est plus risqué que parier sur Ansible comme techno pérenne.
Note : ce jugement ne porte absolument pas sur les qualités et défauts des deux outils, uniquement sur un des questions les plus importantes pour moi : est-ce que mon investissement sera toujours d'actualité dans 5 ans ? Je pense que fabric sera oublié, contrairement à Ansible.
[^] # Re: fabric
Posté par barmic . Évalué à 3.
Alors ansible, à part si tu cherche à créer tes propres modules, le fais qu'il soit en python ne concerne pas l'utilisateur.
Par contre, fabric est de la vieille école. Il fonctionne par action et pas par description. Et c'est ce second mode qui marche bien pour la gestion de configuration. Je vois plus fabric comme un outil pour développeur. Pour moi il concurrence plus capistrano.
Mais oui si le développement est au ralenti, il est peut-être en fin de vie.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.