2 févr. 2016

[DOCKER] C’est quoi et à quoi ça sert ?

Présentation de Docker

Docker a révolutionné le monde du logiciel open-source et du cloud. Inventé par Solomon Hykes et Sébastien Barbier, cet outil innovant permet de pallier à tous les problèmes actuels du cloud computing tels que le déploiement d’applications et le packaging. Quelques points bons à savoir sur l’utilité et les avantages de ce logiciel open-source.

Docker : à quoi ça sert ?

Docker permet d’automatiser le déploiement d’applications dans des conteneurs logiciels grâce à une API simple. Avec cet outil, il sera possible d’ajouter plusieurs applications ainsi que ses dépendances dans un container virtuel qui pourra par la suite être lancé sur tous types de serveurs comme Linux. Son principal objectif est de rendre faciles la gestion des conteneurs et les déploiements des applications. Grâce à un hub collaboratif, Docker offre à tout le monde l’opportunité de mettre rapidement en place un système de conteneur et de faire un partage d’images. Ces dernières pourront après être servies pour réaliser la base de construction des conteneurs. À signaler qu’il sera possible de basculer une application entre les clouds de Google, de Microsoft et d’Amazon en utilisant Docker.

Docker : en quoi est-ce avantageux ?

Praticité, portabilité, facilité des déploiements et de gestion, nombreuses sont les raisons d’opter pour cet outil disponible en juin 2014. Contrairement à la virtualisation, Docker est beaucoup plus léger parce qu’elle ne nécessite pas l’utilisation d’un OS supplémentaire grâce au container. En plus, l’exécution des applications se fait automatiquement, sans avoir besoin de passer par la lourde procédure d’installation. D’où la rapidité du lancement qui facilitera les tâches des développeurs et des testeurs. La ligne de commande est capable en elle-même de charger le container et de l’exécuter. Ce n’est pas tout, c’est facile de lancer et d’arrêter les containers en fonction des besoins.

1 févr. 2016

[ANSIBLE] lineinfile: n'ajouter une ligne qu'une seule fois

Dernièrement, il m'est arrivé lors de l’exécution d'un playbook une seconde fois d'incrémenter une seconde fois avec les mêmes valeurs le fichier /etc/hosts ...

Dans ma vision de Ansible, on devrait pouvoir executer plusieurs fois un playbook sans avoir de parasites, doublons etc.

J'ai trouver une solution en passant par "register" pour éviter ce genre de problème.

  • Je vérifie si il y a la chaine de caractère en amont, avec shell j'utilise la command linux "grep" pour voir si la chaine de caractère est présente
  • Ensuite j'utilise register pour stocker le resultat tout en ignorant les erreurs avec ignore_errors: true (sans ça le script ansible s'arrête à cause d'une erreur fatale)
  • Puis je modifie /etc/hosts en utilisant lineinfile avec when qui permet de vérifier si le résultat stocké précédement dans register est vide ou non (fait un failed ou non).
  • Si le register hosts_grep est vide; la commande lineinfile s'execute.
  • j'espère être clair ! ;-)
Ci après un example :
roles/config/tasks/main.yml

# Vérification de /etc/hosts
- name: Test for line
  shell: grep openldap /etc/hosts
  ignore_errors: true
  register: hosts_grep
# Modification de /etc/hosts
- name: Modification /etc/hosts
  sudo: true
  lineinfile:
    dest=/etc/hosts
    regexp=''
    insertafter=EOF
    line="10.250.0.108 openldap01\n10.250.0.109 openldap02"
    state=present
  when: hosts_grep|failed
Bien faire attention à l'indentation !

29 janv. 2016

[ANSIBLE] Redémarrer un serveur avec ansible et attendre son retour

Il y a des actions qui nécessite un redémarrage du système (même sous Linux !)


Cependant, avec ANSIBLE, quand on lance un redémarrage du serveur, il faut indiquer qu'il faut attendre un certain temps avant de lancer l'action suivante. Sinon, c'est un échec assuré...

Car l'hôte distant doit être UP, et encore, même quand on le ping, le serveur n'a peut être pas lancer tout ses services...

On peut donc ajouter un délai d'attente avec le module wait_for. Voici les lignes de code qui pourront vous aider si vous êtes dans cette situation.


### Redémarrage
- name: restart machine
  shell: sleep 2 && shutdown -r now "Ansible updates triggered"
  async: 1
  poll: 0
  sudo: true
  ignore_errors: true
### Attente que le serveur soit revenu!
- name: waiting for server to come back
  local_action: wait_for host={{ inventory_hostname }} state=started delay=30 timeout=300
  sudo: false
 SOURCE:  https://support.ansible.com/hc/en-us/articles/201958037-Reboot-a-server-and-wait-for-it-to-come-back

27 janv. 2016

[UNIX/LINUX] http_proxy avec des caractères spéciaux




Il arrive que l'on n'ai mis des caractères spéciaux dans son mot de passe pour le sécuriser au maximum.
Cependant, lorsque l'on veut faire un export http_proxy, on se retrouve avec des erreurs telles que Bad number port (Mauvais numéro de port) ou autre




Si notre mot de passe est F@o:o!B#ar$ et que l'on fait:
export http_proxy="http://user:F@ooB#ar$@proxyserver.test:8080/"
On va avoir une erreure due au caractères spéciaux...
Une solution existe! il s'agit de convertir les caractères problématiques en caractère hexadecimal.

on peut utiliser la commande urlencode pour avoir un code hexadecimal:
(sous CentOS il faut le package gridsite-clients)

Utiliser la commande "urlencode" en mettant bien le mot de passe entre guillemet:
$ urlencode "F@ooB#ar$"
F%40ooB%23ar%24
Après, il s'agit de remplacer le mot de passe par cette chaine de caractères:
& export http_proxy="http://user:F%40ooB%23ar%24@proxyserver.test:8080/"
On peut ensuite tester :
$ curl -I http://astunix.blogspot.com
$ wget http://astunix.blogspot.com

26 janv. 2016

[PTI - BTS IG] Installation et Administration Base de données




Nature de l'activité

Installation et Administration
Base de données




Contexte : Mettre en place une base de donnée afin d’administrer et d’organiser les données clients de la société ALLCOM

Objectifs : Installation et administration d’une base de donnée SQL

Compétences mises en œuvre pour la réalisation de cette activité
C24
C37
Installer un SGBD
Administration d’une base donnée

Conditions de réalisations
Matériels :
-          2 postes
Logiciels :
-          Windows XP Professionnel
-          Debian Linux
Durée : 25 minutes

Description de l'activité réalisée
Situation initiale :
L’entreprise ne possède aucune base de données et aucun serveur SQL
Situation finale :
L’entreprise possède une base de donnée sous MySQL


I/ Existant

1.1/ schéma


Personne (num_p, nom, prenom)
Compte (num_c, date_crea, solde, #num_p)
Operation (num_o, date_op, type_op, montant_op, #num_c)

1.2/ Création de la base de donnée « ALLCOM »


Créer un script :
allcom.sql
drop database allcom;
create database allcom;
use allcom;
create table personne (num_p int auto_increment, nom varchar(60), prenom varchar(60), primary key (num_p));
create table compte (num_c int auto_increment, date_crea date, solde float, num_p int, primary key (num_c), foreign key (num_p) references personne(num_p));
create table operation (num_o int auto_increment, date_op date, type_op varchar(60), montant_op float, num_c int, primary key (num_o), foreign key (num_c) references compte(num_c));
L’enregistrer sur C:\allcom.sql puis

mysql –u root –p

Lancer le script sql:

source c:\allcom.sql

II/ Opération table de base de donnée « ALLCOM »

2.1/ Attributs


Montrer les attribus de la table « Personne » :

Show columns from personne;

2.2/ Entrées


Montrer les entrées de la table « Personne » :

Select * from personne;


III/ Modification de la table « ALLCOM »

3.1/ Colonnes


Ajout d’une colonne dans la table « Personne » :

alter table personne add adresse varchar(60) ;


Puis vérifier que la modification est effective :

show columns from personne;


Supprimer la colonne précédemment créée :

alter table personne drop adresse;


3.3/ Lignes


Insertion d’une ligne dans la table « Compte » :

Insert into compte (date_crea, solde, num_p) values(‘2009-06-08’, 7777, 3) ;

IV/ Création d’un utilisateur

Créer l’utilisateur BIRD et ajouter les droits pour la base « pti » :

grant all on pti. * to bird identified by ‘bird’ ;


Vérifier les droits de l’utilisateur BIRD;

Show grants for bird ;


Test en se connectant avec l’utilisateur BIRD depuis le client :

mysql –h 192.168.23.1 –u bird –p


Voir à quelles bases BIRD a accès depuis le client :

show databases ;


Supprimer l’utilisateur :

Revoke ?


 Fait en BTS Informatique de Gestion (Administrateur de Réseaux Locaux d'Entreprise) Devenu  BTS Services informatiques aux organisations

[PTI - BTS IG] Serveur DHCP avec relais




Nature de l'activité

Serveur DHCP avec relais

Contexte : Le parc informatique de l’entreprise ALLCOM étant assez conséquent la direction informatique souhaiterait mettre en place un serveur DHCP pour couvrir ses deux réseaux.

Objectifs : Mettre en place un serveur DHCP avec un relais


Compétences mises en œuvre pour la réalisation de cette activité

C21
C22
C23
C31
C32
C36

Installer et configurer un microordinateur
Installer et configurer un réseau
Installer et configurer un dispositif de sécurité
Assurer les fonctions de base de l'administration d'un réseau
Assurer les fonctions de l'exploitation
Assurer la maintenance d'un poste de travail

Conditions de réalisations
Matériels :
-          4 ordinateurs :
o   1 serveur
o   1 relais
o   2 clients
Logiciels :
-          Gnu/Linux Debian 5
-          Windows XP Professionnel
-          Wireshark (Ethereal)
Durée : 25 minutes

Description de l'activité réalisée
Situation initiale :
-          Serveur : sous Debian avec un service telnet-server installé
-          Clients : sous Debian et Windows
-          Deux réseaux
Situation finale :
-          Serveur DHCP + relais configuré

 




I/ Existant

1.1/ schema

 


Serveur DHCP : 192.168.1.2
Client Windows :192.168.1.3

Passerelle (relais):
·         Eth0:192.168.1.1
·         Eth1: 192.168.5.1


Client Linux: 192.168.5.3

1.2/ Paquets installés


Serveur
Passerelle (relais)
Dhcp3-server
Dhcp3-relay

II/ Configuration simple

2.1/ Serveur DHCP : attribution automatique


Faire une copie du fichier /etc/dhcpd.conf puis l’éditer :
# # indique que notre serveur fait autorité sur le réseau (master) :
authoritative;
# # indique le temps de vie ou bail d'attribution d'adresse IP (temps exprimé en secondes) :
# # ici notre bail par défaut est de 24h et notre bail maximum est de 7 jours
default-lease-time 86400;
max-lease-time 604800;
# # paramétrage sur le plan d'adressage en 192.168.1.0/24
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.100;
option domain-name "allcom.loc";
option routers 192.168.1.1;
}
Après avoir opéré ces modifications, démarrer le service DHCP :
#/etc/init.d/dhcp3-server start

Sur le client lancer une requête DHCP et voir le résultat.

2.2/ DHCP : attribution par adresse MAC


A la fin du fichier de configuration ajouter :

# # on attribue une adresse IP fixe (un serveur par exemple)
# # grâce à l'adresse MAC du client :
host poste-windows {
hardware ethernet 08:00:27:EF:FF:F6 ;
fixed-address 192.168.1.3 ;
}

Relancer une requête DHCP sur le client.

III/ Relais DHCP

3.1/ Configuration


Sur le relais
Faire une copie de /etc/default/dhcp3-relay puis éditer.
##########
# RELAIS DHCP
##########
# A quel serveur voulez-vous que le relais DHCP transfert les requêtes ?
SERVERS="192.168.1.2"
# Sur quelles interfaces voulez-vous que le relais DHCP travaille ?
# bien prendre en compte l'interface d'entrée et de sortie
INTERFACES="eth0 eth1"

Puis démarrer le service de relais DHCP.

Sur le serveur
Rajouter une plage d’adressage dans le fichier de configuration de DHCP :
subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.20 192.168.5.100;
option domain-name "allcom.loc";
option routers 192.168.5.1;
}

Puis redémarrer le service DHCP

3.2/ Analyse


Analysons les requêtes DHCP sur le réseau

[...]




Fait en BTS Informatique de Gestion (Administrateur de Réseaux Locaux d'Entreprise) Devenu  BTS Services informatiques aux organisations

Différences majeures entre Red Hat 6, 7, 8 et 9

Quelles sont les différences majeures entre RHEL 6, 7, 8 et 9 ? Système de fichiers RHEL 6: Par défaut : ext4. Autres : ext2, ext3 supportés...