GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer Ansible sur CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

Ansible est un outil de gestion de configuration gratuit, et il prend en charge la gestion des configurations des systèmes de type Unix et Microsoft Windows. Ansible gère les nœuds via SSH ou PowerShell et python à installer dessus.

Ansible vous aide à effectuer la configuration, la gestion et le déploiement de logiciels sur des centaines de nœuds à l'aide de SSH, l'ensemble de l'opération peut être exécuté par une seule commande ansible . Mais, dans certains cas, vous devrez peut-être exécuter plusieurs commandes pour le déploiement.

Ce guide vous aidera à installer Ansible sur CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .

Architecture

Si vous utilisez d'autres outils de gestion de la configuration tels que puppet, chef et CFEngine, le logiciel serveur est installé sur une machine et les machines clientes sont gérées via l'agent. Dans Ansible, les nœuds sont gérés en contrôlant la machine (serveur Ansible) via SSH, de sorte qu'aucun agent ne s'exécute sur les machines de nœud.

Ansible déploie des modules sur des nœuds via SSH, et ces modules sont temporairement stockés dans les nœuds et communiquent avec le serveur Ansible via un protocole JSON. Les modules ne sont rien d'autre qu'un script écrit en Python, Perl, Ruby , bash, etc.

Configuration requise

Contrôle de la machine

Vous pouvez exécuter Ansible sur n'importe quelle machine sur laquelle Python 2.6 ou 2.7 est installé (Windows n'est pas pris en charge pour la machine de contrôle).

Prend en charge Red Hat, Debian, CentOS, OS X, l'un des BSD.

Nœuds clients

Les machines clientes doivent au moins avoir Python 2 (version 2.6 ou ultérieure) ou Python 3 (version 3.5 ou ultérieure)

Si vous avez activé SELinux sur des nœuds distants, vous devrez installer libselinux-python package sur les nœuds avant d'utiliser des fonctions liées à la copie/fichier/modèle dans Ansible

Environnement

Nom d'hôte Adresse IP SE Objectif
server.itzgeek.local 192.168.1.10 CentOS 7 / Ubuntu 18.04 / Debian 9 Contrôle de la machine
node1.itzgeek.local 192.168.1.20 CentOS 7 Nœud géré 1
node2.itzgeek.local 192.168.1.30 Ubuntu 18.04 Nœud géré 2

Installez Ansible sur CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

Configurer la machine de contrôle

Pour installer Ansible, nous devrons Activer le référentiel EPEL sur CentOS 7 / RHEL 7 .

### CentOS 7 ###

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

### RHEL 7 ###

subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms

### Ubuntu 18.04 / Ubuntu 16.04 ###

sudo apt-get update
sudo apt-get install software-properties-common 
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update 

### Debian 9 ###

sudo apt-get install dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list
sudo apt-get update

Installez Ansible.

### CentOS 7 / RHEL 7 & Fedora 28 ###

yum install -y ansible

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y ansible

Une fois Ansible installé, vérifiez la version d'Ansible en exécutant la commande ci-dessous.

ansible --version

Sortie :

ansible 2.6.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

Configurer les nœuds gérés

Les machines clientes doivent au moins avoir Python 2 (version 2.6 ou ultérieure) ou Python 3 (version 3.5 ou ultérieure).

### CentOS 7 / RHEL 7 & Fedora ###

yum install -y python

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y python

SELinux (CentOS / RHEL / Fedora)

Si SELinux est activé sur les nœuds gérés, vous devrez installer le package ci-dessous sur les nœuds avant d'utiliser les fonctions liées à la copie/fichier/modèle dans Ansible.

yum install -y libselinux-python

Authentification SSH

Comme indiqué précédemment, Ansible utilise OpenSSH natif pour la communication à distance. Ansible prend en charge à la fois sans mot de passe et mot de passe authentification pour exécuter des commandes sur des nœuds gérés.

Authentification par clé SSH (Authentification sans mot de passe)

En ce qui concerne l'authentification ssh, par défaut, il utilise des clés ssh (authentification sans mot de passe) pour s'authentifier auprès de la machine distante.

LIRE  :Comment configurer la connexion sans mot de passe SSH sur CentOS 7 / RHEL 7

Bien que le lien ci-dessus concerne CentOS, les étapes de celui-ci fonctionneront également pour Ubuntu / Debian.

Une fois que vous avez configuré la communication sans mot de passe, vérifiez-la.

ssh [email protected]
ssh [email protected]

Vous devriez maintenant pouvoir vous connecter à la machine distante sans le mot de passe.

Authentification par mot de passe

L'authentification par mot de passe peut également être utilisée si nécessaire en fournissant l'option --ask-pass . Cette option nécessite sshpass à la machine de contrôle.

### CentOS 7 / RHEL 7 & Fedora ### 

yum install -y sshpass 

### Ubuntu 18.04 / 16.04 & Debian 9 ### 

sudo apt-get update
sudo apt-get install -y sshpass
Ici, pour cette démo, j'ai utilisé une communication sans mot de passe entre le nœud de contrôle ansible et les nœuds gérés.
Nom d'utilisateur du serveur Ansible =root
Nom d'utilisateur du nœud géré =raj

Créer un inventaire Ansible

Modifiez (ou créez) /etc/ansible/hosts fichier. Ce fichier contient l'inventaire des hôtes distants auxquels Ansible se connectera via SSH pour les gérer.

### CentOS 7 / RHEL 7 & Fedora ###

vi /etc/ansible/hosts

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo nano /etc/ansible/hosts

Mettez un ou plusieurs systèmes distants et regroupez-le. Ici, j'ai ajouté les deux machines au groupe demo-servers.

Les groupes sont utilisés pour classer les systèmes à usage particulier. Si vous ne spécifiez aucun groupe, ils agiront comme des hôtes non groupés.

[demo-servers]
192.168.1.20
192.168.1.30

Première commande

Il est maintenant temps de vérifier tous nos nœuds en faisant simplement un ping depuis la machine de contrôle, pour ce faire, nous allons utiliser la commande ansible avec les options -m (module de chargement) et tous (tous les serveurs).

# all servers - Works when both server's and client's user name are same (Passwordless)

ansible all -m ping

# all servers - "raj" is managed node's user (Passwordless)

ansible all -u raj -m ping

OR

# Only demo-servers group - "raj" is managed node's user (Passwordless)

ansible demo-servers -u raj -m ping

OR

# If you use password authendication

ansible -m ping all -u raj --ask-pass

Sortie :

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Dans l'exemple ci-dessus, nous avons utilisé le module ping avec ansible commande pour envoyer un ping à tous ou à un groupe d'hôtes distants.

De la même manière, nous pouvons utiliser différents modules avec ansible commande, vous pouvez trouver les modules disponibles ici .

Ici, pour cette démo, j'ai utilisé une communication sans mot de passe entre le nœud de contrôle ansible et les nœuds gérés.
Nom d'utilisateur du serveur Ansible =root
Nom d'utilisateur du nœud géré =raj
Ainsi, toutes mes commandes ansible auront -u raj

Exécution de commandes à distance

Cette fois, nous allons utiliser la commande module avec ansible commande pour obtenir des informations sur la machine distante.

Par exemple, nous exécuterons hostname commande avec commande module pour obtenir le nom d'hôte des hôtes distants en une seule fois.

ansible -m command -a "hostname" -u raj demo-servers

Sortie :

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

Nous obtiendrons les détails de la partition avec la commande ci-dessous.

ansible -m command -a "df -hT" -u raj demo-servers

Sortie :

192.168.1.30 | SUCCESS | rc=0 >>
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     395M  1.5M  393M   1% /run
/dev/sda4      ext4       94G  4.9G   84G   6% /
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0     squashfs   87M   87M     0 100% /snap/core/4486
/dev/loop3     squashfs  3.4M  3.4M     0 100% /snap/gnome-system-monitor/36
/dev/loop1     squashfs  1.7M  1.7M     0 100% /snap/gnome-calculator/154
/dev/loop2     squashfs  141M  141M     0 100% /snap/gnome-3-26-1604/59
/dev/loop4     squashfs   21M   21M     0 100% /snap/gnome-logs/25
/dev/loop5     squashfs   88M   88M     0 100% /snap/core/5328
/dev/loop6     squashfs   13M   13M     0 100% /snap/gnome-characters/69
/dev/sda1      vfat       93M  4.6M   88M   5% /boot/efi
tmpfs          tmpfs     395M   28K  395M   1% /run/user/120
tmpfs          tmpfs     395M   36K  395M   1% /run/user/1000
/dev/loop7     squashfs   15M   15M     0 100% /snap/gnome-logs/40

192.168.1.20 | SUCCESS | rc=0 >>
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        50G  1.1G   49G   3% /
devtmpfs                devtmpfs  1.4G     0  1.4G   0% /dev
tmpfs                   tmpfs     1.5G     0  1.5G   0% /dev/shm
tmpfs                   tmpfs     1.5G  8.5M  1.4G   1% /run
tmpfs                   tmpfs     1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  188M  827M  19% /boot
/dev/mapper/centos-home xfs        46G   33M   46G   1% /home
tmpfs                   tmpfs     287M     0  287M   0% /run/user/1000
tmpfs                   tmpfs     287M     0  287M   0% /run/user/0

Pour vérifier la disponibilité et les détails de charge sur les deux nœuds.

 ansible -m command -a "uptime" -u raj demo-servers

Sortie :

192.168.1.30 | SUCCESS | rc=0 >>
 16:36:45 up 56 min,  3 users,  load average: 0.00, 0.00, 0.00

192.168.1.20 | SUCCESS | rc=0 >>
 16:36:45 up  1:09,  2 users,  load average: 0.05, 0.04, 0.05

Vous pouvez également vérifier le contenu du fichier particulier.

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers

Sortie :

192.168.1.30 | SUCCESS | rc=0 >>
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53

192.168.1.20 | SUCCESS | rc=0 >>
# Generated by NetworkManager
search itzgeek.local
nameserver 8.8.8.8
nameserver 192.168.1.1

Vous pouvez également enregistrer la sortie dans n'importe quel fichier en redirigeant comme ci-dessous.

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file

cat /tmp/ouput_file

De cette manière, vous pouvez exécuter de nombreuses commandes shell à l'aide d'ansible.

Vous avez maintenant installé avec succès Ansible sur CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .

EN SAVOIR PLUS  :Comment créer des playbooks Ansible pour l'automatisation informatique

C'est tout.


Cent OS
  1. Comment installer Apache Hadoop sur CentOS 7, Ubuntu 18.04 et Debian 9

  2. Comment installer Redis sur CentOS 7 / RHEL 7 et Ubuntu 18.04 / Ubuntu 16.04

  3. Comment installer Ansible sur Debian 11

  4. Comment installer Ansible sur CentOS 7

  5. Comment installer SSHFS sur CentOS/RHEL/Ubuntu

Comment installer Kubernetes sur CentOS 7, Ubuntu 18.04 / 16.04 et Debian 9

Comment installer et configurer Ansible sur CentOS 8 / RHEL 8

Comment installer TeamViewer 15 sur Fedora/RHEL/CentOS et Debian/Ubuntu

Comment installer VestaCP sur Ubuntu/ Debian et RHEL/Centos

Comment installer Zabbix sur RHEL/CentOS et Debian/Ubuntu

Comment installer TeamViewer 15 sur RHEL/CentOS/Fedora et Debian/Ubuntu