Comment installer Ansible sur Mac OS X à l’aide de Homebrew et controller des serveurs Linux

Ansible est un outil d’automatisation avec lequel il est relativement facile de se mettre à niveau. Aujourd’hui, nous aborderons les bases de l’installation d’Ansible, de la connexion à vos serveurs cibles et de l’exécution de vos premiers Playbooks. Cette documentation est extraite de différentes sources du web et aménagée pour les besoins de ce tutoriel. Attention une connaissance avancé dans l’environnement Linux et MacOS est requise et il faudra certainement adapter ce tutoriel à vos besoins de configuration.

Tout d’abord, assurez-vous d’installer Homebrew :

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrew est un gestionnaire de packages pour Mac OS X qui vous permet d’installer de nombreux packages utiles pour le développement Web / logiciel.

$ brew install ansible

Une fois l’installation terminée, vous pouvez confirmer qu’Ansible s’est installé correctement en exécutant :

$ ansible --version
ansible 2.7.5
  config file = None
  configured module search path = ['/Users/percy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/2.7.5/libexec/lib/python3.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.2 (default, Dec 27 2018, 07:35:52) [Clang 10.0.0 (clang-1000.11.45.5)]

Si ansible --version fonctionne avec succès, félicitations! Vous avez maintenant la puissance d’Ansible à portée de main et vous êtes prêt à commencer à gérer vos serveurs.

Configuration SSH :

!!! En considérant que openssh est installé sur les machines Linux cibles et que SSH est activé sur votre MacOS.

Comme macOS est livré avec une installation d’usine de Python, il suffit d’activer SSH. Nous pouvons le faire à partir de la ligne de commande, comme ceci :

sudo systemsetup -setremotelogin on

Pour simplifier les choses et qu’Ansible fasse sa magie, il doit établir des connexions SSH entre le serveur de contrôle et chacun des serveurs cibles. Pour ce faire, nous pouvons générer des clés SSH sur le serveur de contrôle (qui peut très raisonnablement être votre ordinateur portable). Nous pouvons ensuite copier la clé publique sur chacun de nos serveurs cibles, et nous serons prêt.

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jeffdvincent/.ssh/id_rsa): ansible
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ansible.
Your public key has been saved in ansible.pub.
The key fingerprint is:
SHA256:gDvNzDP8so43IylFbfOonOF8rB3my+2iZmhf5hGG7NA jeffdvincent@penguin
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|     .           |
|    ...          |
|   o.O+.         |
|  ..E.@+S        |
|   ooo.=.        |
|   *.*B .        |
|  + @XB*         |
| . ==BO*o        |
+----[SHA256]-----+

Notez que nous avons nommé notre clé ansible . Ce n’est pas du tout nécessaire, mais nous utiliserons cette clé exclusivement à cette fin, et la dénomination explicite rendra les choses plus faciles plus tard.

Vous pouvez et devrez entrer votre mot de passe pour chaque serveur auquel vous souhaitez ajouter la clé.

Ensuite, nous devrons copier notre clé ansible.pub sur chacun de nos serveurs cibles, comme ceci:

$ ssh-copy-id -i ~/.ssh/ansible.pub <user>@<target_iaddress> -p
password:

Enfin, clonez le repository mac-dev-playbook sur le serveur de contrôle, comme ceci (vous pouvez également , pour ceux qui sont à l’aise cloner un autre repository correspondant plus à vos besoins) :

git clone https://github.com/geerlingguy/mac-dev-playbook.git

Ansible regarde le fichier d’ inventory que nous transmettons sur la ligne de commande pour trouver les serveurs auxquels se connecter et sur lesquels agir. Il est à noter que les clés SSH sont le moyen privilégié de sécuriser votre connexion. Par souci de concision, nous utiliserons ici l’authentification par mot de passe.

A titre d’exemple voici un fichier de configuration d’inventaire, adaptez le à votre configuration :

# inventory
[all:vars]
anisble_connection=ssh
ansible_ssh_user=admin
ansible_ssh_pass=<ssh password=""></ssh>

[hosts]
Port_8823_VM-1 ansible_ssh_port=8823 ansible_ssh_host=10.10.10.16
Port_8824_VM-2 ansible_ssh_port=8824 ansible_ssh_host=10.10.10.16

Ci-dessus, nous avons défini nos informations d’identification SSH et créé un groupe de serveurs, d’ hôtes . Vous pouvez définir vos points de connexion de différentes manières, mais j’ai trouvé que le modèle ci-dessus de nom d’ hôte , de port et d’ IP hôte fonctionne bien, car il peut parfois être difficile de faire en sorte qu’Ansible prenne le port dans d’autres modèles. . Cela peut entraîner des problèmes lorsque les machines virtuelles sont exposées par port sur une seule adresse IP, comme dans notre exemple ci-dessus.

Par défaut, le mac-dev-playbook pointe vers la machine locale. Afin de changer ce comportement, nous allons devoir supprimer entièrement la ligne trois du fichier main.yml et enregistrer.

---
- hosts: all
 connection: local

 vars_files:
   - default.config.yml
...

Le fichier résultant devrait ressembler à ceci :

---
- hosts: all

 vars_files:
   - default.config.yml
...

Modifier le fichier ansible.cfg

Pour qu’Ansible puisse réussir à agir en tant qu’utilisateur SSH, nous devrons soit nous connecter manuellement en SSH dans chacun de nos serveurs cibles une fois, afin d’ajouter les serveurs cibles à la liste des hôtes de confiance sur le serveur de contrôle, ou nous pouvons mettre à jour notre fichier ansible.cfg pour désactiver la vérification de la clé hôte, comme ceci :

[defaults]
host_key_checking = False

Installer les éxigences Ansible : Homestretch. Exécutez ce qui suit pour donner à Ansible ce dont il a besoin pour exécuter le playbook spécifique cloner ci-dessus dans l’exemple :

ansible-galaxy install -r requirements.yml

Par la suite nous verrons comment configurer et exécuter les playbooks.

A Suivre !!!