Le Blog Utux

HTTP 200 GET /

Wikipedia nous spamme encore

Rédigé par uTux 4 commentaires

Au début des années 2000 on pouvait trouver des hébergements web gratuit moyennement l'ajout de bandeaux publicitaires. Si vous êtes nostalgique de cette époque, remerciez Wikipedia qui a décidé de remettre ça en couvrant l'écran d'horribles publicités agressives et omniprésentes, mendiant de l'argent au visiteur:

Wikipedia spam

Je ne lis même pas, ça m'agace. Vous allez me dire que j'exagère, Wikipedia c'est le savoir de l'humanité, libre et gratuit, et s'il venait à disparaître ce serait une catastrophe. C'est vrai, mais en quoi Wikipédia est plus légitime qu'un autre ? C'est aussi l'argument utilisé par la presse en ligne, désactive uBlock et bouffe notre pub ou crève, on a des salariés à faire vivre et on veut pas mourir. Pourrir l'expérience utilisateur avec de mauvaises pratiques publicitaires est impardonnable, il ne fait qu'agacer les visiteurs et inciter les autres à faire pareil.

Du coup y'en a marre, Wikipedia tu vas dans uBlock, ça t'apprendra le respect:

###frb-inline
###frb-nag

En espérant qu'il n'y en a pas d'autres...

En faire trop sur blablacar ?

Rédigé par uTux 2 commentaires

Un petit billet hors sujet pour parler d'un phénomène que je trouve intriguant. Étant toujours en panne de voiture je redécouvre les joies du covoiturage avec blablacar, le site de partage que tout le monde connait et dont les tarifs ont beaucoup augmenté depuis ma première visite (2014), les joies du monopole, mais ce n'est pas le sujet.

Qu'est-ce que le covoiturage ? C'est avant tout un partage. Le conducteur partage sa voiture et les passagers partagent le coût du voyage. C'est un système entre particuliers, un arrangement plus rentable économiquement que le train (dont le coût du billet est exorbitant), plutôt convivial et écologique.

Il y a bien entendu des règles de base qui tiennent du savoir vivre: communiquer rapidement les bonnes informations à ses compagnons, être amical, faire preuve de souplesse dans vos horaires ou trajets si cela est possible, etc. Mais il y a une chose plutôt récente que j'ai remarqué, c'est que certaines personnes prennent cela beaucoup trop au sérieux. L'exemple que j'ai en tête c'est le conducteur qui vous confirme 10 fois par SMS que votre trajet est validé (vous le savez déjà), vous propose d'office de venir vous prendre là où ça vous arrange (alors que vous n'avez rien demandé), vous fait presque des courbettes ce qui en soit est plutôt gentil mais on a l'impression d'être dans une relation entreprise - client alors que ce n'est pas le cas, nous sommes deux particuliers qui s'arrangent pour partager un voyage.

Faut-il y voir une course aux étoiles ? Car oui nous sommes jugés à l'aide d'un système de notation qui peut d'abord paraître légitime vu qu'on voyage la plupart du temps avec des inconnus mais qui à mon avis s'étend un peu plus. On peut juger la conduite, la ponctualité, l'humeur mais mon exemple précédent semble indiquer qu'il y a d'autres critères. On juge le service rendu voire la personne elle-même et on créé une concurrence entre les usagers, une uberisation ou macronisation du service ce qui à mon avis va un peu trop loin.

Dans le cas où je serai amené à utiliser le service en tant que conducteur, ma philosophie serait la suivante: je conduits bien, je suis fiable, ponctuel, je vous donne toutes les infos nécessaires et vous tient au courant en cas de changement, mais je considère mes passagers comme mes égaux et non comme des clients. Je ne leur vend pas un service, c'est un échange de bons procédés entre particuliers.

En tant que passager, je n'ai jamais eu de mauvaise surprise. Si le chauffeur est à l'heure et conduit bien, je mets un 5/5. Si le courant ne passe pas bien ou si la conduite n'est pas idéale, je m'abstiens de noter et ce n'est arrivé qu'une seule fois.

Conclusion ? En fait non, ce n'est qu'une observation, je ne prétends pas avoir assez de statistiques ou même une qualification me permettant de livrer une explication à tout ceci car cela ferait appel à un mélange de sciences sociales et d'économie. Je livre simplement un constat et invite les gens à ne pas surjouer et rester eux-mêmes. Le covoiturage est à mon sens une des révolutions positives les plus importantes des 10 dernières années permises grâce à internet et on y fait beaucoup de rencontres sympathiques. Ne changez pas le système!

Ansible bonnes pratiques - Ep2

Rédigé par uTux Aucun commentaire

Dans l'article Configuration et déploiement avec Ansible je livrais déjà quelques conseils issus de mon expérience. J'ai eu la chance de continuer à travailler sur cette technologie en entreprise et je livre donc les compléments suivants:

  • L'idempotence est importante, c'est à dire la capacité à rejouer le même rôle une seconde fois. Si votre playbook doit créer un utilisateur (Unix ou mysql), pensez à ce qui peut se passer au bout de 6 mois. Imaginez qu'entre temps un collègue a changé le mot de passe root de Mysql et ne l'a pas mis à jour dans Ansible. Si vous rejouez le rôle, il sera écrasé et votre prod pourra potentiellement tomber. Pour cela restez à l'affut des options des modules, par exemple pour mysql_user on a update_password: on_create (on ne change le mot de passe que lors de la création du user, on y touche pas s'il existe déjà). C'est pareil avec le module user, si vous mettez le groupe "sudo", l'utilisateur sera mis dans ce groupe et retiré des autres! A moins d'utiliser l'option append: yes. Idempotence et anticipation!
  • La documentation et le guide des bonnes pratiques de Ansible recommandent de faire des playbook webservers.yml, dbservers.yml, etc. Mais en pratique il est parfois plus approprié d'avoir 1 playbook par serveur (srv-web-01.yml, srv-web-02.yml, etc). Car dans la réalité de la production on a pas toujours la même chose sur les serveurs.
  • Évitez d'éparpiller vos variables partout. Mettez-les dans le .yml du serveur si possible, puis dans le group_vars/groupe et c'est tout. Évitez les host_vars ou encore les roles/truc/vars car cela peut rapidement devenir un enfer de retrouver où sont définies les variables. Parfois il vaut mieux faire moins optimisé mais plus lisible.
  • Ne faites pas trop de groupes, car l'inventaire de base (constitué d'un fichier) peut rapidement devenir impossible à maintenir. On peut être tenté de faire des groupes par location géographique, par type d'environnement, par type d'applicatif, mais il sera alors chargé et illisible ce qui entrainera des erreurs dans les playbook (oubli de certains serveurs).
  • Soyez verbeux, utilisez le module debug pour afficher des informations. Pour les opérations sensibles utilisez le module pause permettant de valider l'exécution d'une opération, exemple: "Installation de Gluster 3.5.2-4 sur Debian Jessie, infra Paris. Enter pour valider ou CTRL+C pour annuler" (un cluster constitué de différentes versions de Gluster peut crasher, d'où l'intérêt de bien vérifier les versions).
  • Documentez clairement, faites des README dans chaque rôle expliquant leur utilité.
  • Faites des templates pour que vos collègues/successeurs aient des exemples de playbook utilisant vos rôles.

A l'année prochaine pour l'Ep3...

Ansible vault

Rédigé par uTux 2 commentaires

Ansible vault permet de stocker de manière chiffrée certaines informations, par exemple des variables utilisables dans vos playbooks.

Exemple d'information sensible lisible dans un playbook (sans vault):

---
- hosts: localhost
  remote_user: root
  tasks:
    - name: ensure 'utux' user exists
      user:
        name: utux
        append: yes
        groups: sudo
        shell: /bin/bash
        password: "{{ utux_passwd }}"
        generate_ssh_key: yes
        state: present
  vars:
    utux_passwd: "{{ 'secret' | password_hash('sha256') }}"

C'est lisible mais le mot de passe ('secret') se promène en clair, ce qui n'est pas top surtout si vous stockez votre projet sur un dépôt. La solution est d'utiliser ansible vault pour stocker dans un fichier sécurisé le mot de passe.

Création d'un vault:

$ mkdir -p group_vars/all
$ ansible-vault --ask-vault-pass create group_vars/all/vault

On y met une variable contenant notre mot de passe:

vault_utux_passwd: "{{ 'secret' | password_hash('sha256') }}"

Comme on peut le voir, notre fichier est bien chiffré:

$ cat group_vars/all/vault 
$ANSIBLE_VAULT;1.1;AES256
66623865616561613766343831613161343936636563373530643933323037333363363139666235
6135616635313332626637636466666236346365373037620a356436363133343161636239313133
36343539626564316431323135626533366462306631323761633330623231386434613734653934
3263383130386164620a663561363238303035336631326437643337646430653139643939363039
62663533626261373863323137316562643038613737333139303536623162633931

Et si on veut l'éditer:

$ ansible-vault --ask-vault-pass edit group_vars/all/vault

On adapte notre playbook:

---
- hosts: localhost
  remote_user: root
  tasks:
    - name: ensure 'utux' user exists
      user:
        name: utux
        append: yes
        groups: sudo
        shell: /bin/bash
        password: "{{ utux_passwd }}"
        generate_ssh_key: yes
        state: present
  vars:
    utux_passwd: "{{ vault_utux_passwd }}"

On exécute notre playbook:

ansible-playbook myuser.yml --ask-vault-pass

Ça marche, mais c'est un peu lourd car il faut taper le mot de passe vault à chaque exécution du playbook. Heureusement on peut le définir dans un fichier. On prendra soin de faire un gitignore pour ce fichier, voire même le placer dans un autre dossier:

$ echo "motdepassevault" > vault_passwd
$ echo "vault_passwd" >> .gitignore

On doit ensuite spécifier à Ansible où trouver ce fichier. Vous pouvez le définir au niveau du /etc/ansible/ansible.cfg ou dans le ansible.cfg local du projet (ce que je préfère faire, ainsi il est commité dans le dépôt et tout le monde a la bonne version):

# ansible.cfg
[defaults]
vault_password_file = vault_passwd

Vous devriez maintenant pouvoir exécuter votre playbook sans le --ask-vault-pass.

Semi-marathon Auray-Vannes 2017

Rédigé par uTux 2 commentaires

Après le semi-marathon Nantes 2017, j'ai décidé de m'attaquer à celui de Auray-Vannes. Malheureusement j'ai perdu l'enregistrement Strava, mon téléphone s'est éteint à cause de la pluie :( Du coup j'ai du attendre le classement officiel. Mes stats :

21,1km
01h54 5,4 min/km
Distance Temps réel Pace

C'est 4min de mieux que le semi-marathon de Nantes (~2h00 en temps réel)! Petit aperçu du parcours tiré de la page Strava d'une des participantes:

Auray Vannes
Le parcours.

Mon ressenti :

Énorme ambiance! La musique au départ, la foule qui nous acclame, les spectateurs dans le fossé sur quasiment tout le parcours, l'homme costumé en tortue qui lançait des bonbons dans son sillage, c'était quelque chose de fort!

Conscient qu'il y avait pas mal de dénivelé je visais un temps honorable de 2h, j'ai finalement fait 1h54 ce dont je suis plutôt satisfait! J'ai pu tenir un rythme constant du début à la fin et surtout je suis arrivé dans un état à peu près convenable alors que j'avais vraiment souffert lors du semi-marathon de Nantes 2017. J'attribue cet excellent résultat à plusieurs facteurs:

  • L'entrainement, j'ai beaucoup bossé pour améliorer mon cardio et appris à gérer certains éléments (ne pas trop se couvrir, bien boire et manger même si on ne ressent pas le besoin).
  • La météo, pas de soleil et un petit vent frais, ça facilite la gestion de son eau et ça aide à évacuer la chaleur du corps.
  • Les 370km à vélo sur les côtes bretonnes qui m'ont habitué à gravir les cotes, je n'ai pas senti les dénivelés alors que cela semblait affecter beaucoup d'autres participants.
  • Une bonne gestion de l'eau et la nourriture: je me suis forcé à boire et manger dès les premiers ravitaillements pour éviter "le mur" qui peut frapper si on gère mal même sur de petites distances.
  • L'effet de nouveauté du parcours et sa non-redondance, ça motive.

Les derniers km se sont fait sous la pluie, à chaque fois qu'un de mes pieds frappait le sol, de l'eau jaillissait de chaque cm2 de mes vêtements et ma peau, j'étais vraiment trempé. L'arrivée a été marquée par le froid car une fois qu'on franchit la ligne d'arrivée et qu'on s'arrête, on commence immédiatement à se refroidir et la pluie + le vent deviennent alors mordants, il faut vite se couvrir ou rentrer se mettre à l'abri!

En conclusion le semi-marathon Auray-Vannes c'est génial, très bon parcours, excellente ambiance et bon défi! J'espère le refaire l'année prochaine!

Fil RSS des articles