Le Blog Utux

Parce qu'il n'y a pas que Linkedin pour se faire mousser avec des articles techniques

ENLARGE YOUR HP PROLIANT MICROSERVER GEN8 - épisode 1

Rédigé par uTux

Je possède depuis plus de 2 ans un HP ProLiant MicroServer Gen8 qui tourne sous FreeNAS et fait office de NAS comme son nom l'indique. Équipé d'un Celeron G1610T, il tourne sous FreeNAS a offert des performances correctes jusqu'à ce que je décide un jour d'activer le chiffrement des disques. Ce processeur ne supporte pas les instructions AES-NI, donc le chiffrement et déchiffrement sont fait de manière logicielle, c'est lourd.

Pour y remédier il est possible de changer le CPU et se tourner vers des Xeon un peu plus costauds. J'ai donc commandé un E3-1260L (4c/8t @2.40Ghz). Niveau TDP on passe de 35W pour le Celeron à 45W ce qui reste correct pour le refroidissement semi-passif, surtout que le CPU ne tourne pas à 100% en permanence. Ce CPU offre 8 cœurs logiques, le turbo, et les instructions AES-NI ce qui devrait booster FreeNAS et les jails FreeBSD que je lui fais supporter.

En attente de réception du CPU !

Vscode

Rédigé par uTux

Depuis la publication de ce billet, vscode est à la mode. Et pourtant il y a de quoi grincer des dents, on pense immédiatement à Visual Studio et à Microsoft, s'agit-il d'une usine à gaz propriétaire qui sert à pondre du code pour IE6? Pas du tout.

vscode n'est pas Visual Studio, c'est un éditeur de texte avancé plutôt léger, sous licence libre (Expat), avec pas mal de plugins pour les différents langages. Et oui il s'agit de Microsoft, mais comme beaucoup j'ai passé l'âge de jouer à l'intégriste, et on peut dire qu'ils font des efforts depuis quelques années. En ce qui me concerne j'ai toujours codé avec vim, mon premier contact avec vscode fut donc un premier contact avec ce genre d'éditeur de texte. Et pour le moment je me prends au jeu, j'utilise vscode, c'est vraiment pas mal.

Vscode

J'aime la possibilité de visionner mon arborescence, travailler sur un fichier tout en ayant un terminal à disposition (par exemple pour tester des playbook Ansible). Il y a un léger temps d'adaptation pour apprendre les raccourcis (ctrl+s), mais ça reste plus facile que vim :) Je n'ai pas réussi à configurer l'utilisation d'un proxy http (oui, ça existe encore dans certaines entreprises...) ce qui m'a obligé à passer par proxychains.

Je n'aime pas l'autocomplétion, par exemple quand je veux ajouter un <strong> devant un mot, il ajoute automatiquement le </strong> mais pas au bon endroit. Pareil quand on manipule les double quote " dans les yaml, l'ajout et suppression peut devenir un enfer. Mais bon c'est toujours moins pire que vim et son indentation agaçante dans les dernières versions :) et ça se maîtrise.

Je continue à utiliser vscode, on verra si dans 6 mois je suis revenu sur vim ou pas :)

La plus grande qualité d'un sysadmin ?

Rédigé par uTux

On m'a posé cette question lors d'un entretien. C'est assez bateau et il existe un tas de réponses "par cœur" et pourtant elle m'a surpris. J'ai donc répondu de manière sincère la première chose qui m'est passée par la tête: être carré, être sérieux, parce qu'on est pas dans un labo, on est responsables de la production. Sur le coup, je pensais aux astreintes, aux sueurs lorsqu'un site web commercial affiche un 403 ou une page blanche, ou quand on me dit que "plus rien ne marche" et que c'est à moi de dépanner. Et puis je sortais tout juste de cette mauvaise expérience avec Ceph, la prod ça ne rigole pas.

Mais y réfléchissant après j'ai pensé à une réponse plus pertinente: la plus grande qualité d'un sysadmin, c'est d'être bien entouré. Que ce soit les collègues qui nous aident, le chef qui nous encourage, les développeurs toujours prêt à filer un bout de code pour dépanner ou aider à l'intégration de leur application, c'est très important. Un bon sysadmin a toujours ses potes (hors entreprise) sur Telegram, Jabber ou IRC pour discuter de tout et n'importe quoi et parfois de boulot.

Les autres questions portaient sur la technique, domaine dans lequel je suis plus à l'aise avec les 8 ans d'expérience dans le dos :)

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

Rédigé par uTux

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

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...