Installation de l’agent Nagios sur VCSA 5.5

Installation des repository

Se connecter en SSH sur la VCSA5.5


zypper addrepo -f http://download.opensuse.org/distribution/11.2/repo/oss/ opensuse

Vérifier la configuration des nouveaux repos

zypper repos -d

Rafraichir les sources

zypper refresh

Installer Nagios-NRPE

# zypper install nagios-nrpe-client

Activer le service

# chkconfig nrpe on

Configuration de l’agent Nagios

Editer les fichier /etc/nagios/

Lancer le service

# /etc/init.d/nrpe start

Autoriser l’accès distant à l’agent

Ajouter la ligne suivante à la fin du fichier « /etc/hosts.allow » pour autoriser votre serveur Nagios.

nrpe: 192.168.0.10 : ALLOW
Publié dans linux, Mes docs | Laisser un commentaire

Installation agent-zabbix sur VCSA 5.5

Installation des repository

Se connecter en SSH sur la VCSA5.5

zypper addrepo -f http://download.opensuse.org/repositories/server:/monitoring:/zabbix/SLE_11 server_monitoring

Vérifier la configuration des nouveaux repos

zypper repos -d

Rafraichir les sources

zypper refresh

Installer Zabbix-Agent

zypper install zabbix24-agent

Configuration de l’agent Zabbix

Editer le fichier /etc/zabbix/zabbix-agentd.conf

Commenter les lignes :

Hostname=Zabbix server
Server=127.0.0.1
ServerActive=127.0.0.1

Et ajouter en fin de fichier :

LogFileSize=1
DebugLevel=3
Server=192.168.0.10
ServerActive=

Activer le service

chkconfig zabbix-agentd on

Lancer le service

/etc/init.d/zabbix-agentd start

Autoriser l’accès distant à snmpd

Ajouter les 2 lignes suivantes à la fin du fichier « /etc/hosts.allow »

zabbix-agentd: 192.168.0.10 : ALLOW

Tester depuis le serveur Zabbix

$ zabbix_get -s 192.168.0.25 -k agent.hostname
esxi25.lepesant.com

$ zabbix_get -s 192.168.0.25 -k agent.version 
2.4.3

Ca marche !

Publié dans linux, Mes docs | Laisser un commentaire

Installation snmpd sur VCSA 5.5

Installation des repository

Se connecter en SSH sur la VCSA5.5

zypper addrepo -f http://download.opensuse.org/repositories/net-snmp:/factory/SLE_11_SP2/ opensuse_snmp
zypper addrepo -f http://download.opensuse.org/distribution/11.2/repo/oss/ opensuse

Vérifier la configuration des nouveaux repos

zypper repos -d

Rafraichir les sources

zypper refresh

Installer Net-snmp

zypper install net-snmp

Configuration net-snmp

Editer le fichier /etc/snmp/snmpd.conf

Activer le service

# chkconfig snmpd on

Lancer le service

# /etc/init.d/snmpd start

Autoriser l’accès distant à snmpd

Ajouter 1 ligne suivantes à la fin du fichier « /etc/hosts.allow » pour autoriser votre serveur de polling snmp.

snmpd: 192.168.0.10 : ALLOW

Tester depuis le serveur snmp

$ snmpwalk -v 2c -c public -On 192.168.0.25 .1.3.6.1.2.1.1.1.0
.1.3.6.1.2.1.1.1.0 = STRING: Linux esxi25.lepesant.com 3.0.101-0.7.19-default #1 SMP Fri May 9 14:41:39 UTC 2014 (aab30c0) x86_64

Ca marche !

Publié dans linux, Mes docs | Laisser un commentaire

saltstack : remonter le master

Mon process Saltstack master fonctionne dans un container Docker.
Quand j’ai commencé à jouer utiliser Saltstack, je ne maîtrisais pas Docker (non plus, NDLR).
J’avais donc mon répertoire « file_roots: » (par défaut /srv/salt) dans mon container.

Et puis un jour j’ai voulu construire ma propre image Docker à partir d’un Dockerfile (docker build) pour Saltstack.

J’ai donc fait une copie dans ma HOME du répertoire « srv/salt » à partir du système AUFS.

mkdir -p srv/salt
sudo cp -a /var/lib/docker/aufs/mnt/ce45266348553e0e240e86dbb2cdbd27c50965f2f2d9707ec7a37a766e11cdbe/srv/salt/* srv/salt/
sudo chown -R hugues:hugues srv/salt

Puis j’ai buildé mon image, et je l’ai lancé.

docker run -i -t -p 4505:4505 -p 4506:4506 -v /home/hugues/srv:/srv hlepesant/saltstack:latest /bin/bash

Puis je rentre dedans avec docker-enter

docker ps
CONTAINER ID        IMAGE                   [...]
74601a54cf89        hugues/saltstack:latest [...]
docker-enter 74601a54cf89
root@74601a54cf89:/# 

Là les minions sont tous revenus voir papa.

root@74601a54cf89:/# salt-key -L
Accepted Keys:
Unaccepted Keys:
minion-01
minion-02
minion-03
Rejected Keys:
root@74601a54cf89:/# 

Le problème c’est que les commandes salt échouent lamentablement.

Pour débugger : https://salt.readthedocs.org/en/v2014.1.0rc1/topics/troubleshooting/minion.html

A grand coup de « # salt-call -l debug state.highstate » exécuté à partir d’un des minions, l’erreur devient plus flagrante.
La clef publique échangée entre le minion et le master n’est plus la même.

Pour y remédier :

1. Sur le master :

salt-key -d <minion_id>

2. Sur le minion

sudo rm /etc/salt/pki/minion/minion_master.pub
sudo /etc/init.d/salt-minion restart

3. Retour sur le master

salt-key -a <minion_id>

Et voilà.

Publié dans Mes docs, saltstack | Laisser un commentaire

OSSEC : Installation sur les distributions Debian et Ubuntu

OSSEC est un système de détection d’intrusion basé sur l’hôte (HIDS) qui effectue l’analyse des log, la vérification de l’intégrité des fichiers (FIM), de la surveillance des politiques, la détection de rootkit, les alertes en temps réel et la réponse active…..

Son installation sous Debian et Ubuntu est maintenant facilité par la mise à disposition des paquets adéquates par Alienvault.

Debian 7

wget -O - http://ossec.alienvault.com/repos/apt/conf/ossec-key.gpg.key | apt-key add -
echo "deb http://ossec.alienvault.com/repos/apt/debian wheezy main" >> /etc/apt/sources.list prix viagra 100mg.d/ossec.list
apt-get update
apt-get install ossec-hids

Ubuntu 14.04

wget -O - http://ossec.alienvault.com/repos/apt/conf/ossec-key.gpg.key | apt-key add -
echo "deb http://ossec.alienvault.com/repos/apt/ubuntu trusty main" >> /etc/apt/sources.list.d/ossec.list
apt-get update
apt-get install ossec-hids

Pour l’agent installer « ossec-hids-agent »

Publié dans Mes docs, sécurité | Laisser un commentaire

Docker Public Repository

Pour faciliter le développement et surtout le déploiement de l’application Zacacia, j’utilise Docker.
Les 2 containers sont disponibles sous forme de Dockerfile ici

<a href="https://registry.hub viagra a vendre.docker.com/repos/hlepesant/ » title= »My Repositories »>https://registry.hub.docker.com/repos/hlepesant/

Cela vous donne aussi un aperçu des possibilités de Docker, et son inscription complète dans la mouvance DevOps.

Publié dans docker, Mes Projets | Marqué avec | Laisser un commentaire

Saltstack : Création d’un minion

On part sur une installation toute fraiche et basic d’une Ubuntu 14.04 LTS Server.
Seule l’option « OpenSSH server » a été choisie lors de létape Tasksel.

Une fois logger sur la nouvelle machine.

Ajout du repository et installation du paquet

sudo add-apt-repository ppa:saltstack/salt
sudo apt-get install -y salt-minion

Qui c’est ton papa ?

sudo -i
echo "192.168.10.10\t gru.lepesant.com gru" >> /etc/hosts
sed -i 's/^#master: salt/master: gru/' /etc/salt/minion

Va voir papa !

/etc/init.d/salt-minion restart

Et pour que le service démarre sur un reboot :

sudo update-rc.d salt-minion defaults

Sur Gru (Salt Master)

root@gru:/srv/salt# salt-key -L
Accepted Keys:
web-01.lepesant.com
sql-01.lepesant.com
Unaccepted Keys:
xen-01.lepesant.com
Rejected Keys:

root@gru:/srv/salt# salt-key -y -a xen-01.lepesant.com

The following keys are going to be accepted:
Unaccepted Keys:
xen-01.lepesant.com
Key for minion xen-01.lepesant.com accepted.

Et voilà.

Publié dans Mes docs, saltstack | Marqué avec , | Un commentaire

Saltstack : renommer un minion

Il est parfois nécessaire de renommer votre minion.

Si vous ne forcer pas l’id du minion dans /etc/salt/minion, mais que vous laissez « socket.getfqdn() » le définir, vous devrez modifier les fichiers :

  • /etc/hostname
  • /etc/hosts

Puis, sur le minion :

  1. arrêter le service salt-minion
  2. supprimer le fichier /etc/salt/minion_id
  3. Relancer le service salt-minion

Sur le master :

  1. Supprimer la clef de l’ancien minion
  2. salt-key -d <old_minion_id>
    
  3. Afficher la nouvelle demande d’enregistrement
  4. salt-key -L
    
  5. Ajouter la clef du nouveau
  6. salt-key -a <new_minion_id>
    
Publié dans Uncategorized | Un commentaire

Saltstack

Logo SaltStack

En tant que « devops« , je suis amené à installer et surtout configurer un nombre important de serveurs / machines virtuelles. Bien souvent les systèmes installés sont identiques. Un serveur LAMP ressemble très souvent à son voisin. Surtout si celui-ci fait partie de la même ferme de serveur Web.

La gestion des fichiers de configuration peut s’avérer fastidieuse.

Sur un projet professionel récent, j’ai été amené à gérer une dizaine de serveur Docker (Wikipedia : Docker).
Tous configurés de la même manière au nom et à l’IP prêts.

Rapidement j’ai cherché un outils me facilitant le boulot.

Il existe différents outils qui permettent une gestion centralisée des fichiers de configuration d’un serveur.
Les plus connus sont :

  • Puppet,
  • Chef,
  • Cfengine.

Un petit (pas si) nouveau pointe le bout de son nez depuis 2011: SaltStack.

C’est ce dernier que j’ai décidé d’utiliser car j’ai eu un très bon retour de ma Grotte à Barbus francophones préférées, dont l’un des gourous acteurs et ami, avait écrit un article dans Linux Magazine.

De plus il est écrit en python ce qui ne gache rien, et la learning curve est compatible avec mes enjeux de mise en production ;-).

Vous trouverez ici quelques articles faisant écho de mon retour d’expérience sur SaltStack.

  1. Création d’un Minion
  2. Renommer un minion
Publié dans Mes docs, saltstack | Marqué avec , | Laisser un commentaire

noNoseOnTV part 3

Voici le dernier code source de l’appareil NoNoseOnTV.

Et voici le schéma :


Sensor_bb

// # Author  : Hugues Lepesant
// # Date    : 30/04/2014
// # Version : 0.3
 
// # URM Code based on Jiang's work from DFRobot
// # Product name:ultrasonic scanner Kit
// # Product SKU:SEN0001
  
// # Description:
// # The Sketch for scanning 180 degree area 4-500cm detecting range
  
// # Connection:
// #       Pin 1 VCC (URM V3.2) -> VCC (Arduino)
// #       Pin 2 GND (URM V3.2) -> GND (Arduino)
// #       Pin 4 PWM (URM V3.2) -> Pin 6 (Arduino)
// #       Pin 6 COMP/TRIG (URM V3.2) -> Pin 5 (Arduino)
// # Pin mode: PWM
// # Working Mode: PWM passive control mode.
// # If it is your first time to use it,please make sure the two jumpers to the right hand
// # side of the device are set to TTL mode. You'll also find a secondary jumper on
// # the left hand side, you must break this connection or you may damage your device.


#include <IRremote.h>
#include <NewTone.h>


const int URPWM = 6;      // PWM Output 0-25000us,every 50us represent 1cm
const int URTRIG = 5;     // PWM trigger pin

const int greenLedPin = 2;
const int yellowLedPin = 4;
const int redLedPin = 7;
const int buzzerPin = 8;
 
const int distMinimum = 100; // 1 meter
const int distMedium  = 150; // 1 meter and half

const int duration = 800;
int alert = 0;
int tvPower = 1;
 
//boolean up=true;       // create a boolean variable
//unsigned long time;    // create a time variable
//unsigned long urmTimer = 0; // timer for managing the sensor reading flash rate
unsigned int Distance=0;

IRsend irsend;
 
uint8_t EnPwmCmd[4]={0x44,0x22,0xbb,0x01}; // distance measure command
  
void setup() {             // Serial initialization
    Serial.begin(9600);    // Sets the baud rate to 9600
 
    pinMode(greenLedPin, OUTPUT);
    digitalWrite(greenLedPin, LOW);
     
    pinMode(yellowLedPin, OUTPUT);
    digitalWrite(yellowLedPin, LOW);
     
    pinMode(redLedPin, OUTPUT);
    digitalWrite(redLedPin, LOW);
 
    PWM_Mode_Setup();
}
  
void loop() {
  Distance = PWM_Mode();

  
  Serial.print("Distance = ");
  Serial.print(Distance);
  Serial.println(" cm");
   
  if ( Distance > distMedium ) {
    digitalWrite(greenLedPin, HIGH);
    digitalWrite(yellowLedPin, LOW);
    digitalWrite(redLedPin, LOW);
    
    if ( tvPower == 0 ) {
      SendPowerCode(tvPower);
      tvPower = 1;
    }
    
    alert = 0;
  }
 
  if ( Distance > distMinimum && Distance < distMedium ) {
    digitalWrite(greenLedPin, LOW);
    digitalWrite(yellowLedPin, HIGH);
    digitalWrite(redLedPin, LOW);
  }
 
  if ( Distance < distMinimum ) {
    digitalWrite(greenLedPin, LOW);
    digitalWrite(yellowLedPin, LOW);
    digitalWrite(redLedPin, HIGH);
    
    alert++;

    NewTone(buzzerPin, 440, duration);


    if (alert > 2) {
      if ( tvPower == 1 ) {
        SendPowerCode(tvPower);
      }
      tvPower = 0;
    }
 }

  delay(1000);
  
  Serial.print("ALERT = ");
  Serial.println(alert);
}
 
  
void PWM_Mode_Setup(){
    pinMode(URTRIG,OUTPUT);       // A low pull on pin COMP/TRIG
    digitalWrite(URTRIG,HIGH);    // Set to HIGH
  
    pinMode(URPWM, INPUT);        // Sending Enable PWM mode command
     
    for (int i=0;i<4;i++) {
        Serial.write(EnPwmCmd[i]);
    }
}
  
int PWM_Mode(){                   // a low pull on pin COMP/TRIG  triggering a sensor reading
    digitalWrite(URTRIG, LOW);
    digitalWrite(URTRIG, HIGH);   // reading Pin PWM will output pulses
      
    unsigned long DistanceMeasured=pulseIn(URPWM,LOW);
      
    if (DistanceMeasured==50000) { // the reading is invalid.
      return 0;
    } else {
        return DistanceMeasured/50; // every 50us low level stands for 1cm
    }
}

void SendPowerCode(int tvPower)
{
  for (int i = 0; i < 3; i++) {
    irsend.sendSony(0xa90, 12); // Sony TV power code
    delay(100);
  }
  
  if ( tvPower == 1 ) {
    Serial.print("Signal Off sent");
  } else {
    Serial.print("Signal On sent");
  }
}

Publié dans Mes Projets | Laisser un commentaire