GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer et utiliser Ansible sur Debian 11

Ansible est un outil de gestion de configuration gratuit, open-source et l'un des plus populaires. Il s'agit d'un outil multiplateforme qui simplifie le cloud computing, la gestion de la configuration, l'installation des packages et la configuration des services. Il utilise un fichier YAML qui contient les étapes que l'utilisateur souhaite exécuter sur une machine particulière. Avec Ansible, vous pouvez configurer et gérer plus d'hôtes avec une seule commande. Ansible est une alternative aux autres outils de gestion de configuration comme Chef et Puppet.

Dans cet article, je vais vous montrer comment installer et utiliser l'outil de gestion de configuration Ansible sur Debian 11.

Prérequis

  • Trois serveurs exécutant Debian 11.
  • Un mot de passe root est configuré sur chaque serveur.

Pour les besoins de ce didacticiel, nous utiliserons la configuration suivante :

  • Contrôleur Ansible - 192.168.10.9
  • Hôtes Ansibles - 192.168.10.10, 192.168.10.11

Installer Ansible sur Debian 11

Par défaut, le paquet Ansible n'est pas inclus dans le dépôt par défaut de Debian. Il existe deux façons d'installer Ansible sur Debian 11.

  1. Utilisation de la commande APT
  2. Utiliser la commande PIP

Installer Ansible avec APT

Tout d'abord, vous devrez installer certaines dépendances dans votre système. Vous pouvez installer les dépendances requises à l'aide de la commande suivante :

apt-get install gnupg2 curl wget -y

Une fois toutes les dépendances installées, éditez le source.list d'APT et ajoutez le dépôt Ansible :

nano /etc/apt/sources.list

Ajoutez la ligne suivante :

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Enregistrez et fermez le fichier lorsque vous avez terminé, puis ajoutez la clé Ansible GPG à l'aide de la commande suivante :

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

Vous devriez voir le résultat suivant :

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.lFEjztT9TY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

Maintenant, mettez à jour le référentiel et installez Ansible avec la commande suivante :

apt-get update
apt-get install ansible -y

Une fois Ansible installé, vérifiez la version d'Ansible avec la commande suivante :

ansible --version

Vous devriez obtenir le résultat suivant :

ansible 2.10.8
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]

Installer Ansible avec PIP

Tout d'abord, vous devrez installer Python et PIP sur votre système. Vous pouvez l'installer à l'aide de la commande suivante :

apt-get install python3 python3-pip -y

Une fois l'installation terminée, utilisez la commande pip pour installer Ansible comme indiqué ci-dessous :

pip install ansible

Installer sshpass

Le sshpass est un outil de ligne de commande qui vous permet de fournir des mots de passe avec des commandes SSH. Ici, nous allons utiliser sshpass sur le nœud du contrôleur Ansible avec Ansible pour authentifier un hôte distant.

Vous pouvez installer le sshpass avec la commande suivante :

apt-get install sshpass -y

Ensuite, connectez-vous au premier hôte distant ansible pour ajouter une empreinte SSH à vos known_hosts fichier :

ssh [email protected]

Il vous sera demandé de fournir un mot de passe SSH comme indiqué ci-dessous :

The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
Password: 

Fournissez votre mot de passe et appuyez sur Entrée pour ajouter une empreinte SSH.

Ensuite, connectez-vous au deuxième hôte distant ansible pour ajouter une empreinte SSH à votre fichier known_hosts :

ssh [email protected]

Il vous sera demandé de fournir un mot de passe SSH comme indiqué ci-dessous :

The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.11' (ECDSA) to the list of known hosts.
Password: 

Indiquez votre mot de passe et appuyez sur Entrée .

Vous pouvez désormais utiliser la commande sshpass pour vérifier la connexion SSH :

sshpass -p yourpassword ssh [email protected]

Créer un fichier d'inventaire d'hôtes Ansible

Ensuite, vous devrez créer un fichier d'inventaire pour définir l'adresse IP, le nom d'utilisateur, le mot de passe et le port SSH de vos hôtes distants :

nano ~/.hosts

Ajoutez les lignes suivantes :

[servers]
server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22

Enregistrez et fermez le fichier.

Remarque :Dans le fichier ci-dessus, nous utiliserons l'adresse IP, le nom d'utilisateur, le mot de passe et le port SSH des hôtes distants.

Travailler avec Ansible

Ansible fournit de nombreux modules qui vous aident à gérer les hôtes distants.

La syntaxe de base pour exécuter Ansible comme indiqué ci-dessous :

ansible -i [inventory_file] -m [module] [host]

Vérifions la connectivité ping à tous les hôtes :

ansible -i ~/.hosts -m ping all

Si tout va bien, vous devriez obtenir le résultat suivant :

server2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Si vous souhaitez vérifier la connectivité ping du seul serveur1, exécutez la commande suivante :

ansible -i ~/.hosts -m ping server1

Vous devriez obtenir le résultat suivant :

server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Vous pouvez utiliser le module shell pour exécuter toutes les commandes sur les hôtes distants.

Par exemple, pour exécuter "free -m " sur le serveur2, exécutez la commande suivante :

ansible -i ~/.hosts -m shell -a "free -m" server2

Vous devriez voir le résultat suivant :

server2 | CHANGED | rc=0 >>
               total        used        free      shared  buff/cache   available
Mem:            1982         128         491           2        1363        1669
Swap:              0           0           0

Pour exécuter un "df -h " commad sur le serveur2, exécutez la commande suivante :

ansible -i ~/.hosts -m shell -a "df -h" server2

Vous devriez obtenir le résultat suivant :

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            976M     0  976M   0% /dev
tmpfs           199M  404K  198M   1% /run
/dev/sda1        50G  2.4G   45G   5% /
tmpfs           992M  124K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           199M     0  199M   0% /run/user/0

Ansible fournit un module apt pour installer n'importe quel paquet sur les hôtes distants.

Pour installer le Nginx package sur le serveur1, exécutez la commande suivante :

ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1

Vous devriez obtenir le résultat suivant :

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "cache_update_time": 1631424599,
    "cache_updated": false,
    "changed": true,
    "stderr": "",
    "stderr_lines": [],
        "Upgrading binary: nginx.",
        "Setting up nginx (1.18.0-6.1) ...",
        "Processing triggers for man-db (2.9.4-2) ...",
        "Processing triggers for libc-bin (2.31-13) ..."
    ]
}

Pour vérifier l'état du service Nginx sur le serveur1, exécutez la commande suivante :

ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1

Vous devriez obtenir le résultat suivant :

server1 | CHANGED | rc=0 >>
? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-09-12 05:55:36 UTC; 49s ago
       Docs: man:nginx(8)
    Process: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 10871 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 5.8M
        CPU: 54ms
     CGroup: /system.slice/nginx.service
             ??10871 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??10874 nginx: worker process

Sep 12 05:55:36 ansible systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:55:36 ansible systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Sep 12 05:55:36 ansible systemd[1]: Started A high performance web server and a reverse proxy server.

Ansible fournit un module utilisateur pour créer et gérer des utilisateurs sur les hôtes distants.

Pour créer un nouvel utilisateur nommé user1 sur le serveur1, exécutez la commande suivante :

ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1

Vous devriez voir le résultat suivant :

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 1000,
    "home": "/home/user1",
    "name": "user1",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/sh",
    "state": "present",
    "system": false,
    "uid": 1000
}

Conclusion

Dans cet article, vous avez appris à installer Ansible avec APT et PIP. Vous avez également appris à utiliser différents modules Ansible pour gérer des hôtes distants. J'espère que vous avez maintenant une compréhension suffisante d'Ansible. N'hésitez pas à me demander si vous avez des questions.


Debian
  1. Comment installer et utiliser les rétroportages Debian

  2. Comment installer et utiliser NVM sur Debian 11

  3. Comment installer et utiliser FFmpeg sur Debian 10

  4. Comment utiliser Ansible pour installer et configurer Redis 6 sur Debian 11

  5. Comment installer Ansible sur Debian 11

Comment installer et utiliser FFmpeg sur Debian 11

Comment installer et utiliser Ansible sur Debian 10

Comment installer et utiliser Mono sur Debian 11

Comment installer et utiliser PHP Composer sur Debian 11

Comment installer et utiliser Tripwire sur Debian 11

Comment installer et utiliser Telnet sur Debian 11 Bullseye