lindev.fr

Aller au contenu | Aller au menu | Aller à la recherche

14 juil. 2015

Monter un Bucket S3 sur un serveur Débian

S3, espace de stockage illimité chez Amazon avec des tarifs défiant toute concurrence. Qui en plus de son prix, offre des options plus qu’intéressantes...

  • chiffrement des données
  • versioning automatique
  • rotation ou mise en glacier des vielles versions ..


Etc ...
Je ne vais pas détailler ces options dans ce billet, mais juste expliquer comment monter un Bucket S3 ( répertoire S3 ) sur une machine / serveur linux afin d'y accéder comme un simple montage réseau . Nous verrons également comment le monter automatiquement via une simple ligne dans le fstab.

Prérequis

Nous allons utiliser fuse pour monter ce bucket, et l'authentification peut être chiffrée selon vos options, nous allons installer tout ce qu'il nous faut...

sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool fuse-utils pkg-config libssl-dev

S3fs-fuse

Maintenant, S3 + fuse n'étant pas un "système de fichiers" conventionnel, nous allons utiliser l'outil s3fs-fuse disponible sur un dépôt Gît

cd /usr/local/src/
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl 
make
sudo make install

Authentification S3

Sauf si votre serveur se trouve sur la plateforme Amazon et que vous lui avez donné des droits spécifiques (S3) à sa création, il vous faudra obligatoirement préciser le couple "Access Key / Secret Key" récupéré sur la plateforme Amazon.
Personnellement, je donne à mes utilisateurs un minimum de droits. Dans mon exemple donc, mon utilisateur fictif "John Doe" aura uniquement accès à son bucket, qui sera appelé "jdbucket".
Nous allons donc éditer le fichier qui va lister les authentifications passwd-s3fs.

sudo vim /etc/passwd-s3fs

Le contenu devra respecter la forme suivante bucketName:accessKeyId:secretAccessKey :

jdbucket:AKIAIOSFODNN7EXAMPLE:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Nous allons maintenant retirer un maximum de droits au fichier passwd-s3fs

sudo chmod 600 /etc/passwd-s3fs

Montage

Ne nous reste plus qu'à monter notre bucket jdbucket . Disons sur le répertoire /var/mntJdBucket

Commençons par créer le répertoire de montage.

sudo mkdir /var/mntJdBucket; sudo chmod 777 /var/mntJdBucket

Testons le montage avant de la mettre dans le fstab

/usr/bin/s3fs jdbucket /var/mntJdBucket -ouse_cache=/tmp,passwd_file=/etc/passwd-s3fs

Note: Spécifier le fichier de mot de passe S3 n'est pas obligatoire.
Si tout va bien .. vous voilà connecté à votre S3 !
Ne vous faite pas berner par le débit ( important ), ici le débit apparent sera celui de votre disque dur, car l'option use_cache=/tmp utilise un répertoire local comme cache entre votre système et le S3.

Fstab

Ne nous reste plus qu'à configurer notre montage dans le fstab, afin que le montage se fasse à chaque démarrage.

sudo vim /etc/fstab


Voici la ligne qu'il faut ajouter

#Fuse
s3fs#jdbucket	/var/mntJdBucket	fuse	rw,_netdev,use_cache=/tmp,allow_other,passwd_file=/etc/passwd-s3fs	0	0

Au niveau des options, du classique, droits en lecture et écriture pour les utilisateurs, attente de la connexion réseau pour tenter de monter le bucket, configuration du répertoire de cache et du fichier de mot de passe ( toujours facultatif )

Conclusion

Nous avons maintenant fait le tour du montage S3 sur une machine debian, rien de bien méchant. Cependant, suite à mes tests, je conseille d'utiliser les commandes s3cmd pour envoyer de gros fichiers ( plusieurs Gb ) celle-ci étant plus adaptée.

N'hésitez pas si vous avez des questions.

Ch.

13 mai 2015

Time zones nommées mysql

Un nouveau billet pense bête ...

A l'installation de Mysql selon la version ou la façon de l'installer, les Time Zone nommées ne sont pas toujours ajoutées dans la base de données mysql. Voilà la petite ligne de commande à exécuter (sous linux) pour y remédier ( les ajouter )

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u <utilisateur admin> mysql

Et voilà .. vous pouvez utiliser les requête

SET time_zone = timezonename;

Restez informé

inscrivez vous à la newsletter pour recevoir les nouveaux billets par mail. ( formulaire en haut à droite )

15 sept. 2014

Réparer son virtualenv aprés un update Systéme/Libs

Après une belle maj de votre système, vous avez, au moment de vous remettre au travail, un sympathique message du genre

ImportError: No module named datetime

detatime !! Cette lib fait pourtant partie du standard de python ! Le fait est que lorsque l'on met à jour python, les liens utilisés à la création du venv sont hs !

Ici c'est la lib datetime qui a été remonté, mais ça peu être n'importe laquelle ..

Solution

Il ne m'a pas fallu longtemps pour résoudre ce problème tout bête, ( beaucoup de cas similaires sur le net ).

Réinitialiser le virtualenv

Par exemple avec mon venv nommé foo

virtualenv /home/cdsl/.virtualenvs/foo
New python executable in /home/foo/.virtualenvs/creasoft3/bin/python
Installing setuptools............done.
Installing pip...............done.

Et voilà ..

07 mar. 2014

Wheezy & fsck

Le saviez-vous

Mon poste de travail, sous débian Wheezy redémarre régulièrement comme tout poste de travail et pourtant ... jamais il ne ma fait de check disque fsck au démarrage !

Et bien figurez-vous que c'est voulu !

En effet d’après ce que j'ai trouvé sur le web à ce sujet, les développeurs de debian estiment que dans le monde professionnel lorsque qu'une machine ( surtout un serveur ) lance son fsck au démarrage, la plupart du temps, c'est au mauvais moment, et provoque plus de frustrations des admin. sys. qu'autre chose .

Il est vrai que le fait de se baser uniquement sur un facteur temps, ou un nombre de montages des volumes pour exécuter cette commande rend sa réelle utilité très aléatoire.
Ils estiment donc que les Admin. Sys. sons assez "grands" pour planifier au moment opportun le fsck des disques .

Le réactiver par défaut à la création de partition

Lors de la création d'une nouvelle partition, pour réactiver par défaut le fsck sur le nombre de montages et l'intervalle de temps, il vous faut changer le paramètre suivant ( en le passant à 1 ):

enable_periodic_fsck = 0

Dans le fichier : /etc/mke2fs.conf

Le réactiver sur un partition existante

Pour réactiver le fsck tout les 50 montages :

sudo tune2fs -c 50 /dev/sdx

Pour réactiver le fsck si le dernier date de plus de 6 mois :

sudo tune2fs -i 6m /dev/sdx

Désactiver le fsck automatique

Si au contraire vous souhaiter tout désactiver,

tune2fs -c -1 -i 0 /dev/sde1

Forcer un fsck

C'est bien beau de tout désactiver, mais il peut être intéressant de lancer un check des disques de temps en temps quand même !
Pour lancer fsck au démarrage, 2 méthodes

Avec la commande shutdown

shutdown -r -F now

-r Redémarrer la machine après l'arrêt du système.
-F Forcer l'utilisation de fsck lors du redémarrage.

Avec le fichier forcefsck

Le simple fait de créer un fichier nommé forcefsck à la racine du système, va l'obliger à lancer un check fsck au démarrage . Ce fichier sera alors supprimé automatiquement .

sudo touch /forcefsck

Ch.

07 nov. 2013

Imprimer en ligne de commande

Nous allons voir dans ce billet comment installer une imprimante sur une machine distante, ne possédant aucune interface graphique, puis comment imprimer un document en ligne de commande .
Sans entrer dans les détails du système d'impression linux, nous allons survoler les principaux outils tels que CUPS, lpr, lpq, lpstat ...

Installation des paquets

COmmençons par installer les paquets nous fournissant les outils necessaires

apt-get install cups cups-bsd

Interface web de CUPS

Cups permet de configurer ( ajouter/modifier/supprimer ) les imprimantes via une interface web ... ( on ne va pas s'en priver ! )

Seulement, avant de pouvoir s'y connecter ( à distance ) nous allons devoir autoriser les connections extérieurs .. ( tout du moins le temps de la configuration )

vim /etc/cups/cupsd.conf

Voici les modifications à apporter

Changer

Listen localhost:631

par

Listen *:631

Ajouter la ligne Allow From All dans les blocs suivant

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow From All
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow From All
</Location>

Puis redémarrer cups

service cups restart

Il ne vous reste plus qu'à vous rendre sur l'interface web :

http://ipduserveur:631

Selection_103.png

Ajouter une imprimante

Pour ajouter une imprimante, il suffit de se laisser guider par l'interface web de CUPS, ayant une imprimante réseau compatible postscript, je vais utiliser les pilotes génériques.
Mais vous pouvez trés bien donner le fichier PPD correspondant à votre imprimante .

Allons dans l'onglet Administration > Add Printer

Un mot de passe vous est demandé, utiliser le mot de passe root, ou créez un compte spécifique grâce à la commande lppasswd

root@vm2:~# lppasswd -a cdsl
Entrez le nouveau mot de passe :
Confirmez le nouveau mot de passe :

Cups va alors lister toutes les imprimantes réseau qu'il a trouvé, ou vous proposer d'entrer l'adresse vous même

Selection_104.png

Personnellement, je vais entrer moi même l'ip de mon imprimante ( adresse ldp )

Selection_105.png

Le pilote choisis sera le suivant ( pour mon imprimante laser couleur Konica Bizhub C253 ):

Generic PCL 5c Printer Foomatic/hpijs-pcl5c

Nous en avons fini avec l'interface web ...

En ligne de commande

Vérifions la présence de notre imprimante fraichement installée

root@vm2:~# lpstat -tvH
scheduler is running
no system default destination
device for Konica_Etage: lpd://10.0.0.4/print
Konica_Etage accepting requests since jeu. 07 nov. 2013 16:25:04 CET
printer Konica_Etage is idle.  enabled since jeu. 07 nov. 2013 16:25:04 CET

Le nom Konica_Etage sera le nom à utiliser dans les commandes et scripts pour imprimer via celle-ci.

Par exemple, pour vérifier sa file d'impression

root@vm2:~# lpq -PKonica_Etage
Konica_Etage is ready
no entries

Il ne nous reste plus qu'à imprimer ..
Pour imprimer un document, nous allons utiliser la commande lpr comme ceci

lpr -h -PKonica_Etage -#1 -o media=A4 -o scaling=100 monfichieraimprimer.pdf
  • -h pour désactiver l'impression de la bannière
  • -PKonica_Etage Désigne l'imprimante à utiliser
  • -#1 Permet de spécifier le nombre de copie(s) à sortir ( ici 1 copie )
  • -o media=A4 Spécifie le format de papier à utiliser au niveau de l'imprimante
  • -o scaling=100 Demande l'utilisation de 100% de la zone d'impression en respectant le ratio

Et en fin de ligne, le fichier à imprimer !

Conclusion

Je pense que l'objectif de cet article est rempli, vous avez la possibilité d'imprimer des documents ( pdf, ps, images .. ) depuis votre serveur en ligne de commande .

N'hésitez pas à me faire des retours .

Ch.

- page 1 de 9