Centos7 / RedHat7 : installer les vmware tools

vmware tools

Les VMwareTools ont maintenant leur version open source OpenVM tools.
C’est une suite d’outils qui améliore les fonctionnalités de la VM par une meilleur communication avec l’hyperviseur.

Pour cela on va ajouter un nouveau repo :

cat > /etc/yum.repos.d/vmware-tools.repo <<EOF
[vmware-tools]
name = VMware Tools
baseurl = http://packages.vmware.com/packages/rhel7/x86_64/
enabled = 1
gpgcheck = 1
EOF

On passe un update :

yum update

Et on installe les VMwareTools

 yum install open-vm-tools-deploypkg

Voilà !

Haproxy: activer les logs avec rsyslog

haproxy rsyslog

Il est très intéressant de pouvoir écrire dans un fichier de log les erreurs de HAProxy. Cela peut aussi servir dans le cas d’un debug.

Les logs de HAProxy peuvent être activés en ajoutant cette ligne dans le fichier de configuration haproxy.cfg.

log 127.0.0.1 local0

Il suffit ensuite de créer ce fichier /etc/rsyslog.d/10-haproxy.conf avec le contenu suivant :

$ModLoad imudp
$UDPServerRun 514 
$template Haproxy,"%msg%\n"
local0.=info -/var/log/haproxy.log;Haproxy
local0.notice -/var/log/haproxy.notice;Haproxy

local0.* ~ 

On relance Rsyslog :

/etc/init.d/rsyslog restart

Avec ceci, tous les logs de type info vont être écrit dans le fichier /var/log/haproxy.log.
Les types notice iront dans le fichier /var/log/haproxy.notice.

Pour finir, les fichiers de logs peuvent être tournés via rotatelog, il faut ajouter cette configuration dans /etc/logrotate.d/haproxy :

/var/log/haproxy.log {
    missingok
    notifempty
    sharedscripts
    rotate 14
    daily
    compress
    postrotate
        reload rsyslog >/dev/null 2>&1 || true
    endscript
}

Google Cloud Functions : Présentation

Google Cloud Functions

Google Cloud Functions est le dernier service ajouté sur la plateforme Google Cloud. Ce nouveau service permet de déclencher des petites actions en fonction d’évènements. Ces évènements peuvent venir du Google Cloud Storage, du Google Cloud Pub/Sub en mode asynchrone  ou par un appel HTTP de manière synchrone.

Ces fonctions seront écrites en Javascript car elles seront exécutées sur du Node.js de l’environnement Google Cloud Plateform.

Les évènements sont des « choses » qui se passent dans votre cloud, par exemple un upload sur le storage, une nouvelle instance … On choisit donc de répondre ou non à ces évènements. Les réponses sont faites à l’aide de « Trigger » qui vont capturer l’évènement et le transformer en action. Votre cloud functions seront donc du code  exécuté à la suite de ces « Trigger » .

On peut imaginer plusieurs cas pratiques comme par exemple faire des vignettes d’une image uploadée sur le Cloud Storage, modifier la base de données suite à un message sur le Cloud Pub/Sub.

Cette nouvelle offre ressemble beaucoup à l’offre d’AWS Lambda ou encore à celle de Microsoft Azure WebJobs.

Attention ! Cette nouvelle offre est pour le moment en version Alpha et n’est couverte par aucune SLA. Pour le moment ce nouveau service n’est disponible uniquement sur demande d’activation.

Linux: augmenter la taille de la swap

taille swap

Il peut arriver que la taille de la swap soit rapidement pleine.
Ce n’est généralement pas la meilleur idée que d’utiliser la swap mais dans le cas où l’on a pas le choix, il peut être intéressant de savoir l’augmenter.

1. Création d’un fichier

Pour créer ce fichier d’échange, il va falloir utiliser la commande dd pour convertir et copier des volumes de données.
Ensuite on va créer le fichier file.swap d’une taille de 512Mo à l’aide de la commande suivante:

dd if=/dev/zero of=/file.swap bs=1024 count=512000

Explication : la commande dd crée et copie des zéros dans le fichier file.swap contenant 512000 blocs de 1024 octets chacun,
soit un fichier approximatif de 512 Mo (voir 524 Mo).

2. Création du système de fichier

On utilise à présent « mkswap » pour formater le fichier en tant qu’espace d’échange ou de « swap ».

mkswap /file.swap 512000

Il ne faut pas oublier de passer la taille du fichier à la commande mkswap, de la même taille que celle définie lors de la création du fichier.

3. Activation ou désactivation du fichier d’échange à la volée

Activation de la partition de swap qui s’ajoute à l’existante si elle existe.

swapon /file.swap

la commande « more /proc/swaps » vue plus haut devrait vous montrer le nouvel espace de swap nommé file.swap.

Désactivation de la partition swap.

 swapoff /file.swap

4. Montage définitif de la partition swap

Pour ce la il faut éditer le fichier /etc/fstab et ajouter la ligne suivante:

/file.swap none swap sw 0 0

Centos 7 : Changer le nom du serveur / hostname

centos hostname

Il existe plusieurs méthodes pour changer le nom du serveur sur Centos7 mais l’utilisation de hostnamectl a le mérite d’être rapide et efficace.

On vérifie l’actuel nom :

# hostnamectl status
 Static hostname: serveur.cloud-devops.fr
 Icon name: computer-container
 Chassis: container
 Machine ID: 936a948dfe914bcf821f758a558efce0
 Boot ID: ccf4883b8b594680879a15ad132c7b1b
 Virtualization: openvz
 Operating System: CentOS Linux 7 (Core)
 CPE OS Name: cpe:/o:centos:centos:7

Et pour changer le nom :

# hostnamectl set-hostname nouveaunom.cloud-devops.fr

Et l’on vérifie :

# hostnamectl status
 Static hostname: nouveaunom.cloud-devops.fr
 Icon name: computer-container
 Chassis: container
 Machine ID: 936a948dfe914bcf821f758a558efce0
 Boot ID: ccf4883b8b594680879a15ad132c7b1b
 Virtualization: openvz
 Operating System: CentOS Linux 7 (Core)
 CPE OS Name: cpe:/o:centos:centos:7

Openbsd: redémarrer une interface réseau

openbsd

Comment redémarrer le service réseau sur un système OpenBSD ?

Supposons que l’on vient de modifier notre interface em0 via le fichier /etc/hostname.em0.  Comment prendre en compte nos modifications ?

1. via /etc/netstart

sh /etc/netstart em

La deuxième astuce consiste à désactiver l’interface puis de la réactiver

2. via ifconfig

ifconfig em0 down
ifconfig em0 up

rpmdb: Lock table is out of available locker entries

rpm-lock

Cette semaine, j’ai recu un mail de cron de l’un de mes serveurs.

Subject: Cron <root@SERVERNAME>
run-parts /etc/cron.weekly
/etc/cron.weekly/makewhatis.cron:
rpmdb: Lock table is out of available locker entries
rpmdb: Unknown locker ID: b4a0
error: db4 error(22) from db->close: Invalid argument
error: cannot open Pubkeys index using db3 - Cannot allocate memory (12)
..

Il y avait au moins plus de 100 erreurs dans ce mail… Après une petite recherche sur google, je me suis rendu compte que le problème datait d’au moins 6 mois.

Voici la méthode pour réparer :

# tar cvzf rpmdb-backup.tar.gz /var/lib/rpm
# rm /var/lib/rpm/__db.00*
# rpm --rebuilddb
# rpm -qa | sort # pour vérifier que tout fonctionne

Après tout ca, je voulais vérifier que la tache cron fonctionnait.

# sh /etc/cron.weekly/makewhatis.cron

Voilà !

PHP: cacher la version dans les headers

php header
Comme pour Nginx, il peut aussi être intéressant de vouloir cacher la version de php dans les headers http de notre site web.

Par défaut la version est renvoyé dans les headers http. Ce qui peut donner ceci :

$ curl -I https://www.cloud-devops.fr/
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 05 Feb 2016 21:04:09 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.6.3

Pour ne plus afficher le X-Powered-By: PHP il suffit d’ouvrir le fichier /etc/php.ini
et de passer la variable expose_php à off

expose_php = Off

Si vous utilisez ph-fpm il faut relancer le service.

service php-fpm restart

On test que cela fonctionne :

$ curl -I https://www.cloud-devops.fr/
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 05 Feb 2016 21:04:09 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding

Il n’y a plus rien qui s’affiche cela fonctionne correctement !