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

Comment installer et configurer Ansible sur CentOS 8 / RHEL 8

Ansible est un outil de provisionnement de logiciels open source et de gestion de la configuration pour les systèmes d'exploitation de type Unix et Microsoft Windows.

Contrairement à Puppet, Chef et CFEngine, le logiciel serveur est installé sur une seule machine et les machines clientes sont gérées via le logiciel agent. Dans Ansible, les nœuds sont gérés en contrôlant le nœud (serveur Ansible) via SSH, de sorte qu'aucun logiciel agent ne s'exécute sur les machines de nœuds gérés (serveurs clients).

Ansible peut effectuer le déploiement, la gestion de la configuration de logiciels sur des centaines de nœuds à l'aide de SSH, l'ensemble de l'opération est normalement 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 8 / RHEL 8.

Environnement

Nom d'hôte Adresse IP SE Objectif
server.itzgeek.local 192.168.0.10 CentOS 8 / RHEL 8 Contrôle de la machine
node1.itzgeek.local 192.168.0.20 CentOS 8 Nœud géré 1
node2.itzgeek.local 192.168.0.30 CentOS 7 Nœud géré 2

Installer Ansible sur CentOS 8/RHEL 8

Configurer le nœud de contrôle

Pour installer Ansible, nous devrons activer EPEL et le référentiel Ansible sur CentOS 8 et RHEL 8, respectivement.

### CentOS 8 ###

yum install -y epel-release

### RHEL 8 ###

subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms

Installez Ansible avec la commande yum.

yum 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.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

Configurer le nœud géré

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 8 / RHEL 8 ###

yum install -y platform-python

### CentOS 7 / RHEL 7 ###

yum install -y python

SELinux

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.

### CentOS 8 / RHEL 8 ###

yum install -y python3-libselinux

### CentOS 7 / RHEL 7 ###

yum install -y libselinux-python

Authentification SSH

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

Ici, pour cette démo, j'ai utilisé une communication sans mot de passe entre le nœud de contrôle ansible (racine) et les nœuds gérés (racine). Cependant, je vais vous montrer comment utiliser Ansible avec une authentification par mot de passe.

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 8 / RHEL 8

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

Comme vous le savez, le provisionnement logiciel ou les modifications de configuration que vous effectuez sur les nœuds nécessitent des privilèges root ou des privilèges équivalents root (sudo). Ainsi, configurez une communication sans mot de passe entre l'utilisateur racine du serveur Ansible et l'utilisateur racine des nœuds pour plus de facilité.

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 sur la machine de contrôle.

yum install -y sshpass 

Créer un inventaire Ansible

Le fichier /etc/ansible/hosts contient l'inventaire des hôtes distants auxquels Ansible se connectera via SSH/Winrm (Windows) pour les gérer. Pour le moment, nous verrons uniquement comment gérer les configurations du nœud Linux distant.

Modifiez le fichier d'inventaire.

vi /etc/ansible/hosts

Mettez-y l'adresse IP ou le nom d'hôte d'un ou plusieurs systèmes distants. Vous pouvez regrouper des serveurs avec [GROUP_NAME]. Ici, j'ai ajouté les deux machines au groupe demoservers.

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

[demoservers]
192.168.0.20
192.168.0.30

Vérifier la connectivité Ansible

Vérifions la connectivité des nœuds en utilisant le ping (module) de la machine de contrôle. Pour cela, nous allons utiliser la commande ansible avec les options -m (load module) et all (tous les serveurs) ou demoservers (un groupe de nœuds).

Ce module ping est souvent utilisé pour résoudre les problèmes de connectivité Ansible.
# All servers - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping all

# All servers - If you use passwordless authentication and the remote user is different from logged in user on Ansible server

ansible -m ping -u raj all

# All servers - If you use password authentication and the remote user is different from logged in user on Ansible server

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

# Only demoservers group - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping demoservers

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 vu comment utiliser le module ping avec la commande ansible pour envoyer un ping à tous ou à un groupe d'hôtes distants avec une authentification sans mot de passe et par mot de passe.

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

Exécuter la commande sur les nœuds

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

Les commandes ci-dessous sont écrites en supposant que vous disposez d'une communication sans mot de passe entre le nœud de contrôle et les nœuds gérés. J'utilise un groupe de demoservers pour exécuter des commandes.

Vérifier le nom d'hôte

Dans notre premier exemple, nous allons exécuter la commande hostname avec le module de commande pour obtenir le nom d'hôte des nœuds distants en une seule fois.

ansible -m command -a "hostname" demoservers

Sortie :

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

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

Vérifier la disponibilité

Pour vérifier la disponibilité des nœuds.

 ansible -m command -a "uptime" demoservers

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

Lire les fichiers distants

Vous pouvez également afficher le contenu d'un fichier particulier.

ansible -m command -a "cat /etc/hosts" demoservers

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

Redirection de la sortie du fichier

Vous pouvez également enregistrer la sortie (sur le serveur Ansible) dans n'importe quel fichier en utilisant la redirection.

ansible -m command -a "cat /etc/resolv.conf" demoservers > /tmp/ouput_file

cat /tmp/ouput_file

Effectuer des modifications de configuration sur le nœud

Nous pouvons utiliser le module lineinfile pour éditer des fichiers sur des nœuds distants. Par exemple, pour ajouter des serveurs de noms supplémentaires, nous pouvons utiliser la commande ci-dessous.

ansible -m lineinfile -a "path=/etc/resolv.conf line=nameserver 8.8.4.4" demoservers

Vous pouvez valider les modifications à l'aide de la commande ci-dessous.

ansible -m command -a "cat /etc/resolv.conf | grep -i nameserver" demoservers

Conclusion

C'est tout. Vous avez maintenant installé avec succès Ansible sur CentOS 8 / RHEL 8. Vous pouvez continuer à créer des playbooks Ansible pour automatiser vos tâches.


Cent OS
  1. Comment installer Ansible sur CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

  2. Comment installer Ansible sur CentOS 7

  3. Comment installer Ansible sur CentOS 8

  4. CentOS / RHEL 7 :Comment installer et configurer telnet

  5. Comment installer et configurer Samba dans CentOS / RHEL

Comment installer et configurer samba sur RHEL 8 / CentOS 8

Comment installer YUM sur RHEL 8 / CentOS 8

Comment installer mongodb sur RHEL 8 / CentOS 8

Comment installer maven sur RHEL 8 / CentOS 8

Comment installer et configurer Checkmk sur CentOS 8 / RHEL 8

Comment installer et configurer Jenkins sur CentOS 8 / RHEL 8