Ansible est un logiciel libre et open source qui peut être utilisé pour automatiser le provisionnement des logiciels, la gestion de la configuration et le déploiement des applications. Contrairement à Puppet ou Chef, vous n'avez pas besoin de configurer un environnement client-serveur avant d'utiliser Ansible. Vous pouvez gérer plusieurs hôtes à partir d'un emplacement central. Cet outil est très simple mais puissant pour automatiser des environnements d'applications informatiques complexes à plusieurs niveaux. Ansible communique via des canaux SSH normaux pour récupérer des informations à partir de machines distantes et effectuer des tâches.
Dans ce tutoriel, nous apprendrons comment installer et utiliser Ansible sur le serveur Ubuntu 18.04.
Exigences
- Deux systèmes de serveur Ubuntu 18.04 avec serveur OpenSSH installé.
- Une adresse IP statique 192.168.0.101 est configurée sur le système serveur et 192.168.0.104 est configurée sur le système client.
- Un utilisateur non root avec des privilèges sudo est configuré sur les deux systèmes.
Mise en route
Avant de commencer, mettez à jour votre système avec la dernière version avec la commande suivante :
sudo apt-get update -y
sudo apt-get upgrade -y
Une fois que votre système est à jour, redémarrez votre système pour appliquer les modifications.
Installer et configurer Ansible
Par défaut, la dernière version d'Ansible n'est pas disponible dans le référentiel par défaut d'Ubuntu 18.04. Vous devrez donc ajouter Ansible PPA à votre serveur. Vous pouvez le faire en exécutant la commande suivante :
sudo apt-add-repository ppa:ansible/ansible
Ensuite, mettez à jour le référentiel et installez Ansible avec la commande suivante :
sudo apt-get update -y
sudo apt-get install ansible -y
Une fois l'installation terminée, vous pouvez vérifier la version d'Ansible avec la commande suivante :
sudo ansible --version
Sortie :
ansible 2.7.1 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/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
Ensuite, vous devrez définir votre système client que vous souhaitez gérer dans le fichier d'hôtes Ansible. Vous pouvez le faire en éditant le fichier /etc/ansible/hosts :
sudo nano /etc/ansible/hosts
Ajoutez les lignes suivantes :
[Client] node1 ansible_ssh_host=192.168.0.104
Enregistrez et fermez le fichier lorsque vous avez terminé.
Configurer les clés SSH pour le système client
Ansible utilise SSH pour communiquer avec l'hôte client. Vous devrez donc configurer l'authentification ssh basée sur une clé pour l'hôte client.
Tout d'abord, générez une paire de clés SSH avec la commande suivante :
ssh-keygen
Sortie :
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:bTVjTCKqxD8rnIw7/6mB6ZH9cnhzzOFg+/+x4clSOow [email protected] The key's randomart image is: +---[RSA 2048]----+ | . . . | | . . . + | | o . * | | . o . o o | | . o S o | | O .oo.. . | | * Bo.* + oo | | ..oo+=.E =o = | | ooo*++...+* | +----[SHA256]-----+
Ensuite, copiez cette clé publique sur le système client avec la commande suivante :
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Sortie :
/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.
Travailler avec Ansible
Ansible est maintenant installé et configuré. Il est temps de tester Ansible.
Sur le serveur Ansible, essayez d'envoyer un ping à votre système client à l'aide d'Ansible avec la commande suivante.
ansible -m ping Client
Sortie :
node1 | SUCCESS => { "changed": false, "ping": "pong" }
Si vous avez plusieurs clients configurés dans votre fichier d'hôtes Ansible. Ensuite, vous pouvez envoyer un ping à tout le système Client avec la commande suivante :
ansible -m ping all
Vous pouvez vérifier l'état du serveur Web Apache sur le système client avec la commande suivante :
ansible -m shell -a 'service apache2 status' Client
Sortie :
node1 | CHANGED | rc=0 >> * apache2 is running
Pour vérifier la taille de la partition du système Client, exécutez la commande suivante :
ansible -m shell -a 'df -h' Client
Sortie :
node1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/sda1 138G 48G 83G 37% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 1.9G 4.0K 1.9G 1% /dev tmpfs 384M 1.2M 383M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.9G 67M 1.9G 4% /run/shm none 100M 36K 100M 1% /run/user /dev/sda5 225G 35G 180G 16% /Data
Toutes nos félicitations! vous avez installé et configuré avec succès Ansible sur le serveur Ubuntu 18.04. Vous pouvez désormais utiliser facilement Ansible pour exécuter des tâches simples à distance.