Le Blog Utux

HTTP 200 GET /

Doctor Strange, Black Panther, Marvel a changé

Rédigé par uTux Aucun commentaire

Quand j'entends parler de Marvel, je pense immédiatement au cinéma à gros budget, aux blockbuster, aux divertissements décérébrés assumés, aux films de commande et surtout a un modèle à bout de souffle. Je sature tellement que pour moi Marvel c'était fini, je ne regardais plus voir leurs films.

Avec pas mal de retard j'ai finalement regardé Doctor Strange et Black Panther, deux films que je ne serai jamais allé voir en tant normal mais dont on dit beaucoup de bien. Et c'est dingue mais avec ces deux films j'ai réalisé que Marvel a changé. Même s'il faut avouer que l'histoire ne casse pas des briques et que le schema de base est toujours le même, on sent le réalisateur dispose d'une grande liberté artistique, qu'il y a des idées et des prises de risques.

Doctor Strange offre du grand spectacle avec ses environnements qui se modèlent à volonté et cette touche de fantastique avec la magie qui nous fait presque oublier que nous sommes dans le même univers que Iron Man qui est plutôt science fiction. Au niveau de la prise de risque c'est zéro, mais au niveau artistique il faut avouer que ça claque.

Black Panther est certainement le film de super-héros le plus orignal et le plus rafraichissant vu cette année. Imaginez que dans un des pays du tiers-monde au milieu de l'Afrique se cache en fait une citée très avancée comme l'Atlantide avec un niveau technologique bien supérieur au reste du monde. Va-t-on y trouver une société aseptisée avec des gens vêtus de toges blanches ? Pas du tout, c'est même l'inverse avec des tribu en costume traditionnel qui font des cérémonies et dansent tout en se déplaçant en avion ou train futuriste. Et c'est ce mélange qui fonctionne bien. J'ai aussi adoré les trouvailles visuelles comme l'espèce de matière ferrofluide qui permet de modeler des objets 3D en temps réel ou tous ces drones que l'on pilote à distance. Côté histoire on peut également y voir un timide écho à certains événements stigmatisant la communauté afro-américaine aux États-Unis. Là aussi c'est assez couillu pour du Marvel. Un des points négatifs du film par contre est qu'il est clairement pollué par la publicité.

Après avoir vu ces deux films ainsi que Star Wars Episode 8 je commence à changer d'avis sur les blockbuster Disney. On veut des choses nouvelles, on veut des prises de risque, on veut une plus grande liberté pour les réalisateurs, et on commence à l'avoir. Marvel a changé.

Ansible: récupérer les clés SSH depuis BitBucket

Rédigé par uTux Aucun commentaire

Je m'attaque aux API REST et en particulier celle de BitBucket pour y récupérer mes clés SSH que je déploie ensuite sur mes serveurs, le tout avec Ansible. Voilà un petit bout de code sur lequel j'ai passé une bonne soirée car autant c'est facile d'interroger l'API, autant ça l'est un peu moins de faire rentrer les bons champs dans des variables ;)

Pré requis:

  • Sur votre compte BitBucket
  • Settings > App passwords
  • Créez un password avec l'autorisation Account / read.

Allons-y (à mettre dans votre tasks/main.yml par exemple):

---

  - name: GET authorized_keys from REST API
    uri:
      url: "{{ authorized_keys.api_url }}"
      method: "{{ authorized_keys.api_method }}"
      user: "{{ authorized_keys.api_user }}"
      password: "{{ authorized_keys.api_password }}"
      force_basic_auth: "{{ authorized_keys.api_force_basic }}"
    register: authorized_keys__json_response
    delegate_to: localhost
    run_once: True
    # Delegate to localhost and run 1 time because
    # we don't need to query the API from each remote host

  - name: Set Keys as a Var
    set_fact:
      authorized_keys__keys: "{{ authorized_keys__json_response.json | json_query('values[*].key') }}"
    delegate_to: localhost
    run_once: True
    # Extract the fields 'key' in a variable

  - name: Concatenate Keys
    set_fact:
      authorized_keys__keys_concatenate: "{{ authorized_keys__keys | join('\n') }}"
    delegate_to: localhost
    run_once: True
    # Ansible authorized_keys module with 'exclusive' option requires all keys in one batch
    # separated by a newline \n

La variable authorized_keys__keys contient la liste des clés publiques. La variable authorized_keys__keys_concatenate n'est pas une liste mais un champ contenant toutes les clés séparées par un retour à la ligne et elle est utile si vous souhaitez utiliser le module authorized_keys avec exclusive: yes car ce dernier ne marche pas bien avec une liste, il faut donc lui fournir 1 seul "batch".

Complétez ensuite vos variables, par exemple:

# group_vars/all/vars.yml

authorized_keys:
  api_user: john
  api_url: "https://api.bitbucket.org/2.0/users/john/ssh-keys"
  api_method: GET
  api_force_basic: yes
  api_password: password créé dans l'interface bitbucket

Bien sûr en vrai on mettra le password dans un vault ;)

Et voilà, vous pouvez utiliser authorized_keys__keys ou authorized_keys__keys_concatenate pour la suite!

Rip hardware.fr :'(

Rédigé par uTux 1 commentaire

C'est un coup dur :( Hardware.fr va cesser de publier des articles il ne restera donc que le forum et la boutique. J'étais fan des articles longs et détaillés comme les tests des CPU ou des cartes graphiques, le testeur avait même identifié un problème de latence entre les cœurs des RyZen... A chaque fois qu'un site fermait ou devenait payant, je me disais "pas grave il reste toujours hardware.fr".

RIP Hardware...

FreeBSD: jouons avec iocage

Rédigé par uTux Aucun commentaire

En 2018, en matière de containers il n'y a pas que Docker ou LXC, il y a aussi FreeBSD et ses jails :) en fait ça existait longtemps avant et c'est plutôt bien fichu. J'ai longtemps utilisé le framework ezjail qui a l'avantage d'être simple et de fonctionner sans ZFS (j'avais un serveur anémique à base d'Atom 32 bit).

J'utilise FreeNAS et bien que leur web-ui permette depuis longtemps de créer des jails, cette solution est trop rigide, il est par exemple impossible d'upgrader une jail :( Bonne nouvelle, dans les dernières versions (avec le web-ui en beta ou via la ligne de commandes) on a droit à iocage qui est plus souple et supporte (entre autres) les upgrades.

Création d'une jail FreeBSD

Tout comme iohyve, il faut commencer par définir un pool de stockage ZFS. Cela peut être un pool existant, il ne l'écrase pas mais créé quelques datasets. Par exemple pour utiliser le pool data:

[root@freenas] ~# iocage activate data
ZFS pool 'data' successfully activated.

Ensuite on télécharge un template qui va servir à créer nos jails. Par exemple pour récupérer 11.1-RELEASE:

[root@freenas] ~# iocage fetch
[0] 9.3-RELEASE (EOL)
[1] 10.1-RELEASE (EOL)
[2] 10.2-RELEASE (EOL)
[3] 10.3-RELEASE
[4] 10.4-RELEASE
[5] 11.0-RELEASE (EOL)
[6] 11.1-RELEASE

Type the number of the desired RELEASE
Press [Enter] to fetch the default selection: (11.1)
Type EXIT to quit: 6
Fetching: 11.1-RELEASE

Downloading : MANIFEST [####################] 100% 0Mbit/s
Downloading : base.txz [####################] 100%  13.44Mbit/s
Downloading : lib32.txz [####################] 100%  12.66Mbit/s
Downloading : doc.txz [####################] 100%  10.76Mbit/s
Downloading : src.txz [####################] 100%  11.94Mbit/s
 11.94Mbit/sExtracting: base.txz... 
Extracting: lib32.txz... 
Extracting: doc.txz... 
Extracting: src.txz... 

* Updating 11.1-RELEASE to the latest patch level... 
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update4.freebsd.org... done.
Fetching metadata signature for 11.1-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 151 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150 done.
Applying patches... done.

The following files will be updated as part of updating to 11.1-RELEASE-p9:
[--- blablabla ---]
Installing updates... done.

On peut créer une jail nommée "unbound":

root@freenas:~ # iocage create -r 11.1-RELEASE -n unbound
unbound successfully created!

On lui met une adresse IP (en mode shared car j'ai encore quelques soucis avec le VNET):

root@freenas:~ # iocage set vnet=off unbound
Property: vnet has been updated to off
root@freenas:~ # iocage set ip4_addr="em0|192.168.0.201/24" unbound
Property: ip4_addr has been updated to em0|192.168.0.201/24

On démarre la jail:

root@freenas:~ # iocage start unbound
* Starting unbound
  + Started OK
  + Starting services OK

On entre dans la jail:

root@freenas:~ # iocage console unbound

FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
root@unbound:~ #

Autres features

  • Créer ses propres templates, utile pour créer des jails prêtes à l'emploi (avec SSH + authorized_keys, par exemple).
  • Upgrade des jails
  • Snapshots (et oui, zfs...)
  • VNET (la jail a sa propre stack réseau, utile pour les manipulations pare-feu ou vpn)
  • Limitations CPU & mémoire
  • Installation automatique de paquets
  • Montage de volumes bind
  • Création de jails kFreeBSD (à titre de proof of concept)
  • A la manière des dataset/pool zfs, chaque jail a des propriétés modifiables (get/set)
  • Ecrit en python

Conclusion

J'utilise iocage pour une jail backuppc et j'en suis plutôt content. Si l'aspect VNET reste à améliorer, on a quand même fait un grand pas par rapport à la solution maison de FreeNAS.

iocage c'est le meilleur de FreeBSD: les jails et zfs. La syntaxe est claire, facile à retenir et me donne presque envie de m'y remettre et de migrer tous mes services dessus. Je vous encourage à l'essayer! Je vous encourage aussi à manger du FreeNAS, c'est bon pour la santé.

Marathon de la Loire (Saumur) 2018

Rédigé par uTux 4 commentaires

En 2017 j'ai fait deux semi-marathon: Nantes puis Auray-Vannes. Le premier fut difficile à terminer, le second beaucoup moins, et comme je suis fou j'ai décidé de passer à la vitesse supérieure donc j'ai tenté le marathon.

Assez parlé, voici mes stats :

42,2km
04h11 5,50 min/km
Distance Temps réel Pace

Trace marathon

Mon ressenti:

Pfiou! Pas facile! Autant je maîtrise les 21km du semi, autant le marathon ça en fait quand même le double, et puis c'est long 4h de course! On parle souvent du "mur" des 30km, je n'ai pas ressenti quelque chose de brutal, c'est plutôt une accumulation, le bout du rouleau. A partir du 35e km j'avoue avoir eu des phases de marche car mes muscles étaient à 200% de fatigue... par contre une fois la ligne d'arrivée franchie, quel pied! J'ai failli pleurer de joie mais j'étais trop occupé à souffrir plié en deux contre un muret en me disant "plus jamais ça!".

J'ai préparé ce marathon pendant 3 mois, je suis sorti courir après le travail, crevé, sous la pluie, le froid ou la chaleur, et ça a payé car j'ai augmenté significativement mon endurance et mon allure, et accessoirement j'ai perdu 5kg. Mais je suis quand même un peu déçu, mon objectif était de faire les 42km sans marcher. Tant pis, ce sera pour la prochaine fois...

Néanmoins je ne regrette pas, c'était un super premier marathon avec un super parcours en campagne le long de la Loire, avec une super médaille à la clé, une super veste élégante (avec le logo en gros), et surtout une super ambiance. En plus Jesus était avec nous et c'est vraiment un super cosplay :) Merci aux gens qui ont subit la pluie pour venir nous encourager, merci aux bénévoles qui ont rendu tout ceci possible, et merci à mes proches pour m'avoir soutenu.

Fil RSS des articles