Dans l’article ci-dessous, je vais essayé de vous expliquer comment installer et utiliser https://www.ansible.com/.
Celui-ci va vous permettre de :
– mettre en place rapidement de nouveau services sur un ou plusieurs serveur simultanément
– mettre en place rapidement des nouvelles applications sur un ou plusieurs serveur simultanément
– autre chose dont vous auriez besoin dans votre infrastructure.
Avec ansible, cela me permet par exemple
– de déployer rapidement de nouvelle sonde avec NSClient++ et de les maintenir à jour.
– de maintenir à jour les applications
Pour réaliser l’installation je me base sur les scripts créé ou modifier sont disponible ici.
– https://github.com/tips-of-mine/ansible/
– https://notepad-plus-plus.org/fr/
– https://www.nsclient.org/
– https://www.centreon.com/
1. INSTALLATION ANSIBLE
Nous commençons par mettre le bon repos Centos 7 en place
yum install epel-release*
Nous faisons une mise à jours global du serveur
yum update -y
Puis nous pouvons installer Ansible
yum install ansible
Nous installons python2-pip
yum install python2-pip
Nous mettons le composant pywinrm pour interagir avec les Windows
pip install pywinrm
Nous mettons aussi à jour PIP
pip install –upgrade pip
2. CONTROLE INSTALLATION
Nous pouvons contrôler l’installation
ansible –version
3. PARAMETRAGE DE CONTROLE A DISTANCE
Nous générons une clé ssh pour les serveurs Linux
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Tomf0+za6xTttxBFu7U7UIQh1nBug/5oOyV/qig/Fk8 root@ANSIBLE
The key’s randomart image is:
+—[RSA 2048]—-+
| +oo+. |
| . =+.. |
| . +o..|
| . …..oo.|
| . S ..o… |
| + = Eoo. .|
| = Bo*..o |
| . Boo.+ o.|
| ==*+o.+ |
+—-[SHA256]—–+
Nous pouvons donc l’envoyer sur l’ensemble des serveurs que nous désirons
ssh-copy-id root@prod-apache-1
La clé ce copie
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: « /root/.ssh/id_rsa.pub »
The authenticity of host ‘prod-apache-1 (prod-apache-1)’ can’t be established.
RSA key fingerprint is SHA256:vL55i7RpHXCUczkiSorPMph8x9MiNb5L4Z8r4ElaCAg.
RSA key fingerprint is MD5:42:69:37:89:01:49:ca:12:d6:cb:69:9c:38:b9:7c:06.
Are you sure you want to continue connecting (yes/no)?# yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
root@prod-apache-1’s password:# mot de passe root de Centreon Server
Number of key(s) added: 1
Now try logging into the machine, with: « ssh ‘root@prod-apache-1′ »
and check to make sure that only the key(s) you wanted were added.
Nous pouvons tester la connexion
ssh ‘root@prod-apache-1’
Nous quittons le session distant
exit
4. PARAMETRAGE
Nous devons créer les fichiers inventaires dans le répertoire /opt/ansible/inventaire
Nous créons un fichier par serveur
nano /opt/ansible/inventaire/active-directory-1.inv
Dans celui nous mettons
active-directory-1
Nous créons un fichier pour l’infrastructure global
nano /opt/ansible/inventaire/production.inv
Dans celui nous mettons
[all:vars]
ansible_connection=local
[tomcat]
prod-haproxy-1
prod-haproxy-2
[apache]
prod-apache-1
prod-apache-2
[mysql]
prod-mysql-[1:2]
[linux:children]
apache
mysql
[active-directory]
active-directory-1
active-directory-2
[dhcp]
dhcp-1
dhcp-2
[dns]
dns-1
dns-2
[hyper-v]
hyper-v-1
hyper-v-2
[windows:children]
active-directory
dhcp
dns
hyper-v
[windows:vars]
ansible_user=administrateur
ansible_password=P@ssw0rd
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
5. Exemple pour LINUX
Maintenant qu’ansible est installé, nous allons pouvoir rapidement passer à l’action.
Après avoir placé l’ensemble des fichiers se trouvant sur GIT (https://github.com/tips-of-mine/ansible/) dans le répertoire /opt
Avec celui-ci nous installons et modifions l’ensemble des services SNMP, ce qui permet de faire du monitoring rapidement
ansible-playbook -b -i /opt/ansible/inventaire/production.inv /opt/ansible/yml/Centos-Install-FusionInventory.yml
J’ai commencé à me créer une liste de fichier sur GIT pour faire divers tâche et je continuerai à la maintenir à jour.
6. Exemple pour WINDOWS
Maintenant qu’ansible est installé, nous allons pouvoir rapidement passer à l’action.
Nous commençons par exécuter sur chaque serveur Windows le script Powershell https://github.com/ansible/ansible/tree/devel/examples/scripts/
Vous devez télécharger et exécuter le script ConfigureRemotingForAnsible.ps1
Après avoir placé l’ensemble des fichiers se trouvant sur GIT (https://github.com/tips-of-mine/ansible/) dans le répertoire /opt
Avec celui-ci nous installons et modifions l’ensemble des services SNMP, ce qui permet de faire du monitoring rapidement
ansible-playbook -b -i /opt/ansible/inventaire/production.inv /opt/ansible/yml/Windows-Install-Service-SNMP.yml
Avec celui-ci nous installons et modifions le programme NSClient, en plus nous y intégrons nos scripts personnalisés pour l’ensemble de Windows
ansible-playbook -b -i /opt/ansible/inventaire/production.inv /opt/ansible/yml/Windows-Install-NSClient.yml
Avec celui-ci nous installons la version désirée de Notepad++
ansible-playbook -b -i /opt/ansible/inventaire/production.inv /opt/ansible/yml/Windows-Install-Notepad++.yml
Avec celui-ci nous installons FusionInventory pour maintenir à jour l’inventaire de notre parc
ansible-playbook -b -i /opt/ansible/inventaire/production.inv /opt/ansible/yml/Windows-Install-FusionInventory.yml<
Avec celui-ci nous installons le service Hyper-v
ansible-playbook -b -i /opt/ansible/inventaire/production.inv /opt/ansible/yml/Windows-Install-Service-Hyper-V.yml
J'ai commencé à me créer une liste de fichier sur GIT pour faire divers tâche et je continuerai à la maintenir à jour.