Le Blog Utux

HTTP 200 GET /

Ansible Jinja loop all groups except

Rédigé par uTux Aucun commentaire

I want to generate a /usr/local/etc/backuppc/hosts with all hosts from the ansible inventory, but exclude a group.

Inventory:

[dbservers]
db1
db2
db3

[DisableBackup]
db3

hosts.j2:

# {{ ansible_managed }}

{% for hosts in groups['all'] | difference(groups['DisableBackup']) %}
{{ hosts }}
{% endfor %}

tasks/generate_hosts.yml:

  - name: Generate hosts file
    template:
      src: hosts.j2
      dest: "{{ backuppc__confdir }}/hosts"
      owner: "{{ backuppc__user }}"
      group: "{{ backuppc__group }}"
      mode: 0644
      force: yes

Run:

ansible-playbook -i inventory install_backuppc.yml

Result:

cat /usr/local/etc/backuppc/hosts
# Ansible managed
db1
db2

Source.

On peut pas faire confiance à la documentation ubuntu

Rédigé par uTux 2 commentaires

Essayons de désactiver AppArmor sur une Ubuntu 16.04 en nous basant sur la documentation.

C'est pourtant clair, 3 sources de documentations nous disent que pour désactiver AppArmor il suffit de stopper le service. Très bien, essayons:

root@ubuntu:~# systemctl stop apparmor
root@ubuntu:~# systemctl disable apparmor
apparmor.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install disable apparmor
insserv: warning: current start runlevel(s) (empty) of script `apparmor' overrides LSB defaults (S).
insserv: warning: current stop runlevel(s) (S) of script `apparmor' overrides LSB defaults (empty).

Utilisons la commande apparmor_status pour voir le status de AppArmor:

root@ubuntu:~# apparmor_status 
apparmor module is loaded.
13 profiles are loaded.
13 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/lxc-start
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/lxd/lxd-bridge-proxy
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/tcpdump
   lxc-container-default
   lxc-container-default-cgns
   lxc-container-default-with-mounting
   lxc-container-default-with-nesting
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode.
   /sbin/dhclient (848) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Diantre! C'est pas bon signe. Faisons un essai en installant mysql-server et en déplaçant son /var/lib/mysql ailleurs:

root@ubuntu:~# apt-get install mysql-server
root@ubuntu:~# systemctl stop mysql
root@ubuntu:~# mv /var/lib/mysql /opt/
root@ubuntu:~# sed -i "s@/var/lib/mysql@/opt/mysql@g" /etc/mysql/mysql.conf.d/mysqld.cnf
root@ubuntu:~# systemctl start mysql
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

Mysql ne démarre pas... examinons le log:

juil. 07 10:39:37 ubuntu kernel: audit: type=1400 audit(1530952777.364:32): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/opt/mysql/ibdata1" pid=2959 comm="mysqld" requested_mask="wr" denied_mask="w
juil. 07 10:39:37 ubuntu systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Facepalm

AppArmor n'est pas désactivé du tout, on ne peut pas faire confiance à la documentation Ubuntu!!! Il faut en fait rebooter le serveur, vraiment génial quand celui-ci est déjà en production ou quand on essaie d'automatiser une installation avec Ansible.

Après quelques recherches je suis tombé sur cet article qui nous indique qu'on peut utiliser la commande service apparmor teardown :

root@ubuntu:~# service apparmor teardown
 * Unloading AppArmor profiles                                           [ OK ]
root@ubuntu:~# apparmor_status 
apparmor module is loaded.
0 profiles are loaded.
0 profiles are in enforce mode.
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
root@ubuntu:~# systemctl start mysql
root@ubuntu:~# ps aux | grep mysql
mysql      925  0.0 13.2 1107628 134140 ?      Ssl  10:43   0:00 /usr/sbin/mysqld
root      1224  0.0  0.0  14264   920 pts/0    S+   10:46   0:00 grep --color=auto mysql

AppArmor nous laisse enfin tranquille, et sans rebooter le serveur :)

De manière amusant, teardown se traduit par démolir, raser. Est-ce une indication de l'état d'esprit de celui qui a codé le service de démarrage/arrêt d'AppArmor?

Je suis de moins en moins fan de Ubuntu sur les serveurs, car entre les très nombreuses mise à jour de Kernel (reboot fréquents) et les technologies maison de Canonical qui imite RedHat sans en avoir les moyens ou le talent, on se dit que rien ne vaut Debian ou CentOS sur un serveur.

ENLARGE YOUR HP PROLIANT MICROSERVER GEN8 - épisode 2

Rédigé par uTux 2 commentaires

Wow, on parle souvent des smartphones impossibles à démonter, en ce qui concerne le serveur HP Proliant Gen8 c'est totalement l'inverse, tout se fait sans tournevis de manière évidente. On ouvre le boîtier, on débranche les connecteurs sur la carte mère, et on la tire vers l'arrière, et voilà.

Ouverture carte mère gen8

Une fois la carte mère extraite, il ne reste plus qu'à retirer le radiateur, enlever le Celeron puis insérer le Xeon, et après un petit changement de pâte thermique on remet le tout. Et au boot... ça marche !!

FreeNAS xeon

Le Xeon apporte un certain confort qui se ressent rapidement. L'exploration des partages Samba est plus fluide tout comme la navigation dans l'interface FreeNAS. Le démarrage des jails iocage aussi, même si non exempt de latences tant que le cache ARC n'est pas rempli :) Quand le prix des SSD de 1To baissera, je songerai à remplacer les disques mécaniques.

Le canal de Nantes à Brest (Nantes / Redon)

Rédigé par uTux 5 commentaires

Samedi dernier, j'ai pris mon vélo au départ de Nantes pour rejoindre Redon en suivant une portion de la Vélodyssée. J'adore partir à l'aventure avec mon vélo, rouler 8 heures par jour et avaler des kilomètres à la recherche de villes et de paysages sympathiques.

De Nantes à Nort-sur-Erdre

La première partie du voyage consiste à rejoindre le canal. De Nantes à Nort-sur-Erdre l'itinéraire est très bien aménagé, j'étais même surpris, on ne pose quasiment jamais les roues sur la route réservée aux voitures. Il y a toujours une piste goudronnée réservée aux vélos, c'est agréable et confortable. On progresse vite.

En plus il faisait beau mais pas trop chaud :)

Le canal de Nantes à Brest

Une fois qu'on a rejoint le canal... woaw. C'est beau, c'est paisible, c'est sauvage, peut-être même un peu trop car on ne passe par aucune ville, aucun commerce, aucun point d'eau rien avant Redon (ce qui représente quand même ~70km). Autant dire qu'il faut emporter beaucoup d'eau, à manger, et un kit technique pour réparer le vélo en cas de panne.

C'est beau mais... ce n'est pas vraiment adapté aux vélos de route. Le long du canal ce sont des chemins, très praticables et pas trop accidentés, mais ce n'est pas du bitume lisse. Aucun problème pour un VTT, en revanche pour les vélo de route aux pneus fins et léger ce n'est pas bon du tout.

L'aller jusqu'à Redon s'est bien passé, 109km en ~6h (ce qui inclus la pause déjeuner), j'ai dormi là-bas et repris la route le lendemain. Le retour s'est mal passé puisqu'au bout de 50km mon pneu arrière a crevé, et en remplaçant la chambre à air je me suis rendu compte que c'était bien plus grave:

Le pneu est totalement fichu, presque éventré. Je l'ai échangé avec le pneu avant, qui lui était en bon état, mais j'ai crevé une dizaine de minutes plus tard à l'avant... et je n'avais plus de chambres à air. J'ai donc appelé à l'aide et le retour s'est fait en voiture. Bilan 2 pneus et les chambres à air à changer.

Je suis d'ailleurs preneur pour des conseils sur le type de pneus à choisir et sur une bonne marque de référence.

Je ne regrette pas cette sortie et j'ai pris beaucoup de plaisir à pédaler sur les chemins le long du canal. Si je dois le refaire ce sera avec plaisir et je prendrai des pneus plus résistants. J'espère avoir à nouveau l'occasion de parcourir la Vélodyssée dans un sens ou dans l'autre :)

ENLARGE YOUR HP PROLIANT MICROSERVER GEN8 - épisode 1

Rédigé par uTux 2 commentaires

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 !

Fil RSS des articles