Die Popularität von Ansible macht diese Tool-Suite zu einer gefragten Lösung für Webentwicklungsprojekte. Unternehmen und Marken, die eine solche Technologie in ihrer laufenden Arbeit verwenden (oder sie in Zukunft ausprobieren wollen), werden sich Ansible gerne näher ansehen.
Diese Open-Source-Automatisierungs-Engine ist sehr gefragt, und das ist auch kein Wunder, denn sie trägt dazu bei, die gewünschte, vereinfachte Automatisierung zu erreichen. Und Sie bemühen sich sicherlich in Ihrem Unternehmen darum. Sie könnten also ein paar Tipps gebrauchen, um Ansible-Entwickler optimal zu suchen und einzustellen.
Die Auswahl des besten Bewerbers aus allen Bewerbern ist keine einfache Aufgabe; viele werden die Anforderungen Ihrer Stellenanzeige erfüllen, und hier kommt der schwierige Teil. Das Risiko besteht darin, zu viel Mühe, Zeit und Geld in einen Prozess zu stecken, der schlecht geplant wurde und später teuer rückgängig gemacht werden muss.
Lassen Sie uns gleich zur Sache kommen und das Wesentliche über Ansible klären und wie der Einstellungsprozess von Ansible-Entwicklern aussehen sollte.
Über Ansible
Ansible steht für eine Reihe von Software-Tools (auch als Open-Source-Engine für Automatisierung und IT-Infrastruktur), die unter anderem für Konfigurationsmanagement, Orchestrierung und App-Bereitstellung verwendet werden. Andere, ebenso praktikable Verwendungszwecke von Ansible sind die Bereitstellung der Infrastruktur, die Aktualisierung von Servern und Workstations, die Verbesserung der Sicherheit, die Installation von Software, Patch-Systeme und die gemeinsame Nutzung der Automatisierung in größerem Maßstab.
Mit Ansible können Entwickler Computer auf Netzwerkebene konfigurieren - nicht nur einen einzelnen Computer. Es ist einfach zu installieren und zu verwenden, und es gibt keine Anforderungen an die Sicherheitsinfrastruktur oder die Verwendung von Agentensoftware. In Kombination mit DevOps ist Ansible ein hervorragendes Toolpaket, da es eine einfache Automatisierung ermöglicht und die Arbeit für DevOps-Experten vereinfacht.
Ansible wurde von Michael DeHaan entwickelt und 2012 erstmals veröffentlicht. Im nächsten Jahr, 2013, gründeten Said Ziouani und Timothy Gerla Ansible, Inc (AnsibleWorks, Inc.). Red Hat hat es später im Jahr 2016 übernommen.
Warum und wann sollte man einen Ansible-Entwickler einstellen?
Sie müssen einen Ansible-Entwickler einstellen, wenn Sie Automatisierung benötigen. Dies ist das zentrale Verkaufsargument, das Ansible bietet.
Die erheblichen Vorteile der Automatisierung zeigen sich vor allem in der Funktionalität und Standardisierung von Cloud-Bereitstellungen (sowohl privat als auch öffentlich). Mit Hilfe von Modulen, Playbooks und Rollen können die Entwickler die Sicherheitssysteme auf die bestmögliche Weise orchestrieren.
Die Arbeit mit nur einer Plattform für die Automatisierung (Ansible) macht die Bereitstellung, Verwaltung und Skalierung der Arbeit viel überschaubarer. Sie werden auch feststellen, dass die tägliche Verwaltung einfacher und zuverlässiger ist, ebenso wie die Upgrades und Installationen in dem Sinne, dass sie einfach zu implementieren sind.
Mit Ansible wird der Entwicklungsprozess durch einen Prozess namens multistep app-orchestrating beschleunigt und verbessert. Dies ermöglicht regelmäßige Code-Updates, einschließlich Fehlerbehebungen und andere Neuheiten in den kommenden Software-Funktionen.
Nützliche Statistiken über Ansible
Das Durchschnittsgehalt eines Ansible-Entwicklers beträgt $87.019 jährlich, wobei das niedrigste Gehalt $68K und das höchste $112K pro Jahr beträgt.
Was die Beliebtheit von Ansible als Tool-Suite betrifft, so haben 9,49 % der Entwickler angegeben, dass dies ihr wichtigstes Tool für die Entwicklung ist.
Beliebte Markennamen, die auf die Verwendung von Ansible angewiesen sind
Dies sind einige Marken, die Ansible verwenden:
- Revolut
- Amelco
- Udemy
- Walmart
- trivago
- Alibaba Reisen
- Udemy
- Schriftform
- ViaVarejo
- LaunchDarkly
Interview mit einem Ansible-Entwickler
Natürlich ist dies der zentrale Teil des Einstellungsverfahrens. Um den besten Ansible-Entwickler zu finden und einzustellen, müssen Sie auf die technischen und nicht-technischen Fähigkeiten (und bestimmte Grundvoraussetzungen) achten, die der Entwickler mitbringen muss. Dann müssen Sie relevante Interview-Fragen verwenden, die den Entwickler entsprechend bewerten würden.
Technische Fähigkeiten eines Ansible-Entwicklers
Ein erfahrener Ansible-Entwickler wird viel Erfahrung damit haben:
- Kenntnis der Yaml-Syntax
- Erfahrung mit Code-Editoren, wie Visual Studio Code
- Die Ansible-Galaxie gut kennen, mit ihren Verzeichnisaufgaben und Befehlen
- Verwendung der Spielbücher von Ansible
- Kenntnisse über Quellcode-Kontrollsysteme, wie Git und seine Befehle git pull, git push, git clone.
Anmol Nagpal, ein DevOps-Ingenieur im Proxify-Netzwerk, sagte, dass es ein paar entscheidende technische Schwerpunkte gibt, auf die man bei einem Ansible-Entwickler achten sollte:
"Der Ansible-Entwickler sollte über umfangreiche Unix- und Windows-Kenntnisse verfügen und Docker umfassend verstehen. Sie brauchen praktische Erfahrung mit CI/CD-Automatisierungspipelines und, was ebenso wichtig ist, auch ausgezeichnete Erfahrung mit L2 (Ethernet) und L3 (Switch) Netzwerken."
Nicht-technische Fähigkeiten eines Ansible-Entwicklers
Die nicht-technischen Fähigkeiten sind ebenso notwendig wie die technischen. So sehr Sie technisches Fachwissen auch schätzen - Professionalität und Einstellung am Arbeitsplatz sind wichtige Einflussfaktoren für den Erfolg der Arbeitsbeziehung.
Die Personalvermittler, Einstellungsleiter und Talentakquisitionsspezialisten sollten sich auf Pünktlichkeit konzentrieren. Dies zeigt, wie verantwortungsbewusst jemand das Vorstellungsgespräch führt, was ein guter Indikator für das künftige Verhalten in einem Arbeitsumfeld ist (pünktlich sein, die Zeit anderer respektieren).
Auch die Vorbereitung des Dozenten zeigt sein Engagement - die Qualität der Ausrüstung (Kamera, Headset), der Raum und die Beleuchtung sowie die Kleiderordnung sind wichtige Faktoren, die den ersten Eindruck des Bewerbers beeinflussen.
Das Niveau der Englischkenntnisse ist ein weiterer wichtiger Faktor, auf den Sie achten sollten. Wenn es ein sprachliches Hindernis zwischen dem Entwickler und dem Kunden gibt, wird sich dies wahrscheinlich auf die tägliche Kommunikation auswirken. Auch die Gesamteinstellung ist wichtig: Offenheit, Kommunikation, Optimismus, Neugier und ein aufmerksamer Zuhörer tragen zu einer erfolgreichen Arbeitsdynamik bei.
Sie brauchen gute Kommunikations- und Problemlösungsfähigkeiten, Teamfähigkeit und eine wachstumsorientierte Denkweise.
Essentials und Bewertung eines Ansible-Entwicklers
Um Ansible zu lernen, muss man nicht durch Reifen springen (was bedeutet, dass es sehr einfach ist). Eine wichtige Voraussetzung für den Kandidaten ist eine ausgezeichnete Beherrschung des Linux-Systems, da wir Ansible darauf ausführen müssen (Ansible kann auch auf WSL - dem Windows-Subsystem für Linux - ausgeführt werden, aber es wird derzeit nicht von Ansible unterstützt und sollte nicht für echte Arbeit verwendet werden).
Eine weitere bevorzugte Voraussetzung ist, dass Sie über reichlich Erfahrung und gute Kenntnisse der menschenlesbaren Sprache für die Daten-Serialisierung, YAML, verfügen, da die Ansible-Playbooks in dieser Sprache geschrieben sind.
Schließlich ist Ansible in Python geschrieben. Im besten Fall muss der Entwickler mit Python sehr vertraut und sehr erfahren sein.
Anmol fügte die bevorzugten Must-Haves (oder Essentials) für angehende Ansible-Ingenieure wie in:
"Der Entwickler braucht mindestens sechs Monate Erfahrung mit Linux. Sie brauchen aber auch Kenntnisse über die Funktionalität von Ansible, die Ansible-Rollen, Tags, Playbooks und GitLab. Andernfalls würde ich mich bei ihnen nach dem Konfigurationsmanagement erkundigen, wie man das Playbook mit Tags ausführt, und ich würde auch nach Ansible Galaxy, Ad-hoc-Befehlen, Servern ohne Direktzugriff und anderen ähnlichen relevanten Punkten fragen."
Ansible Interview Fragen
1. Können Sie erklären, was CI/CD ist?
Erwartete Antwortr: Für die Verteilungsprozesse und die Rationalisierung der Entwicklung verwenden wir Continuous Integration. Nachdem eine App erstellt wurde, rufen wir Ansible über ein CI-System auf. Dies ist ein üblicher Weg, um eine einfache Integration durchzuführen.
Mit Continuous Delivery führen wir einen Prozess durch, bei dem wir einen Code in die Produktion übernehmen, der sich zuvor in einem entfernten Repository befand.
2. Was sind die Anforderungen an den Ansible-Server?
Erwartete Antwort: Es ist ein Muss, eine virtuelle Maschine mit installiertem Linux darauf zu haben. Was die Programmiersprachen betrifft, so benötigen wir mindestens Python v2.6 oder höher.
3. Was sind Ansible Playbooks?
Erwartete Antwort: Ansible Playbooks sind eine Gruppe von Aufgaben in einer Liste, die zur automatischen Ausführung auf Hosts verwendet werden. Wenn wir mehrere Hosts in mehreren Gruppen haben, nennt man das Inventar.
Jedes einzelne Modul im Playbook ist für eine bestimmte Aufgabe bestimmt. Sie enthält die Metadaten, für die der Benutzer die Ausführung der Arbeitsaufgaben durchführt, sowie Informationen über die Aufgabenausführung selbst (wo und wann).
Wir können das Playbook auf zwei Arten verwenden: aus der Plattform heraus (Red Hat Ansible Automation Platform) und über die CLI.
4. Was sind Ansible-Aufgaben?
Erwartete Antwort: Die kleinste Handlungseinheit, die wir mit Hilfe eines Spielbuchs automatisieren wollen, heißt Aufgabe. Diese Aufgabe zerlegt eine Konfigurationsrichtlinie in einzelne Codeblöcke. Als nächstes helfen diese Codeblöcke bei den Automatisierungsprozessen und sind für den Automatisierungsprozess insgesamt wichtig.
Das Playbook besteht aus einer Aufgabenserie, und Ansible wird sie (die Aufgaben) genau wie im Playbook in derselben Reihenfolge ausführen. Alle diese Aufgaben werden für die Bereitstellung von Anwendungen in einer entfernten Umgebung oder auch für die Einrichtung eines Webservers verwendet.
5. Erläutern Sie die Ansible-Module.
Erwartete Antwort: Ansible-Module werden innerhalb des Ansible-Playbooks verwendet und sind eigenständige Skripte. Hier sind ein paar Beispiele:
- Paketverwaltung - Für die Installation verschiedener Pakete, Upgrades, Downgrades und das Entfernen dieser Pakete.
- Ansible Command Module - Für die Implementierung der Befehle in den Remote-Knoten, und in der Regel für Remote-Server Linux-Befehle verwendet.
- Ansible Yum-Modul - Wird verwendet, um verschiedene Dienste mit dem Yum-Paketmanager zu installieren (Standard für Red Hat Linux-Distributionen).
- Ansible File Module - Für verschiedene Methoden der Erstellung neuer Dateien; Zuweisung von Besitzern, Gruppenberechtigungen und mehr.
- Ansible User Module - Für die Verwaltung verschiedener Benutzerkonten eines Linux-Systems, sowie für das Hinzufügen von Gruppen, Passwort-Einstellungen und sogar das Löschen eines Benutzerkontos.
- Ansible Lineinfile Module - Für Anpassungen an der bestehenden Zeile; Einfügen, Ändern, Entfernen und Ersetzen von Zeilen.
- Ansible Archive Module - Zum Erstellen von komprimierten Archiven, aber in verschiedenen Dateien.
- Ansible Template Module - Ein Modul mit allen möglichen Konfigurationsparametern, die Sie für eine einfachere Verwaltung der Serverkonfiguration durch die Erstellung statischer Dateien benötigen.
- Ansible Cli_Command Module - Für das Pushen von Konfigurationen (textbasiert) an Geräte über das network_cli Plugin.
- Ansible Windows Module - Diese Module sind für Windows-Hosts getestet.
6. Was können Sie über die Ansible-Tags sagen?
Erwartete Antwort: Das Tag stellt ein Attribut für die Struktur von Ansible, seine Aufgaben, Rollen und Spiele dar. Nehmen wir an, wir haben ein umfangreiches Spielbuch. In diesem Fall ist es am besten, nur einen Teil davon auszuführen und nicht alles in diesem Spielbuch. Das Tag-Attribut erweist sich als perfekte Lösung für diese Aufgabe.
Bei der Anwendung der Tags können wir wählen, was wir kontrollieren oder ob wir die Tags über die Befehlszeile verwenden wollen. Wir können jedoch zwei Möglichkeiten verwenden, um die tag-basierten Aufgaben zu filtern:
- (Für die Befehlszeile) verwenden Sie -tags und -skip-tags
- (Ansible-Konfigurationseinstellungen) TAGS_RUN und TAGS-SKIP verwenden
7. Beschreiben Sie die Ansible-Rollen.
Erwartete Antwort: Mit Ansible-Rollen können wir wiederverwendbare Automatisierungskomponenten entwickeln. Wir tun dies, indem wir Vorlagen, Konfigurationsdateien, Handler und Tasks (alle benannten Automatisierungsartefakte) gruppieren und kapseln.
Das Gute an Rollen ist, dass sie das automatische Laden von Dateien, Aufgaben, Variablen, Metadaten, Standardwerten und Handlern, neben vielen anderen, ermöglichen. Sobald wir also Inhalte in Rollen zusammenstellen (indem wir mehrere Aufgaben gruppieren), ist es ziemlich einfach, diese mit dem Rest der Benutzer zu teilen.
Die Rollen bestehen aus zahlreichen Playbooks; im Wesentlichen handelt es sich um eine Reihe von Dateien, die einer bestimmten Rolle zugewiesen werden, bevor die Konfigurationen aufgeteilt werden.
8. Was ist Ansible Galaxy?
Erwartete Antwort: Das riesige öffentliche Repository von Ansible-Rollen wird Ansible Galaxy genannt, und diese Rollen werden ständig erweitert und aktualisiert. The Galaxy ist die Website, auf der Benutzer von der Gemeinschaft entwickelte Rollen erstellen, installieren, verwalten und gemeinsam nutzen können.
Wenn wir (Entwickler) Rollen erstellen, können wir sie über Galaxy und das GitHub-Konto freigeben. Auf diese Weise können wir die Rollen importieren und sie für jeden in der Ansible-Community zugänglich machen. Wenn wir Rollen importieren, werden sie im Suchindex von Galaxy sichtbar und zugänglich sein, so dass die Benutzer sie auch verwenden können, indem sie sie zuerst herunterladen.
9. Können Sie den Ansible Tower näher erläutern?
Erwartete Antwort: Der Ansible Tower ist die Unternehmensversion von Ansible und ermöglicht die Bereitstellung von Ansible-Vorteilen im großen Maßstab. Es kann in die bestehende Infrastruktur integriert werden, z. B. Sicherheit, Netzwerke, App-Bereitstellung, Speicherung und Softwareentwicklungs-Lebenszyklusprozesse.
Die Funktionen von Ansible Tower umfassen:
- Job Scheduling
- GUI Dashboard (Grafische Benutzeroberfläche)
- RESTful API
- Aktualisierung des Auftragsstatus in Echtzeit
- Arbeitsabläufe mit mehreren Spielbüchern
- Protokollierung von Integrationen (extern)
- Zugriffskontrolle (rollenbasiert)
10. Auf welche Weise können Sie die Projekte von Ansible testen?
Erwartete Antwort: Wir können diese Projekte auf drei Arten testen:
- Asserts - Wenn wir einen Test in Python ausführen, werden die Asserts die Methode und den Weg des Testlaufs duplizieren. Wenn ein System in einen bestimmten (beabsichtigten) Zustand gelangt, verifiziert Asserts dies für uns.
- Manueller Lauf - Hierfür müssen wir nur spielen und sicherstellen, dass wir den gewünschten Zustand des Systems haben. Diese Methode ist recht einfach, hat aber den Nachteil, dass die Ergebnisse in den verschiedenen Umgebungen (Testumgebung vs. Produktionsumgebung) unterschiedlich ausfallen können
- Prüfmodus - Wenn wir die Simulation nicht ausführen, aber wissen wollen, wie die Dinge ablaufen würden, kann uns der Prüfmodus genau das zeigen, d.h. wir können prüfen, ob sich alles aus dem Engagement so verhält, wie wir es brauchen. Ein Fehler ist, dass wir keine Befehle und Skripte für Playbooks und Rollen ausführen können. Eine Lösung für dieses Problem ist die Deaktivierung des Prüfmodus für bestimmte Aufgaben, und wir müssen nur check_mode:no ausführen
Was unterscheidet einen guten Ansible-Entwickler von einem guten?
Die besten Ansible-Entwickler haben mehrjährige Erfahrung, gute Englischkenntnisse, kritisches Denken und überdurchschnittliche Ergebnisse bei den technischen Tests.
Außerdem gibt es bestimmte Dinge, die Ansible-Entwickler in hoher Qualität tun, die ihre Arbeit einfacher, sauberer und optimierter machen (und außerdem den Entwicklungsprozess beschleunigen):
- Kommentare und Verwendung von Leerzeichen - Mit YAML können die Entwickler die Ansible-Playbooks von Ansible schreiben; daher hilft das Leerzeichen (literal space) YAML, die Verschachtelung zu bezeichnen und die Struktur des Dokuments zu definieren.
- Organisieren von Playbooks durch Rollen - Wahrscheinlich die effizienteste Art, die Playbooks zu verwalten, auch wenn es andere Möglichkeiten gibt, dies genauso gut zu tun. Die Rollenfunktion ist ausschließlich für die übersichtlichen Strukturen der Spielbücher gedacht.
- Verwendung der Versionskontrolle - Versionskontrolle ist nichts Neues oder Ungewöhnliches in der Codierung; im Gegenteil. Zum Beispiel ist die Aufbewahrung von Variablen, Rollen, Inventar und Playbooks im Git-Versionssystem eine hervorragende Möglichkeit, die Datensätze zu kontrollieren.
- Einzigartige Benennung der Variablen - Die Namen der Variablen sind nicht nur einzigartig, sondern haben auch eine wichtige Bedeutung. Um Verwirrung zu vermeiden, fügen die Entwickler ein Präfix (Rollenname) an eine Variable an, was zu übersichtlichen Variablen führt.
- Staging und Produktion mit getrenntem Inventar - Alles ist besser zugänglich, wenn der Entwickler nicht alles in einer einzigen Inventardatei pflegt, sondern getrennte Dateien verwendet.
- Verwendung der Blocksyntax - Ansible-Blöcke helfen dem Entwickler bei der logischen Gruppierung von Aufgaben. Auf diese Weise können sie in dringenden Fällen einfach Rollbacks durchführen, Daten auf Aufgaben setzen und den Code organisieren.
- Native Module verwenden - Anstatt bestimmte Befehle (shell, raw, command) übermäßig zu verwenden und die Dinge später zu verkomplizieren, verwenden die Entwickler sie sparsam. Und sie tun dies, weil Ansible hat native Module, Hunderte von ihnen.
- Rolling-Updates mit Serial-Schlüsselwort - Ansible bietet das Serial-Schlüsselwort, mit dem der Entwickler die Anzahl der zu aktualisierenden Maschinen in einem Durchgang und einem Batch auswählen kann. Mit dem Schlüsselwort serial können Entwickler auch die Anzahl der zu verwaltenden Hosts auswählen.
Zu den oben aufgeführten Punkten hat Anmol hinzugefügt:
"Der Entwickler sollte über ausgezeichnete Kenntnisse der Tags und Rollen sowie der Fehlersuche verfügen. Sie werden die YAML-Sicherheit und -Verschlüsselung beherrschen und wissen, wie man mit Rollback und Shell-Skripting umgeht. Natürlich werden sie auch große Kenntnisse in Python und Go haben."
Mögliche Herausforderungen bei der Einstellung eines Ansible-Entwicklers
Wenn Sie wissen, welche Herausforderungen während des Einstellungsverfahrens auftreten können, können Sie davon ausgehen, dass die Bewerber angemessen vorbereitet sind:
Begrenzter Talentpool
Diese Herausforderung ist nicht ungewöhnlich, aber vielleicht können Sie versuchen, sie auf breiterer Basis zu lösen. Probieren Sie verschiedene Jobplattformen aus, auf denen es nicht an Personalverantwortlichen und Talenten mangelt. Je mehr Jobplattformen erforscht werden, desto größer sind die Chancen, diesen Talentpool zu vergrößern.
Mangel an hochqualifizierten Bewerbern
Es könnte ein Problem sein, die herausragenden Fachkenntnisse von Bewerbern zu finden, auch wenn der Talentpool recht groß ist - hier kommt es auf die Anzahl der qualifizierten Bewerber an, nicht darauf, wie groß der Talentpool ist. Es wird viele gute Ansible-Entwickler geben, aber vielleicht nicht mit herausragenden Kenntnissen und Fähigkeiten.
Konkurrenten
Vorausgesetzt, es gibt Ansible-Entwickler, die wirklich in dem, was sie tun, glänzen, könnten sie bereits beschäftigt sein oder ein Gehalt verlangen, das nicht in Ihr Budget passt.
In diesen Fällen können Ihre Konkurrenten der entscheidende Faktor sein. Einige geben den Entwicklern bereits ihr gewünschtes (hohes) Gehalt oder sind bereit, viel Geld auszugeben, wenn sie den besten Entwickler einstellen wollen, den andere sich wünschen. Einige Wettbewerber könnten auch bereit sein, viel bessere Angebote als der Marktdurchschnitt zu machen.
Der kostspielige und langwierige Einstellungsprozess
Die Kosten sind auch eine Herausforderung für den Einstellungs- und Rekrutierungsprozess. Dadurch besteht die Gefahr, dass die Personalverantwortlichen schlecht nach Bewerbern suchen, was dazu führt, dass ungeeignete Bewerber zum Vorstellungsgespräch eingeladen werden, die besten Entwickler übersehen werden und der Prozess erneut wiederholt werden muss.
Geschäftstreiber und der Wert von Ansible
Lassen Sie uns sehen, welche Vorteile die Verwendung von Ansible in der Entwicklung bietet; in welcher Weise Ansible einen Mehrwert für ein Unternehmen darstellt und warum es wichtig ist, es zu verwenden/zu implementieren:
- Flexibel - Der Entwickler kann die Gesamtdynamik der App-Umgebung leicht organisieren und diktieren, unabhängig vom Einsatzort. Die Anpassung an die spezifischen Anforderungen ist ebenso einfach.
- Keine Notwendigkeit für Agentenprogramme - Es besteht keine Notwendigkeit mehr für Firewall-Ports oder die Installation spezieller Software, da es jetzt möglich ist, das System des Kunden zu automatisieren, ohne diese Dinge zu installieren und ohne individuelle und neue Verwaltungsstrukturen.
- Kostenlos - Da Ansible Open-Source ist, ist es auch kostenlos und für alle zugänglich.
- Effizient - Es ist unglaublich, dass mit Ansible keine zusätzliche Software installiert werden muss; dies wiederum schafft viel Platz für spezifische Ressourcen für die App, die sonst auf dem Server liegen.
- Einfache Einrichtung und Verwendung - Die Funktionen von Ansible machen es nicht nur einfach zu verwenden, sondern auch einfach einzurichten.