PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Yannig : Comparaison de la gestion des FS avec Puppet et Ansible

jeudi 9 octobre 2014 à 21:42

Suite de mes aventures avec Ansible : aujourd'hui c'est du système Linux.

Les données du problème : je veux pouvoir gérer le LVM Linux et retailler mes FS à la demande.

La recette sous Puppet

Sous Puppet, en utilisant un fichier yaml/Hiera, l'écriture de tout ceci se ferait avec quelque chose de ce genre :


---
classes: ['lvm']

lvm::volume_groups:
rootvg:
physical_volumes:
- /dev/sda2
logical_volumes:
tmp:
size: 2G
mountpath: /tmp
datavg:
physical_volumes:
- /dev/sdb
logical_volumes:
test:
size: 128
mountpath: /test

Ne pas oublier non plus d'inclure le code suivant dans le fichier site.pp :


hiera_include('classes','')

Bien penser également à installer le module lvm, sinon ça ne marchera pas (puppetlabs-lvm).

Bon, sous Ansible, toutes ces belles choses n'existent pas (encore) en l'état mais sous forme de brique à assembler. On va voir comment recréer un mécanisme à peu près similaire.

La recette sous Ansible

Je me place dans le cadre d'un playbook Ansible avec un fichier system.yml se trouvant dans un répertoire de travail ~/ansible avec le contenu suivant :


---
# Playbook de gestion du système

- name: Propriétés communes système
hosts: all
remote_user: root

roles:
- system

Autre fichier présent : group_vars/all avec le contenu suivant :


---
# Variable applicable à tous

vgs:
rootvg: "/dev/sda2"
datavg: "/dev/sdb"

lvs:
test:
vg: rootvg
mountpoint: /test
size: 256

Ce fichier sera a spécialiser par groupe de machine mais est l'équivalent de notre fichier yaml/Hiera. Reste maintenant à écrire notre liste de tâche qui nous permettra de gérer ces FS (qu'on mettra dans le fichier roles/system/tasks/main.yml) :


---
- name: VG/PV Configuration
lvg: vg={{ item.key }} pvs={{ item.value }} state=present
with_dict: vgs

- name: LV creation
lvol: vg={{ item.value.vg }} lv={{item.key}} size={{item.value.size}}
register: task
with_dict: lvs

- name: LV format
filesystem: fstype=ext4 dev=/dev/mapper/{{item.value.vg}}-{{item.key}}
with_dict: lvs

- name: Mount
mount: name={{item.value.mountpoint}} src=/dev/mapper/{{item.value.vg}}-{{item.key}} dump=1 passno=2 fstype=ext4 state=mounted
when: item.value.has_key('mountpoint')
with_dict: lvs

- name: FS resize
command: resize2fs /dev/mapper/{{item.item.value.vg}}-{{item.item.key}}
with_items: task.results
when: item.changed == True

NB : cette recette ne gère que des fs de type ext4. Si vous voulez gérer du xfs/btrfs/fegafatfs, il faudra changer la commande resize2fs par autre chose.

Le fonctionnement de la recette est assez simple : on enchaine les opérations (création du PV/VG, création du LV, formatage et montage) et on exécute la commande resize2fs qu'en cas de changement sur le LV (cf FS resize, ligne when: item.changed == True).

Reste maintenant à lancer notre playbook avec la commande ansible-playbook -i ./hosts ./system.yml. Vous devriez obtenir le résultat suivant :


PLAY [Propriétés communes système] ******************************

GATHERING FACTS *************************************************
ok: [machine1]

TASK: [common | VG/PV Configuration] ****************************
ok: [machine1] => (item={'key': 'datavg', 'value': '/dev/sdb'})
ok: [machine1] => (item={'key': 'rootvg', 'value': '/dev/sda2'})

TASK: [common | LV creation] ************************************
changed: [machine1] => (item={'key': 'test', 'value': ...})

TASK: [common | LV format] **************************************
changed: [machine1] => (item={'key': 'test', 'value': ...})

TASK: [common | Mount] ******************************************
changed: [machine1] => (item={'key': 'test', 'value': ...})

TASK: [common | FS resize] **************************************
changed: [machine1] => (item={u'msg': u'', 'item': ...})

PLAY RECAP ******************************************************
machine1 : ok=6 changed=4 unreachable=0 failed=0

Changeons la taille de notre FS pour autre chose et relançons ansible pour vérifier la bonne prise en compte de tout ceci :


PLAY [Propriétés communes système] ******************************

GATHERING FACTS *************************************************
ok: [machine1]

[...]

TASK: [common | LV creation] ************************************
changed: [machine1] => (item={'key': 'test', 'value': ...})

[...]

TASK: [common | FS resize] **************************************
changed: [machine1] => (item={u'msg': u'', 'item': ...})

PLAY RECAP ******************************************************
machine1 : ok=6 changed=2 unreachable=0 failed=0

Tout c'est bien passé. Il ne me reste plus qu'à vous souhaiter une bonne gestion de vos LV !

Gravatar de Yannig
Original post of Yannig.Votez pour ce billet sur Planet Libre.

Romaine Lubrique : Chronique « Domaine public » #10 du 56Kast #35

jeudi 9 octobre 2014 à 17:51

10ème chronique « Domaine public » dans le « Quartier libre » de l'émission 56Kast des Écrans de Libération dans les studios de Nolife. Enregistrée le 7 octobre 2014 et animée par Camille Gévaudan (exceptionnellement absent : Erwan Cario, pour cause de... double paternité :)).

Les liens pour aller plus loin

La valorisation du domaine public selon la BnF

La valorisation du domaine public selon le musée d'Orsay

Avec l'aimable autorisation de Nolife et Libération. Pour voir l'émission dans son intégralité c'est ici.

Gravatar de Romaine Lubrique
Original post of Romaine Lubrique.Votez pour ce billet sur Planet Libre.

Articles similaires

La vache libre : TLP 0.6 disponible – Retour sur un logiciel de gestion d’alimentation intéressant

jeudi 9 octobre 2014 à 14:18

lavachelibre@lavachelibre:~_015

TLP est un outil assez sympa dont j’avais parlé dans ce billet et qui a été conçu dans le but d’appliquer automatiquement certains réglages sur vos PC portables, afin de vous permettre d’optimiser les performances et la durée de vie de vos batteries. En gros TLP va tenter d’ajuster divers paramètres, en fonction de votre distribution, de votre Kernel, de vos applications et de votre matériel. Les paramètres appliqués vont de l’ajustement de la fréquence processeur à la gestion d’énergie de vos disques dur, en passant par la gestion d’état et de la puissance PCI express (noyau Linux 2.6.35 et supérieur), la gestion de puissance du wifi, la mise hors tension de vos lecteurs optiques (sur batterie uniquement), le calibrage de la batterie (Thinkpad seulement) et bien plus encore… Tout ceci va se faire de manière transparente et rassurez-vous, il n’est pas nécessaire de tout savoir sur ces réglages pour en profiter. Vous installez TLP et il se charge du reste. Une nouvelle version de TLP (0.6) a été publiée récemment, embarquant diverses améliorations et quelques corrections de bug.

Alors concernant les changements je ne vais pas trop m’étaler dessus, car le but de ce billet était surtout de vous parler à nouveau de cette application plutôt sympa. Peu de sites Francophones en ont parlé et le gros désavantage d’un blog, c’est que les billets finissent par se perdre dans la masse et s’oublient bien vite. Un petit rappel de temps en temps ne peut donc pas faire de mal.

On peut signaler toutefois que les améliorations concernent l’utilisation de TLP avec systemd, que certaines options jugées inutiles ont été supprimées, que TLP n’est désormais plus désactivé quand « laptop-mode-tools » est présent (vous êtes juste notifiés) et quelques autres bricoles.

Si ça vous tente et que vous ne connaissiez pas encore cette application, vous pouvez en savoir plus sur TLP en consultant la page officielle du projet et vous brancher sur la page Github pour en suivre l’évolution. Vous pouvez également trouver quelques infos sur la pagé dédiée de la doc Ubuntu.

Installation :

Pour ce qui est de l’installation, TLP est disponible sur la plupart des distributions GNU/Linux. Vous trouverez tout ce qu’il vous faut sur cette page.

Si vous tournez sur Ubuntu, Linux Mint et dérivés, il va falloir commencer par entrer ceci dans votre terminal :

sudo apt-get purge laptop-mode-tools

Il va falloir ensuite passer par un PPA dédié, à l’aide de ces quelques lignes :

sudo add-apt-repository ppa:linrunner/tlp
sudo apt-get update
sudo apt-get install tlp

Sur Arch Linux, Manjaro et dérivés il suffit de passer par AUR (affichant pour le moment la version 0.5), à l’aide de la commande suivante :

sudo yaourt -S tlp

Une fois que l’installation est effective et après avoir redémarré votre bestiole, entrez la commande suivante afin de vous assurer que TLP soit activé correctement :

sudo tlp-stat | grep "TLP power save"

Si tout est ok vous devriez avoir un retour de ce style :

TLP power save = enabled

Enfin, si vous êtes un « Geek de la mort-qui-tue », vous pouvez éditer le fichier de configuration de TLP et vous le paramétrer aux petits n’oignons.

Pour cela utilisez votre éditeur de texte favori (ici Gedit) et entrez ceci dans votre shell :

sudo gedit /etc/default/tlp

tlp (-etc-default) - gedit_016

Amusez-vous bien et bonne bidouille.

via

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

dada : Ergonomie d'ownCloud : Old menu

jeudi 9 octobre 2014 à 08:42

La dernière version d'ownCloud a apporté avec elle le responsive design et un menu retravaillé.

Ce nouveau menu, je le trouve personnellement bien mais il faut avouer que c'est un peu gadget sur mon double-écran. Ce n'est pas la peine de cacher les raccourcis des applications quand on a toute la place du monde.

L'ami SpF sort sa première extension pour ownCloud : Old menu. Son principe est simple : lorsque vous êtes sur un écran d'une taille correcte, OC vous affiche les raccourcis à l'ancienne, lorsque votre écran est tout petit, avec votre Firefox OS Flame, par exemple, il affiche le tout petit menu.

SpF en parle bien mieux que moi sur son blog.

En image :

             
L'extension est disponible sur le merveilleux site des extensions d'ownCloud.

N'hésitez pas à suivre SpF sur Diaspora* ! ;-)


Gravatar de dada
Original post of dada.Votez pour ce billet sur Planet Libre.

Zeph : MariaDB/MySQL "telnumber" récupérer un numéro de téléphone

mercredi 8 octobre 2014 à 23:45

Fonction digits pour extraite les chiffres
Fonction telnumber pour extraire un numéro de téléphone

 

J'ai besoin d'extraire des numéros de téléphone d'un champs sur lequel il n'y a eu aucun contrôle lors la saisie.
J'ai procédé en deux étapes la première création d'une fonction digits qui va extraire uniquement les chiffres 0-9 présent dans le champs, suite à l'appel de digit les espaces, points, parenthèses ... seront supprimés

Exemple : SELECT digits('+(33)1457 812.45')        =>   '33145781245'

DROP FUNCTION IF EXISTS digits;
DELIMITER |
CREATE FUNCTION digits(str text) RETURNS text CHARSET latin1 DETERMINISTIC NO SQL 
BEGIN
  DECLARE i, len INT DEFAULT 1;
  DECLARE ret text DEFAULT '';
  DECLARE c CHAR(1);
  IF(str IS NULL) THEN RETURN ""; END IF;
  SET len = LENGTH( str );
  WHILE i <= len DO
    SET c = MID( str, i, 1 );
    IF c BETWEEN '0' AND '9' THEN 
      SET ret=CONCAT(ret,c);
    END IF;
    SET i = i + 1;
  END WHILE;
  RETURN ret;
END |
DELIMITER ; 

Pour les numéro français je ne veux pas garder le (33) mais 0 à la place, et j'élimine tous les numéros ayant une longueur inférieure à 10, ça va être le travail de la fonction telnumber.

Exemple :  SELECT telnumber('+(33)1457 812.45')        =>   '0145781245'

DROP FUNCTION IF EXISTS telnumber;
DELIMITER |
CREATE FUNCTION telnumber(str text) RETURNS text CHARSET latin1 DETERMINISTIC NO SQL 
BEGIN
  DECLARE c CHAR(2);
  IF(str IS NULL) THEN RETURN ""; END IF;
  SET str=digits(str);
  SET c = LEFT( str, 2);
  IF c='33' THEN
	SET str = CONCAT('0',RIGHT(str,9));
  END IF;
  IF LENGTH(str)<10 THEN
	SET str = '';
  END IF;
  RETURN str;
END |
DELIMITER ; 

Si vous souhaitez utiliser ces fonctions, le plus simple pour les ajouter à une base est de les copier dans un fichier telnumber.sql. Et de l'importer en ligne de commande.

mysql.exe -h HOST -u USERNAME -pPASSWORD MABASE < telnumber.sql

Gravatar de Zeph
Original post of Zeph.Votez pour ce billet sur Planet Libre.

Articles similaires