La popularité d'Ansible fait de cette suite d'outils une solution très demandée pour les missions de développement web. Les entreprises et les marques qui utilisent une telle technologie dans leur travail actuel (ou qui souhaitent l'essayer à l'avenir) seront plus qu'heureuses d'examiner Ansible de plus près.
Ce moteur d'automatisation open-source est très demandé, et il n'est pas étonnant qu'il contribue à l'automatisation simplifiée souhaitée. C'est ce que vous vous efforcez de faire dans votre entreprise. Vous pouvez donc utiliser quelques conseils pour optimiser la recherche et l'embauche de développeurs Ansible.
Choisir le meilleur candidat parmi tous ceux qui ont postulé n'est pas une tâche simple ; beaucoup répondront aux exigences de votre offre d'emploi, et c'est là qu'intervient la partie la plus délicate. Le risque est de mettre trop d'efforts, de temps et d'argent dans un processus qui a été mal planifié au départ et qu'il sera coûteux d'inverser par la suite.
Entrons dans le vif du sujet et clarifions les points essentiels d'Ansible et ce à quoi devrait ressembler le processus d'embauche des développeurs d'Ansible.
À propos d'Ansible
Ansible représente une suite d'outils logiciels (également considéré comme un moteur open-source pour l'automatisation et l'infrastructure informatique) utilisés pour la gestion de la configuration, l'orchestration et le déploiement d'applications, entre autres choses. D'autres utilisations tout aussi viables d'Ansible sont la mise à disposition d'infrastructures, la mise à jour de serveurs et de postes de travail, la mise à niveau de la sécurité, l'installation de logiciels, les systèmes de correctifs et le partage de l'automatisation à plus grande échelle.
Avec Ansible, les développeurs peuvent configurer des ordinateurs au niveau d'un réseau - et pas seulement un seul ordinateur. Il est simple à installer et à utiliser, et ne nécessite aucune infrastructure de sécurité ni aucun logiciel d'agent. En combinaison avec DevOps, Ansible est une excellente suite d'outils car il permet une automatisation simple et simplifie le travail des experts DevOps.
Michael DeHaan a créé Ansible, qui a été publié pour la première fois en 2012. L'année suivante, en 2013, Said Ziouani et Timothy Gerla ont fondé Ansible, Inc (AnsibleWorks, Inc.). Red Hat l'a rachetée en 2016.
Pourquoi et quand engager un développeur Ansible ?
Vous devez engager un développeur Ansible si vous avez besoin d'une automatisation. C'est le principal argument de vente d'Ansible.
Les avantages significatifs de l'automatisation se manifestent principalement dans la fonctionnalité et la normalisation des déploiements en nuage (privés et publics). Avec l'aide des modules, des playbooks et des rôles, les développeurs peuvent orchestrer les systèmes de sécurité de la meilleure façon possible.
En travaillant avec une seule plateforme d'automatisation (Ansible), le déploiement, la gestion et la mise à l'échelle du travail deviennent beaucoup plus faciles à gérer. Vous remarquerez également que la gestion quotidienne est plus facile et plus fiable, de même que les mises à niveau et les installations dans le sens où elles sont simples à mettre en œuvre.
Avec Ansible, le processus de développement sera accéléré et amélioré grâce à un processus appelé multistep app-orchestrating. Cela permet des mises à jour régulières du code, y compris des corrections de bogues et d'autres nouveautés dans les fonctionnalités logicielles à venir.
Statistiques utiles sur Ansible
Le salaire moyen d'un Ansible dev est de 87 019 $ par an, le salaire le plus bas étant de 68 000 $ et le plus élevé de 112 000 $ par an.
En ce qui concerne la popularité d'Ansible en tant que suite d'outils, 9,49 % des développeurs ont déclaré qu'il s'agissait de leur outil fondamental pour le développement.
Marques populaires qui s'appuient sur l'utilisation d'Ansible
Voici quelques marques qui utilisent Ansible :
- Revolut
- Amelco
- Udemy
- Walmart
- trivago
- Voyages Alibaba
- Udemy
- Forme du texte
- ViaVarejo
- LaunchDarkly
Interviewer un développeur Ansible
Bien entendu, il s'agit de la partie centrale du processus d'embauche. Pour trouver et embaucher le meilleur développeur Ansible, vous devrez prêter attention aux compétences techniques et non techniques (et à certains éléments essentiels) que le développeur doit posséder. Vous devrez ensuite utiliser des questions d'entretien pertinentes qui permettront d'évaluer le dév en conséquence.
Compétences techniques d'un développeur Ansible
Un développeur Ansible expérimenté aura une expérience significative avec :
- Connaître la syntaxe Yaml
- Avoir de l'expérience avec les éditeurs de code, comme Visual Studio Code
- Connaître la galaxie Ansible, avec ses tâches et commandes de répertoire
- Utiliser les livres de jeux d'Ansible
- Connaissance des systèmes de contrôle des sources, comme Git et ses commandes git pull, git push, git clone.
Anmol Nagpal, ingénieur DevOps dans le réseau Proxify, a déclaré qu'il y a quelques points techniques cruciaux à rechercher chez un développeur Ansible :
"Le développeur Ansible doit avoir une connaissance approfondie des systèmes d'exploitation Unix et Windows et comprendre en profondeur Docker. Ils ont besoin d'une expérience pratique des pipelines d'automatisation CI/CD et, ce qui est tout aussi important, d'une excellente expérience des réseaux L2 (ethernet) et L3 (switch)."
Compétences non techniques d'un développeur Ansible
Les compétences non techniques sont tout aussi nécessaires que les compétences techniques. Même si vous appréciez l'expertise technique, le professionnalisme et l'attitude sur le lieu de travail sont des facteurs qui influencent considérablement le succès de la relation de travail.
Les recruteurs, les responsables de l'embauche et les spécialistes de l'acquisition de talents doivent se concentrer sur la ponctualité. Cela montre à quel point une personne prend l'entretien de manière responsable, ce qui est un bon indicateur de son comportement futur dans un environnement de travail (être à l'heure, respecter le temps de quelqu'un d'autre).
Ceci dit, la préparation du dev montre également son dévouement - la qualité de l'équipement (caméra, casque), la salle et l'éclairage, ainsi que la tenue vestimentaire sont autant de facteurs importants qui influencent l'impression que le candidat laisse au premier abord.
Le niveau de compétence en anglais est un autre facteur clé à prendre en compte. S'il existe un obstacle linguistique entre le développeur et les clients, cela aura probablement un impact sur la communication quotidienne. L'attitude globale est également essentielle ; être ouvert, communicatif, optimiste, curieux et à l'écoute contribue grandement à une dynamique de travail prospère.
Ils devront posséder de bonnes compétences en matière de communication et de résolution de problèmes, être capables de s'épanouir au sein d'une équipe et avoir un état d'esprit axé sur la croissance.
Essentiels et évaluation d'un développeur Ansible
Il n'est pas nécessaire de faire des pieds et des mains pour apprendre Ansible (ce qui signifie que c'est très simple). Une chose importante pour le candidat est d'avoir une excellente maîtrise du système Linux car nous devons exécuter Ansible sur ce système (Ansible peut également fonctionner sur WSL - le sous-système Windows pour Linux - mais il n'est actuellement pas pris en charge par Ansible, et il ne devrait pas être utilisé pour le travail réel).
Un autre prérequis est d'avoir une grande expérience et une bonne connaissance du langage lisible par l'homme pour la sérialisation des données, YAML, car les playbooks Ansible sont écrits dans ce langage.
Enfin, Ansible est écrit en Python. Dans le meilleur des cas, le développeur doit être très familier et très expérimenté en Python.
Anmol a ajouté les incontournables (ou essentiels) pour les futurs ingénieurs Ansible comme dans :
"Le développeur doit avoir au moins six mois d'expérience avec Linux. Mais ils doivent également connaître les fonctionnalités d'Ansible, les rôles Ansible, les balises, les playbooks et GitLab. Sinon, je me renseignerais auprès d'eux sur la gestion de la configuration, sur la manière d'exécuter le playbook avec des balises, ainsi que sur Ansible Galaxy, les commandes ad hoc, l'absence d'accès direct aux serveurs, et d'autres points pertinents similaires."
Questions d'entretien sur Ansible
1. Pouvez-vous nous expliquer ce qu'est le CI/CD ?
Réponse attenduer : Pour les processus de déploiement et la rationalisation du développement, nous utilisons l'intégration continue. Après la construction d'une application, nous appelons Ansible à partir d'un système de CI. Il s'agit d'une façon courante de procéder à une intégration simple.
Avec Continuous Delivery, nous menons un processus de mise en production d'un code qui se trouvait auparavant dans un dépôt distant.
2. Quelle est la configuration requise pour un serveur Ansible ?
Réponse attendue : Il est indispensable de disposer d'une machine virtuelle sur laquelle Linux est installé. En ce qui concerne les langages de programmation, nous avons besoin d'au moins Python v2.6 ou plus.
3. Que sont les Playbooks Ansible ?
Réponse attendue : Les Playbooks Ansible sont un groupe de tâches dans une liste utilisée pour exécuter automatiquement des tâches sur des hôtes. Lorsqu'il y a plus d'hôtes dans plus de groupes, on parle d'inventaire.
Chaque module du Playbook est destiné à une tâche particulière. Il contient les métadonnées pour lesquelles l'utilisateur effectue l'exécution des tâches et les informations relatives à l'exécution de la tâche elle-même (où et quand).
Nous pouvons utiliser le Playbook de deux manières : depuis la plateforme (Red Hat Ansible Automation Platform) et depuis le CLI.
4. Que sont les tâches Ansible ?
Réponse attendue : La plus petite unité d'action que nous voulons automatiser à l'aide d'un playbook s'appelle une tâche. Cette tâche décompose une politique de configuration et la divise en blocs de code. Ensuite, ces blocs de code contribuent aux processus d'automatisation et sont essentiels pour le processus d'automatisation dans son ensemble.
Le playbook consiste en une série de tâches, et Ansible les exécutera (les tâches) exactement comme dans le playbook, dans le même ordre. Toutes ces tâches sont utilisées pour le déploiement d'applications dans un environnement distant ou pour l'installation d'un serveur web.
5. Élaborer sur les modules Ansible.
Réponse attendue : Les modules Ansible sont utilisés à l'intérieur du playbook Ansible et sont des scripts autonomes. Voici quelques exemples :
- Gestion des paquets - Pour l'installation de divers paquets, la mise à niveau, la rétrogradation et la suppression de ces paquets.
- Ansible Command Module - Pour implémenter les commandes dans le nœud distant, et généralement utilisé pour les commandes Linux des serveurs distants.
- Ansible Yum Module - Utilisé pour installer divers services avec le gestionnaire de paquets Yum (par défaut pour les distributions Red Hat Linux).
- Ansible File Module - Pour diverses méthodes de création de nouveaux fichiers ; attribution du propriétaire, permissions de groupe, et plus encore.
- Ansible User Module - Pour la gestion des différents comptes d'utilisateurs d'un système Linux, et pour l'ajout de groupes, les paramètres de mot de passe, et même la suppression d'un compte d'utilisateur.
- Ansible Lineinfile Module - Pour les ajustements à la ligne existante ; insertion, modification, suppression et remplacement de lignes.
- Ansible Archive Module - Pour créer des archives compressées, mais dans des fichiers différents.
- Ansible Template Module - Un module avec tous les paramètres de configuration possibles dont vous avez besoin pour faciliter la gestion de la configuration du serveur en créant des fichiers statiques.
- Ansible Cli_Command Module - Pour pousser des configurations (basées sur du texte) vers des appareils via le plugin network_cli.
- Ansible Windows Modules - Ces modules sont testés pour les hôtes Windows.
6. Que pouvez-vous dire à propos des balises Ansible ?
Réponse attendue : La balise représente un attribut pour la structure d'Ansible, ses tâches, ses rôles et ses jeux. Supposons que nous ayons un livre de jeu massif. Dans ce cas, il est préférable de n'exécuter qu'une partie du playbook et non tout le playbook. L'attribut tag s'avère être une solution parfaite pour cela.
Lors de l'application des balises, nous pouvons choisir ce que nous contrôlons ou si nous utilisons les balises par le biais de la ligne de commande. Mais nous pouvons utiliser deux méthodes pour filtrer les tâches basées sur les balises :
- (Pour la ligne de commande) utilisez -tags et -skip-tags.
- (Paramètres de configuration Ansible) utiliser TAGS_RUN et TAGS-SKIP.
7. Décrire les rôles d'Ansible.
Réponse attendue : Avec les rôles Ansible, nous pouvons développer des composants d'automatisation réutilisables. Pour ce faire, nous regroupons et encapsulons les modèles, les fichiers de configuration, les gestionnaires et les tâches (tous les artefacts d'automatisation).
L'avantage des rôles est qu'ils permettent le chargement automatique de fichiers, de tâches, de variables, de méta, de valeurs par défaut et de gestionnaires, entre autres. Ainsi, une fois que nous avons rassemblé le contenu dans les rôles (en regroupant plusieurs tâches), il est assez facile de le partager avec le reste des utilisateurs.
Les rôles sont constitués de nombreux playbooks ; il s'agit essentiellement d'un ensemble de fichiers assignés à un rôle spécifique avant de diviser les configurations.
8. Qu'est-ce que Ansible Galaxy ?
Réponse attendue : L'énorme dépôt public de rôles Ansible s'appelle Ansible Galaxy, et ces rôles sont constamment augmentés et mis à jour. The Galaxy est le site web qui permet aux utilisateurs de créer, d'installer, de gérer et de partager des rôles développés par la communauté.
Si nous (les développeurs) créons des rôles, nous pouvons les partager via Galaxy et en utilisant le compte GitHub. De cette façon, nous pouvons importer les rôles et les rendre accessibles à tous les membres de la communauté Ansible. Par ailleurs, si nous importons des rôles, ils seront visibles et accessibles dans l'index de recherche de Galaxy, de sorte que les utilisateurs pourront également les utiliser en les téléchargeant au préalable.
9. Pouvez-vous nous en dire plus sur Ansible Tower ?
Réponse attendue : Ansible Tower représente la version d'entreprise d'Ansible, qui permet de déployer les avantages d'Ansible à grande échelle. Il peut être intégré à l'infrastructure existante, comme la sécurité, le réseau, le déploiement d'applications, le stockage et les processus du cycle de vie du développement logiciel.
Les fonctionnalités d'Ansible Tower sont les suivantes
- Planification des tâches
- Tableau de bord GUI (Graphical user interface)
- API RESTful
- Mise à jour en temps réel de l'état d'avancement des travaux
- Flux de travail multi-livres
- Intégration de la journalisation (externe)
- Contrôle d'accès (basé sur les rôles)
10. De quelle(s) manière(s) pouvez-vous tester les projets d'Ansible ?
Réponse attendue : Nous pouvons tester ces projets de trois manières :
- Asserts - Si nous exécutons un test en Python, les Asserts reproduiront la méthode et la manière dont le test a été exécuté. Lorsqu'un système atteint un état particulier (celui prévu), Asserts le vérifie pour nous.
- Manual Run - Pour cela, il suffit de jouer et de s'assurer que le système est dans l'état désiré. Cette méthode est assez simple, mais l'inconvénient est qu'il peut y avoir une différence entre les résultats dans les environnements (environnement de test vs. environnement de production).
- Mode de vérification - Si nous n'exécutons pas la simulation mais que nous voulons savoir comment les choses se dérouleraient, le mode de vérification peut nous montrer exactement cela, c'est-à-dire que nous pouvons vérifier si tous les éléments de l'engagement se comportent comme nous le souhaitons. Un défaut est que nous ne pouvons pas exécuter des commandes et des scripts pour les playbooks et les rôles. Une solution à ce problème est de désactiver le mode de vérification pour des tâches spécifiques, et il suffit d'exécuter check_mode:no
Qu'est-ce qui distingue un grand développeur Ansible d'un bon ?
Les meilleurs développeurs Ansible auront plusieurs années d'expérience, une bonne maîtrise de l'anglais, un esprit critique et des résultats supérieurs à la moyenne aux tests techniques.
Il y a aussi certaines choses spécifiques que les développeurs d'Ansible font, qui rendent leur travail plus facile, plus propre et plus optimisé (en plus d'accélérer le processus de développement) :
- Commentaires et utilisation des espaces blancs - Avec YAML, les développeurs peuvent écrire les Playbooks d'Ansible ; par conséquent, les espaces blancs (espace littéral) aident YAML à indiquer l'imbrication et à définir la structure du document.
- Organisation des playbooks par les rôles - Probablement la façon la plus efficace de gérer les playbooks, même s'il existe d'autres façons de le faire tout aussi bien. La fonction de rôle est destinée exclusivement aux structures bien organisées des manuels de jeu.
- Utilisation du contrôle de version - Le contrôle de version n'a rien de nouveau ou d'inhabituel dans le codage, au contraire. Par exemple, conserver les variables, les rôles, l'inventaire et les playbooks dans le système de version Git est un excellent moyen de rester en phase avec les ensembles de données.
- Nom unique des variables - Les noms des variables ne sont pas seulement uniques, ils ont aussi une signification importante. Pour éviter toute confusion, les développeurs ajoutent un préfixe (nom de rôle) à une variable, ce qui permet d'obtenir des variables bien organisées.
- Staging et production avec un inventaire séparé - Tout est plus accessible lorsque le développeur ne maintient pas tout dans un seul fichier d'inventaire mais utilise plutôt des fichiers séparés.
- Utilisation de la syntaxe des blocs - Les blocs Ansible aident le développeur à regrouper les tâches de manière logique. Cela dit, ils permettent facilement de revenir en arrière en cas d'urgence, de définir des données pour les tâches et d'organiser le code.
- Utilisation des modules natifs - Au lieu d'utiliser excessivement des commandes spécifiques (shell, raw, command) et de compliquer les choses par la suite, les développeurs les utilisent avec parcimonie. Et ils le font parce qu'Ansible a des modules natifs, des centaines d'entre eux.
- Mises à jour en série avec le mot-clé serial - Ansible propose le mot-clé serial qui permet au développeur de choisir le nombre de machines à mettre à jour en une seule fois et en un seul lot. Avec le mot-clé serial, les développeurs peuvent également sélectionner le nombre d'hôtes à gérer.
Aux points énumérés ci-dessus, Anmol a ajouté :
Le développeur doit avoir une excellente connaissance des balises, des rôles et du dépannage. Ils maîtriseront la sécurité et le cryptage de YAML et sauront comment contourner le rollback et le shell scripting. Bien sûr, ils auront aussi une grande connaissance de Python et de Go".
Défis possibles lors de l'embauche d'un développeur Ansible
En sachant quels sont les défis possibles au cours du processus d'embauche, vous pouvez vous attendre à ce que les candidats soient préparés de manière adéquate :
Réservoir de talents limité
Il est courant d'être confronté à ce défi, mais peut-être pourriez-vous essayer d'explorer plus largement. Essayez diverses plateformes d'emploi où les recruteurs et les talents ne sont pas rares. Plus les plateformes d'emploi sont étudiées, plus les chances d'élargir ce vivier de talents sont grandes.
Manque de candidats hautement qualifiés
Il peut être difficile de trouver les compétences exceptionnelles chez les candidats, même si le vivier de talents est assez vaste - ce qui compte ici, c'est le nombre de candidats qualifiés, et non la taille du vivier de talents. Il y aura beaucoup de bons développeurs Ansible, mais peut-être pas avec des connaissances stellaires et des compétences exceptionnelles.
Concurrents
S'il existe des développeurs Ansible qui brillent véritablement par leur travail, il se peut qu'ils soient déjà employés ou qu'ils demandent un salaire qui ne correspond pas à votre budget.
Dans ce cas, vos concurrents peuvent être le facteur déterminant. Certains donnent déjà au développeur le salaire (élevé) qu'ils souhaitent ou sont prêts à faire des folies s'ils veulent embaucher le meilleur développeur que d'autres souhaitent. Certains concurrents pourraient également être prêts à faire des offres beaucoup plus intéressantes que la moyenne du marché.
Le processus de recrutement long et coûteux
Les coûts constituent également un défi pour le processus de recrutement et d'embauche. Cela signifie qu'il y a un risque que les recruteurs recherchent mal les candidats, ce qui entraînera des entretiens avec des candidats inadaptés, ce qui permettra de passer à côté des meilleurs développeurs et de répéter le processus à nouveau.
Les moteurs de l'entreprise et la valeur d'Ansible
Voyons quels sont les avantages de l'utilisation d'Ansible dans le développement ; de quelle manière Ansible ajoute de la valeur pour une entreprise, et pourquoi il est essentiel de l'utiliser/de le mettre en œuvre :
- Flexible - Le développeur peut facilement organiser et dicter la dynamique globale de l'environnement de l'application, quel que soit le lieu de déploiement. La personnalisation est tout aussi simple, en fonction des besoins spécifiques.
- Pas besoin de programmes d'agent - Il n'est plus nécessaire d'installer des ports de pare-feu ou des logiciels spécifiques, car il est désormais possible d'automatiser le système du client sans que ces éléments soient installés et sans structures de gestion individuelles et nouvelles.
- Gratuit - En tant que logiciel libre, Ansible est également gratuit et accessible à tous.
- Efficace - Il est incroyable qu'avec Ansible, il n'y ait pas besoin d'installer de logiciel supplémentaire ; ceci, à son tour, fait beaucoup de place pour des ressources spécifiques pour l'application, autrement sur le serveur.
- Facile à configurer et à utiliser - Les fonctionnalités d'Ansible le rendent non seulement facile à utiliser, mais aussi facile à configurer au départ.