Dans cet article, nous aurons expliqué les étapes nécessaires pour installer et configurer Ansible sur Ubuntu 18.04 LTS. Avant de poursuivre ce didacticiel, assurez-vous que vous êtes connecté en tant qu'utilisateur avec des privilèges sudo. Toutes les commandes de ce didacticiel doivent être exécutées en tant qu'utilisateur non root.
Ansible est un outil de configuration et d'automatisation gratuit et open source pour le système d'exploitation de type UNIX. Il est écrit en python et similaire à Chef ou Puppet mais il y a une différence et un avantage d'Ansible est que nous n'avons pas besoin d'installer d'agent sur les nœuds. Il utilise SSH pour établir la communication avec ses nœuds.
Dans cet article, nous allons montrer comment installer et configurer Ansible dans Ubuntu et essayer de gérer ses deux nœuds :
- Serveur Ansible – ansible.idroot.us ( 192.168.13.33 )
- Client Ansible – 192.168.100.120
Installer Ansible sur Ubuntu
Étape 1. Tout d'abord, avant de commencer à installer un package sur votre serveur Ubuntu, nous vous recommandons de toujours vous assurer que tous les packages système sont mis à jour.
sudo apt update sudo apt upgrade
Étape 2. Installez Ansible sur Ubuntu.
Nous devons d'abord activer le référentiel ansible. Installez le référentiel avec la commande suivante :
sudo apt-add-repository ppa:ansible/ansible
Après avoir ajouté le référentiel Ansible, exécutez les commandes ci-dessous pour l'installer :
sudo apt update sudo apt install ansible
Lors de l'installation réussie d'Ansible, vous pouvez vérifier la version d'ansible installée en exécutant :
sudo ansible --version
Étape 3. Configuration de la configuration SSH sans mot de passe entre le serveur ansible et le client ansible.
Nous devons générer des clés ssh sur le serveur ansible et copier cette clé dans la clé publique sur le client ansible :
[[email protected] ~]# ssh-keygen -t rsa -b 4096 -C "[email protected]" 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:rqAwbwQ8/meilanamaria4D2V0fQ49amw2WKbYIA [email protected] The key's randomart image is: +---[RSA 4096]----+ | .oo.+o | | . =.=.. . | |. E o + X . o | |.o. + + = X . | | .o. + oSX + | | .. o.+ = | |o. o oo.o | | +.. +oo | | .o ... | +----[SHA256]-----+ [[email protected] ~]#
Nous pouvons utiliser la commande ssh-copy-id pour copier la clé publique du serveur ansible vers les clients ansible :
[[email protected] ~]# ssh-copy-id [email protected] /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /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 [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added. [[email protected] ~]#
[[email protected] ~]# ssh-copy-id [email protected] /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.43.131 (192.168.43.131)' can't be established. ECDSA key fingerprint is SHA256:OuHrnRxppengenkimpoi5Z+1tOWOF8eYZ5Le5MNwUQ. ECDSA key fingerprint is MD5:78:1c:a5:72:bb:25:fa:c7:67:39:fc:91:b9:fb:b6:20. 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 [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added. [[email protected] ~]# =============================== [[email protected] ~]# ssh [email protected] Last login: Thu Sep 19 16:00:57 2019 from bezafari-c1 [[email protected] ~]# exit logout Connection to 192.168.100.120 closed. [[email protected] ~]#
Nous devons vérifier que notre serveur ansible et nos clients ansible fonctionnent avec ou sans mot de passe ? Nous pouvons vérifier comme ci-dessous :
[[email protected] ~]# ssh [email protected] Last login: Thu Jan 17 17:00:57 2019 from bezafari-c1 [[email protected] ~]# exit logout Connection to 192.168.100.120 closed. [[email protected] ~]#
Étape 4. Configuration du serveur Ansible pour gérer le client Ansible.
Vous pouvez faire l'inventaire de notre serveur ansible et de notre client ansible en utilisant le fichier hôte du serveur ansible. Le fichier hôte peut être trouvé dans ce chemin sur le serveur ansible /etc/ansible/host :
[[email protected] ~]# nano /etc/ansible/hosts [test-servers] 192.168.13.33 192.168.100.120
Étape 5. Gérer le client ansible à partir du serveur ansible.
Vérifiez la connectivité des « serveurs de test » ou des clients ansibles à l'aide de ping :
[[email protected] ~]# ansible -m ping 'test-servers' 192.168.13.33 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.100.120 | SUCCESS => { "changed": false, "ping": "pong" } [[email protected] ~]#
Nous pouvons vérifier la disponibilité de notre client ansible à partir du serveur ansible :
[[email protected] ~]# ansible -m command -a "uptime" 'test-servers' 192.168.100.120 | CHANGED | rc=0 >> 16:17:35 up 20 min, 3 users, load average: 0.09, 0.16, 0.29 192.168.13.33 | CHANGED | rc=0 >> 16:17:35 up 22 min, 4 users, load average: 0.18, 0.29, 0.55 [[email protected] ~]#
Redirection de la sortie de la commande vers un fichier. Comme ci-dessous :
[[email protected] ~]# ansible -m command -a "df -Th" 'test-servers' > /tmp/command-output.txt [[email protected] ~]# cat /tmp/command-output.txt 192.168.13.33 | CHANGED | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 13G 5.0G 8.0G 39% / devtmpfs devtmpfs 482M 0 482M 0% /dev tmpfs tmpfs 497M 212K 497M 1% /dev/shm tmpfs tmpfs 497M 7.1M 490M 2% /run tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 158M 340M 32% /boot tmpfs tmpfs 100M 16K 100M 1% /run/user/0 192.168.100.120 | CHANGED | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 13G 3.9G 9.1G 30% / devtmpfs devtmpfs 906M 0 906M 0% /dev tmpfs tmpfs 921M 84K 920M 1% /dev/shm tmpfs tmpfs 921M 8.7M 912M 1% /run tmpfs tmpfs 921M 0 921M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 157M 341M 32% /boot tmpfs tmpfs 185M 20K 184M 1% /run/user/42 tmpfs tmpfs 185M 0 185M 0% /run/user/0 [[email protected] ~]#
C'est tout ce que vous avez à faire pour installer Ansible sur Ubuntu 18.04. J'espère que vous trouverez cette astuce rapide utile. Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire ci-dessous.