Dans ce tutoriel, je vais vous expliquer comment organiser vos hôtes dans un fichier d’inventaire au format YAML à la place du format du fichier d’origine avec Ansible.
Si vous découvrez ansible, je vous invite à lire ce tutoriel avant : Ansible : installation, configuration et utilisation avec Windows et Linux
Pour commencer voici notre fichier d’inventaire, pour faire « simple », le fichier ne sera constitué que de serveur Windows.
[windows]
LAB-DC1 ansible_host=192.168.100.1
LAB-SRV-1 ansible_host=192.168.100.5
LAB-SRV-IIS-1 ansible_host=192.168.100.101
LAB-SRV-IIS-2 ansible_host=192.168.100.102
[windows:var]
[email protected]
ansible_password=secret_password
ansible_port=5985
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
ansible_winrm_transport=credsspDans le fichier, nous avons un groupe windows qui contient la liste des serveurs puis la configuration de ce groupe avant les informations de connexions aux serveurs windows:var.
Dans la maintenance au quotidien, je souhaite faire jouer 2 playbook :
- Un playbook qui va gérer les mises à jour Windows pour tous les hôtes. (playbook-wu-install-update.yml)
- Un playbook qui va gérer la rotation des logs IIS. (playbook-iis-logrotate.yml)
Pour répondre à cette solution, je vais créer un nouveau fichier d’inventaire au format YAML dans lequel, on va créer un sous-groupe (enfant) qui va contenir les serveurs IIS.
Dans un premier temps, nous allons transposer le fichier d’inventaire à l’identique au format YAML.
Voici le fichier d’inventaire :
all:
hosts:
LAB-DC1:
ansible_host: 192.168.100.1
LAB-SRV-1:
ansible_host: 192.168.100.5
LAB-SRV-IIS-1:
ansible_host: 192.168.100.101
LAB-SRV-IIS-2:
ansible_host: 192.168.100.102
vars:
ansible_user: [email protected]
ansible_password: secret_password
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
ansible_winrm_transport: credsspDans le fichier, nous avons créer un premier groupe : all, qui contient tous les hôtes, par défaut lors de l’appel de ce fichier d’inventaire, le groupe all est appelé, le groupe vars est aligné sur la partie hosts du all.
Maintenant, on va créer un groupe enfant (iisservers) de all, qui va contenir les deux serveurs IIS.
Voici le fichier :
all:
hosts:
LAB-DC1:
ansible_host: 192.168.100.1
LAB-SRV-1:
ansible_host: 192.168.100.5
LAB-SRV-IIS-1:
ansible_host: 192.168.100.101
LAB-SRV-IIS-2:
ansible_host: 192.168.100.102
children:
issservers:
hosts:
LAB-SRV-IIS-1:
LAB-SRV-IIS-2:
vars:
ansible_user: [email protected]
ansible_password: secret_password
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
ansible_winrm_transport: credssp Le groupe enfant iisservers est déclaré et on peut voir que celui-ci contient la déclaration des deux serveurs IIS qui se trouve dans all
Si vous avez regarder les deux playbooks au début de ce tutoriel, ils sont tous les deux appliqués aux groupes all.
Pour les mises à jour voici la commande :
ansible-playbook /path/file/playbook-wu-install-update.yml -i /path/file/hosts.yml -f 10Ici l’appel du playbook se fait de façon « classique » en indiquant le chemin du fichier, le parametre –i permet d’indiquer le fichier d’inventaire et le paramètre -f optionnel, permet d’indiquer le nombre d’exécution simultané (ici il n’a pas d’intérêt).
Maintenant, on va passer au playbook pour les serveurs IIS, on va ajouter en plus un paramètre -l (limit) qui va prendre comme valeur le nom du groupe (iisservers)
Ce qui nous donne :
ansible-playbook /path/file/playbook-iis-logrotate.yml -i /path/file/hosts.yml -l iisservers -f 10Le paramètre -l peut aussi prendre un hôte, si vous souhaitez appliquer le playbook à un seul hôte, ce qui peut être utile si vous utilisez un playbook pour planifier le redémarrage des serveurs.
Pour finir ce tutoriel, il est possible si cela est nécessaire, appliquer des variables au niveau de l’hôte, si par exemple celui-ci est hors domaine et que vous devez lui indiquer des identifiants différents.
Voici un exemple :
all:
hosts:
LAB-DC1:
ansible_host: 192.168.100.1
LAB-SRV-1:
ansible_host: 192.168.100.5
LAB-SRV-IIS-1:
ansible_host: 192.168.100.101
LAB-SRV-IIS-2:
ansible_host: 192.168.100.102
LAB-SRV-IIS-DMZ-3:
ansible_host: 192.168.99.10
ansible_user: administrateur
ansible_password: LocalPassword
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: basic
ansible_winrm_scheme: http
children:
issservers:
hosts:
LAB-SRV-IIS-1:
LAB-SRV-IIS-2:
LAB-SRV-IIS-DMZ-3:
vars:
ansible_user: [email protected]
ansible_password: secret_password
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
ansible_winrm_transport: credsspJ’espère que ce tutoriel sur l’inventaire vous aura aider à y voir plus clair sur comment gérer vos hôtes avec Ansible.
