Ansible est l'outil de choix de nos jours si vous devez gérer plusieurs périphériques, que ce soit Linux, Windows, Mac, périphériques réseau, VMware et bien plus encore. Ce qui rend Ansible populaire, c'est sa fonctionnalité sans agent et son contrôle granulaire. Si vous avez travaillé avec python ou avez de l'expérience avec yaml , vous vous sentirez chez vous avec Ansible. Pour voir comment vous pouvez installer Ansible, cliquez ici.
Les modules de base Ansible vous permettront de gérer presque tout si vous souhaitez écrire des playbooks, mais il y a souvent quelqu'un qui a déjà écrit un rôle pour un problème que vous essayez de résoudre. Prenons un exemple, vous souhaitez gérer des clients NTP sur les machines Linux, vous avez 2 choix soit écrire un rôle qui peut être appliqué aux nœuds soit utiliser ansible-galaxy pour télécharger un rôle existant que quelqu'un a déjà écrit/testé pour vous. La galaxie ansible a des rôles pour presque tous les domaines et ceux-ci répondent à différents problèmes. Vous pouvez visiter https://galaxy.ansible.com/ pour avoir une idée des domaines et des rôles populaires dont il dispose. Chaque rôle publié sur le référentiel galaxy est minutieusement testé et a été évalué par les utilisateurs, vous avez donc une idée de la façon dont les autres personnes qui l'ont utilisé l'ont aimé.
Pour continuer à avancer avec l'idée NTP, voici comment vous pouvez rechercher et installer un rôle NTP à partir de galaxy.
Tout d'abord, lançons ansible-galaxy avec l'indicateur d'aide pour vérifier quelles options cela nous donne
[[email protected] ~]# ansible-galaxy --help
Comme vous pouvez le voir dans la sortie ci-dessus, certaines options intéressantes ont été présentées, puisque nous recherchons un rôle pour gérer les clients ntp, essayons l'option de recherche pour voir à quel point il est bon de trouver ce que nous recherchons.
[[email protected] ~]# ansible-galaxy search ntp
Voici la sortie tronquée de la commande ci-dessus.
Il a trouvé 341 correspondances basées sur notre recherche, comme vous pouvez le voir dans la sortie ci-dessus, bon nombre de ces rôles ne sont même pas liés à NTP, ce qui signifie que notre recherche a besoin d'être affinée, cependant, il a réussi à extraire certains rôles NTP, creusons plus profondément pour voir quels sont ces rôles. Mais avant cela, laissez-moi vous dire la convention de dénomination suivie ici. Le nom d'un rôle est toujours précédé du nom de l'auteur afin qu'il soit facile de séparer les rôles portant le même nom. Ainsi, si vous avez écrit un rôle NTP et que vous l'avez publié sur le référentiel galaxy, il ne sera pas confondu avec le référentiel de quelqu'un d'autre portant le même nom.
Avec cela à l'écart, continuons notre travail d'installation d'un rôle NTP pour nos machines Linux. Essayons bennojoy.ntp pour cet exemple, mais avant de l'utiliser, nous devons comprendre deux choses, ce rôle est-il compatible avec la version d'ansible que j'utilise. En outre, quel est le statut de la licence de ce rôle. Pour les comprendre, exécutons ci-dessous la commande ansible-galaxy,
[[email protected] ~]# ansible-galaxy info bennojoy.ntp
ok donc ceci dit que la version minimale est 1.4 et que la licence est BSD, téléchargeons-la
[[email protected] ~]# ansible-galaxy install bennojoy.ntp - downloading role 'ntp', owned by bennojoy - downloading role from https://github.com/bennojoy/ntp/archive/master.tar.gz - extracting bennojoy.ntp to /etc/ansible/roles/bennojoy.ntp - bennojoy.ntp (master) was installed successfully [[email protected] ~]# ansible-galaxy list - bennojoy.ntp, master [[email protected] ~]#
Trouvons le rôle nouvellement installé.
[[email protected] ~]# cd /etc/ansible/roles/bennojoy.ntp/ [[email protected] bennojoy.ntp]# ls -l total 4 drwxr-xr-x. 2 root root 21 May 21 22:38 defaults drwxr-xr-x. 2 root root 21 May 21 22:38 handlers drwxr-xr-x. 2 root root 48 May 21 22:38 meta -rw-rw-r--. 1 root root 1328 Apr 20 2016 README.md drwxr-xr-x. 2 root root 21 May 21 22:38 tasks drwxr-xr-x. 2 root root 24 May 21 22:38 templates drwxr-xr-x. 2 root root 55 May 21 22:38 vars [[email protected] bennojoy.ntp]#
Je vais exécuter ce rôle nouvellement téléchargé sur mon nœud Elasticsearch CentOS. Voici mon fichier hosts
[[email protected] ~]# cat hosts [CentOS] elastic7-01 ansible_host=192.168.1.15 ansibel_port=22 ansible_user=linuxtechi [[email protected] ~]#
Essayons de pinger le nœud en utilisant le module ping ansible ci-dessous,
[[email protected] ~]# ansible -m ping -i hosts elastic7-01 elastic7-01 | SUCCESS => { "changed": false, "ping": "pong" } [[email protected] ~]#
Voici à quoi ressemble le fichier ntp.conf actuel sur le nœud élastique.
[[email protected] ~]# head -30 /etc/ntp.conf
Puisque je suis en Inde, ajoutons le serveur in.pool.ntp.org à ntp.conf. Je devrais modifier les variables dans le répertoire par défaut du rôle.
[[email protected] ~]# vi /etc/ansible/roles/bennojoy.ntp/defaults/main.yml
Modifiez l'adresse du serveur NTP dans le paramètre "ntp_server", après la mise à jour, il devrait ressembler à ci-dessous.
La dernière chose maintenant est de créer mon playbook qui appellerait ce rôle.
[[email protected] ~]# vi ntpsite.yaml --- - name: Configure NTP on CentOS/RHEL/Debian System become: true hosts: all roles: - {role: bennojoy.ntp}
enregistrer et quitter le fichier
Nous sommes prêts à exécuter ce rôle maintenant, utilisez la commande ci-dessous pour exécuter ntp playbook,
[[email protected] ~]# ansible-playbook -i hosts ntpsite.yaml
La sortie du playbook ntp ansible ci-dessus devrait être quelque chose comme ci-dessous,
Vérifions le fichier mis à jour maintenant. allez au nœud élastique et affichez le contenu du fichier ntp.conf
[[email protected] ~]# cat /etc/ntp.conf #Ansible managed driftfile /var/lib/ntp/drift server in.pool.ntp.org restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 [[email protected] ~]#
Au cas où vous ne trouveriez pas de rôle répondant à vos besoins, ansible-galaxy peut vous aider à créer une structure de répertoires pour vos rôles personnalisés. Cela aide vos playbooks ainsi que les variables, les gestionnaires, les modèles, etc. assemblés dans une structure de fichiers standardisée. Créons notre propre rôle, c'est toujours une bonne pratique de laisser ansible-galaxy créer la structure pour vous.
[[email protected] ~]# ansible-galaxy init pk.backup - pk.backup was created successfully [[email protected] ~]#
Vérifiez la structure de votre rôle à l'aide de la commande tree,
Permettez-moi d'expliquer rapidement à quoi servent chacun de ces répertoires et fichiers, chacun d'entre eux a un but.
Le tout premier est les par défaut répertoire qui contient les fichiers contenant des variables avec la priorité la plus faible, si les mêmes variables sont affectées dans le répertoire var, elles seront prioritaires sur default. Les gestionnaires répertoire héberge les gestionnaires. Le fichier et modèles conservez tous les fichiers que votre rôle peut avoir besoin de copier et les modèles jinja à utiliser respectivement dans les playbooks. Les tâches répertoire est l'endroit où vos playbooks contenant les tâches sont conservés. Le répertoire var est constitué de tous les fichiers hébergeant les variables utilisées dans role. Le répertoire de test se compose d'un exemple d'inventaire et de playbooks de test qui peuvent être utilisés pour tester le rôle. Le méta répertoire se compose de toutes les dépendances sur d'autres rôles ainsi que des informations sur l'auteur.
Enfin, README.md Le fichier se compose simplement de quelques informations générales comme la description et la version minimale d'ansible avec laquelle ce rôle est compatible.