Ansibles popularitet gør denne værktøjspakke til en meget efterspurgt løsning til webudviklingsopgaver. Virksomheder og brands, der bruger en sådan teknologi i deres igangværende arbejde (eller ønsker at afprøve den i fremtiden), vil være mere end glade for at se nærmere på Ansible.
Denne open source-automatiseringsmotor har været meget efterspurgt, og det er ikke så mærkeligt; den bidrager til at opnå en ønsket, forenklet automatisering. Og du stræber helt sikkert efter dette i din virksomhed. Derfor kan du bruge et par tips til optimal søgning efter og ansættelse af Ansible-udviklere.
At vælge den bedste kandidat blandt alle, der har søgt, er ikke nogen enkel opgave; mange vil opfylde kravene i din jobannonce, og her kommer den svære del. Risikoen er at lægge for mange kræfter, tid og penge i en proces, der startede dårligt planlagt, og som det vil blive dyrt at lave om på senere.
Lad os gå direkte til sagen og afklare det væsentlige om Ansible, og hvordan ansættelsesprocessen for Ansible-udviklere bør se ud.
Om Ansible
Ansible repræsenterer en række softwareværktøjer (også betragtet som en open source-motor til automatisering og IT-infrastruktur), der blandt andet bruges til konfigurationsstyring, orkestrering og app-implementering. Andre, lige så brugbare anvendelser af Ansible er tilvejebringelse af infrastruktur, opdatering af servere og arbejdsstationer, opgradering af sikkerhed, softwareinstallation, patchsystemer og automatiseringsdeling i større skala.
Med Ansible kan udviklere konfigurere computere på netværksniveau - ikke kun en enkelt computer. Det er nemt at installere og bruge, og der er ingen krav til sikkerhedsinfrastruktur eller brug af agentsoftware. I kombination med DevOps er Ansible en fremragende værktøjspakke, fordi den muliggør enkel automatisering og forenkler arbejdet for DevOps-eksperter.
Michael DeHaan skabte Ansible, og det blev første gang udgivet i 2012. Næste år, i 2013, grundlagde Said Ziouani og Timothy Gerla Ansible, Inc (AnsibleWorks, Inc.). Red Hat opkøbte det senere i 2016.
Hvorfor og hvornår skal man hyre en Ansible-udvikler?
Du skal hyre en Ansible-udvikler, hvis du har brug for automatisering. Dette er det centrale salgsargument, som Ansible leverer.
De betydelige fordele ved automatisering kan hovedsageligt ses i funktionaliteten og standardiseringen af cloud-implementeringer (både private og offentlige). Ved hjælp af moduler, playbooks og roller kan udviklerne orkestrere sikkerhedssystemerne på den bedst mulige måde.
Når man kun arbejder med én platform til automatisering (Ansible), bliver udrulning, styring og skalering af arbejdet meget mere håndterbart. Du vil også bemærke, hvordan den daglige administration er lettere og mere pålidelig, ligesom opgraderinger og installationer er enkle at gennemføre.
Med Ansible vil udviklingsprocessen blive fremskyndet og forbedret på grund af en proces, der kaldes multistep app-orchestrating. Dette giver mulighed for regelmæssige kodeopdateringer, herunder fejlrettelser og andre nyheder i de kommende softwarefunktioner.
Nyttig statistik om Ansible
Den gennemsnitlige løn for en Ansible-udvikler er $87.019 årligt, hvor den laveste løn er $68.000 og den højeste $112.000 om året.
Med hensyn til populariteten af Ansible som værktøjspakke har 9,49 % af udviklerne sagt, at det er deres grundlæggende udviklingsværktøj.
Populære mærkenavne, der er afhængige af Ansible-brug
Dette er nogle mærker, der bruger Ansible:
- Revolut
- Amelco
- Udemy
- Walmart
- trivago
- Alibaba Rejser
- Udemy
- Typeform
- ViaVarejo
- LaunchDarkly
Interview med en Ansible-udvikler
Dette er selvfølgelig den centrale del af ansættelsesprocessen. For at finde og ansætte den bedste Ansible-udvikler skal du være opmærksom på de tekniske og ikke-tekniske færdigheder (og visse væsentlige ting), som udvikleren skal besidde. Derefter skal du bruge relevante interviewspørgsmål, der vurderer udvikleren i overensstemmelse hermed.
Tekniske færdigheder hos en Ansible-udvikler
En erfaren Ansible-udvikler vil have betydelig erfaring med:
- Kendskab til Yaml-syntaksen
- At have erfaring med kodeditorer som Visual Studio Code.
- At kende Ansible Galaxy godt, med deres katalogopgaver og -kommandoer
- Brug af playbooks af Ansible
- Kendskab til kildekontrolsystemer, som Git og dets kommandoer git pull, git push, git clone.
Anmol Nagpal, en DevOps-ingeniør i Proxify-netværket, siger, at der er et par afgørende tekniske fokuspunkter, man skal kigge efter hos en Ansible-udvikler:
"Ansible-udvikleren skal have stor viden om Unix og Windows OS og forstå Docker i vid udstrækning. De har brug for praktisk erfaring med CI/CD-automatiseringspipelines, og lige så vigtigt, fremragende erfaring med L2 (ethernet) og L3 (switch) netværk."
Ikke-tekniske færdigheder hos en Ansible-udvikler
De ikke-tekniske færdigheder er lige så nødvendige som de tekniske. Lige så meget som du værdsætter teknisk ekspertise - professionalisme og holdning på arbejdspladsen er væsentlige påvirkningsfaktorer for et vellykket arbejdsforhold.
De rekrutteringsansvarlige, ansættelsescheferne og talentudviklingsspecialisterne bør fokusere på punktlighed. Dette viser, hvor ansvarligt en person tager interviewet, hvilket er en god indikator for fremtidig adfærd i et arbejdsmiljø (at komme til tiden, at respektere andres tid).
Når det er sagt, viser forberedelsen af udvikleren også deres engagement - udstyrets kvalitet (kamera, headset), rum og belysning samt påklædning er alle vigtige faktorer, der påvirker det første indtryk, kandidaten efterlader.
Og så er deres engelskkundskaber endnu en vigtig faktor at holde øje med. Hvis der er en sproglig hindring mellem udvikleren og kunden, vil det sandsynligvis påvirke den daglige kommunikation. Den overordnede holdning er også vigtig; at være åben, kommunikativ, optimistisk, nysgerrig og en omhyggelig lytter er alt sammen med til at skabe en fremgangsrig arbejdsdynamik.
De har brug for gode kommunikations- og problemløsningsevner, evnen til at trives i et team og en vækstorienteret tankegang.
Essentials og vurdering af en Ansible-udvikler
Det er ikke svært at lære Ansible (hvilket betyder, at det er meget ligetil). En vigtig ting, som kandidaten skal have, er en fremragende beherskelse af Linux-systemet, fordi vi skal køre Ansible på det (Ansible kan også køre på WSL - Windows Subsystem for Linux - men det understøttes i øjeblikket ikke af Ansible, og det bør ikke bruges til rigtigt arbejde).
En anden foretrukken forudsætning er at have rigelig erfaring og godt kendskab til det menneskeligt læsbare sprog til dataserialisering, YAML, fordi Ansible-drejebøgerne er skrevet i dette sprog.
Endelig er Ansible skrevet i Python. I bedste fald skal udvikleren være meget fortrolig med og have stor erfaring med Python.
Anmol tilføjede de foretrukne must-haves (eller essentials) for potentielle Ansible-ingeniører som i:
"Udvikleren skal have mindst seks måneders erfaring med Linux. Men de skal også have kendskab til funktionaliteten i Ansible, Ansible-rollerne, tags, playbooks og GitLab. Ellers ville jeg spørge dem om konfigurationsstyring, hvordan man kører playbook'en med tags, og jeg ville også spørge om Ansible Galaxy, ad hoc-kommandoer, ingen servere med direkte adgang og flere lignende relevante punkter."
Ansible interview spørgsmål
1. Kan du forklare, hvad CI/CD er?
Forventet svarr: Til udrulningsprocesser og strømlining af udvikling bruger vi Continuous Integration. Når en app er bygget, kalder vi Ansible fra et CI-system. Dette er en almindelig måde at lave en simpel integration på.
Med Continuous Delivery gennemfører vi en proces med at tage en kode i produktion, når koden tidligere lå i et fjernlager.
2. Hvad er kravene til Ansible-serveren?
Forventet svar: Det er et must at have en virtuel maskine med installeret Linux på. Hvad angår programmeringssprog, har vi brug for mindst Python v2.6 eller højere.
3. Hvad er Ansible Playbooks?
Forventet svar: Ansible Playbooks er en gruppe opgaver i en liste, der bruges til at udføre mod værter automatisk. Når vi har flere værter i flere grupper, kaldes det Inventory.
Hvert enkelt modul i Playbook er beregnet til en bestemt opgave. Den har de metadata, som brugeren udfører jobopgaverne for, og oplysninger om selve opgaveudførelsen (hvor og hvornår).
Vi kan bruge Playbook på to måder: fra platformen (Red Hat Ansible Automation Platform) og fra CLI.
4. Hvad er Ansible-opgaver?
Forventet svar: Den mindste handlingsenhed, som vi ønsker at automatisere ved hjælp af en playbook, kaldes en opgave. Denne opgave nedbryder en konfigurationspolitik og opdeler den i kodeblokke. Dernæst hjælper disse kodeblokke i automatiseringsprocesserne og er afgørende for automatiseringsprocessen generelt.
Playbook'en består af en række opgaver, og Ansible vil udføre dem (opgaverne) præcis som i playbook'en, i samme rækkefølge. Alle disse opgaver bruges til udrulning af apps i et fjerntliggende miljø eller til opsætning af en webserver.
5. Uddybning af Ansible-moduler.
Forventet svar: Ansible-moduler bruges inde i Ansible playbook og er selvstændige scripts. Her er et par eksempler:
- Pakkehåndtering - Til installation af forskellige pakker, opgradering, nedgradering og fjernelse af disse pakker.
- Ansible Command Module - Til implementering af kommandoer i den eksterne node, og bruges normalt til Linux-kommandoer på eksterne servere.
- Ansible Yum Module - Bruges til at installere forskellige tjenester med Yum-pakkehåndtering (standard for Red Hat Linux-distributioner).
- Ansible File Module - Til forskellige metoder til oprettelse af nye filer; tildeling af ejer, gruppetilladelser og meget mere.
- Ansible User Module - Til administration af forskellige brugerkonti på et Linux-system og til tilføjelse af grupper, adgangskodeindstillinger og endda sletning af en brugerkonto.
- Ansible Lineinfile Module - Til justeringer af den eksisterende linje; indsættelse, ændring, fjernelse og udskiftning af linjer.
- Ansible Archive Module - Til oprettelse af komprimerede arkiver, men i forskellige filer.
- Ansible Template Module - Et modul med alle mulige konfigurationsparametre, du har brug for til lettere styring af serverkonfiguration ved at oprette statiske filer.
- Ansible Cli_Command Module - Til at skubbe konfigurationer (tekstbaserede) til enheder via network_cli-plugin'et.
- Ansible Windows Modules - Disse moduler er testet til Windows-værter.
6. Hvad kan du sige om Ansible-tags?
Forventet svar: Tagget repræsenterer en attribut for strukturen i Ansible, dens opgaver, roller og spil. Lad os sige, at vi har en massiv playbook. I dette tilfælde er det bedst kun at køre en del af den og ikke alt i den playbook. Tag-attributten viser sig at være en perfekt løsning til dette.
Når vi anvender tags, kan vi vælge, hvad vi vil kontrollere, eller om vi vil bruge tags via kommandolinjen. Men vi kan bruge to måder at filtrere de tag-baserede opgaver på:
- (Til kommandolinjen) brug -tags og -skip-tags.
- (Ansible-konfigurationsindstillinger) Brug TAGS_RUN og TAGS-SKIP.
7. Beskriv Ansible-rollerne.
Forventet svar: Med Ansible-roller kan vi udvikle genanvendelige automatiseringskomponenter. Vi gør dette ved at gruppere og indkapsle skabeloner, konfigurationsfiler, handlere og opgaver (alle navngivne automatiseringsartefakter).
Det gode ved roller er, at de giver mulighed for automatisk indlæsning af filer, opgaver, vars, meta, standardindstillinger og handlere, blandt mange andre. Så når vi først har samlet indhold i roller (ved at gruppere flere opgaver), er det ret nemt at dele det med resten af brugerne.
Rollerne består af mange playbooks; i bund og grund er de et sæt filer, der er tildelt en bestemt rolle, før konfigurationerne opdeles.
8. Hvad er Ansible Galaxy?
Forventet svar: Det enorme offentlige lager af Ansible-roller kaldes Ansible Galaxy, og disse roller bliver også konstant forøget og opgraderet. Galaxy er det websted, der giver brugerne mulighed for at oprette, installere, administrere og dele fællesskabsudviklede roller.
Hvis vi (udviklere) opretter roller, kan vi dele dem via Galaxy og ved hjælp af GitHub-kontoen. På den måde kan vi importere rollerne og gøre dem tilgængelige for alle i Ansible-fællesskabet. Hvis vi importerer roller, vil de til gengæld være synlige og tilgængelige i Galaxys søgeindeks, så brugerne også kan bruge dem ved først at downloade dem.
9. Kan du uddybe Ansible Tower?
Forventet svar: Ansible Tower repræsenterer Ansible-virksomhedsversionen, der muliggør implementering af Ansible-fordele i stor skala. Det kan integreres med den eksisterende infrastruktur, f.eks. sikkerhed, netværk, app-implementering, lagring og livscyklusprocesser for softwareudvikling.
Funktionerne i Ansible Tower omfatter:
- Jobplanlægning
- GUI-dashboard (grafisk brugergrænseflade)
- RESTful API
- Jobstatusopdateringer i realtid
- Arbejdsgange med flere afspilningsbøger
- Logning af integrationer (ekstern)
- Adgangskontrol (rollebaseret)
10. På hvilke(n) måde(r) kan du teste Ansible-projekterne?
Forventet svar: Vi kan teste disse projekter på tre måder:
- Asserts - Hvis vi kører en test i Python, vil Asserts duplikere metoden og måden, hvorpå testen køres. Når et system kommer til en bestemt tilstand (den tilsigtede), verificerer Asserts dette for os.
- Manual Run - Her skal vi bare spille og sikre, at vi har den ønskede tilstand for systemet. Denne metode er ret enkel, men en ulempe er, at der kan være forskel på resultaterne i de forskellige miljøer (testmiljø vs. produktionsmiljø).
- Check Mode - Hvis vi ikke udfører simuleringen, men gerne vil vide, hvordan tingene ville køre, kan check mode vise os netop dette, dvs. vi kan tjekke, om alt fra engagementet opfører sig, som vi har brug for det. En fejl er, at vi ikke kan køre kommandoer og scripts til playbooks og roller. En løsning på dette er at deaktivere check-mode for specifikke opgaver, og vi skal bare køre check_mode:no
Hvad adskiller en dygtig Ansible-udvikler fra en god?
De bedste Ansible-udviklere vil have flere års erfaring, gode engelskkundskaber, kritisk tænkning og resultater over gennemsnittet i de tekniske tests.
Der er også visse specifikke ting, som Ansible-udviklere af høj kvalitet gør, og som gør deres arbejde lettere, renere og mere optimeret (ud over at det også fremskynder udviklingsprocessen):
- Kommentarer og brug af mellemrum - Med YAML kan udviklerne skrive Ansible Playbooks for Ansible; derfor hjælper mellemrummene (bogstavelige mellemrum) YAML med at angive indlejringen og definere dokumentets struktur.
- Organisering af playbooks gennem roller - Sandsynligvis den mest effektive måde at administrere playbooks på, selv om der er andre måder at gøre det på. Rollefunktionen er udelukkende beregnet til de velorganiserede strukturer i drejebøgerne.
- Versionsstyring - Versionsstyring er ikke noget nyt eller usædvanligt inden for kodning; tværtimod. For eksempel er det at holde variabler, roller, inventar og playbooks i Git-versionssystemet en fremragende måde at holde styr på datasættene på.
- Unik navngivning af variabler - Variablernes navne er ikke bare unikke, men har en væsentlig betydning. For at undgå forvirring tilføjer udviklerne et præfiks (rollenavn) til en variabel, hvilket resulterer i pænt organiserede variabler.
- Staging og produktion med separat lager - Alt er mere tilgængeligt, når udvikleren ikke holder alt vedlige i én lagerfil, men i stedet bruger separate.
- Brug af blok-syntaks - Ansible Blocks hjælper udvikleren med logisk at gruppere opgaver. Når dette er sagt, kan de nemt aktivere rollbacks, når det haster, indstille data til opgaver og organisere koden.
- Brug af indfødte moduler - I stedet for at bruge specifikke kommandoer (shell, raw, command) i overdreven grad og senere komplicere tingene, bruger udviklerne dem sparsomt. Og det gør de, fordi Ansible har indbyggede moduler, hundredvis af dem.
- Rullende opdateringer med serielt nøgleord - Ansible tilbyder det serielle nøgleord, der gør det muligt for udvikleren at vælge antallet af maskiner, der skal opdateres på én gang og i én batch. Med nøgleordet serial kan udviklere også vælge antallet af værter, der skal administreres.
Til de anførte punkter ovenfor tilføjede Anmol:
"Udvikleren skal have et fremragende kendskab til tags og roller samt fejlfinding. De vil mestre YAML-sikkerhed og -kryptering og vide, hvordan man arbejder med rollback og shell-scripting. De vil selvfølgelig også have stor viden om Python og Go."
Mulige udfordringer under ansættelsen af en Ansible-udvikler
Ved at vide, hvad de mulige udfordringer er under ansættelsesprocessen, kan du forvente, at kandidaterne er tilstrækkeligt forberedte:
Begrænset talentmasse
Det er almindeligt at stå over for denne udfordring, men måske kunne du prøve at udforske mere bredt. Prøv forskellige jobplatforme, hvor der ikke er mangel på rekrutteringsfolk og talent. Jo flere jobplatforme, der undersøges, desto bedre er chancerne for at udvide denne talentpulje.
Mangel på højtuddannede kandidater
Det kan være et problem at finde kandidater med stjerneekspertise, selv om talentpuljen er ret stor - det er antallet af kvalificerede kandidater, der betyder noget her, ikke hvor stor talentpuljen er. Der vil være mange gode Ansible-udviklere, men måske ikke med en fantastisk viden og fremragende færdigheder.
Konkurrenter
Forudsat at der er Ansible-udviklere, der virkelig brænder for det, de laver, kan de allerede være ansat eller bede om en løn, der ikke passer til dit budget.
I disse tilfælde kan dine konkurrenter være den afgørende faktor i det hele. Nogle giver allerede udvikleren deres ønskede (høje) løn eller er klar til at punge ud, hvis de vil ansætte den bedste udvikler, som andre ønsker. Nogle konkurrenter kunne også være parate til at give meget bedre tilbud end markedsgennemsnittet.
Den dyre og langvarige rekrutteringsproces
Omkostninger er også en udfordring for rekrutterings- og ansættelsesprocessen. Det betyder, at der er risiko for, at de rekrutteringsansvarlige søger dårligt efter kandidater, og det vil medføre, at uegnede kandidater kommer til samtale, og at man går glip af de bedste udviklere derude og gentager processen på ny.
Forretningsdrivere og værdien af Ansible
Lad os se, hvad fordelene ved at bruge Ansible i udviklingen er; på hvilken måde Ansible tilfører værdi til en virksomhed, og hvorfor det er vigtigt at bruge/implementere det:
- Fleksibel - Udvikleren kan nemt organisere og diktere den overordnede dynamik for app-miljøet, uanset hvor det er implementeret. Det er lige så nemt at tilpasse i henhold til specifikke krav.
- Intet behov for agentprogrammer - Der er ikke længere behov for firewall-porte eller specifik softwareinstallation, for nu er det muligt at automatisere klientens system uden disse ting installeret og uden individuelle og nye administrationsstrukturer.
- Gratis - Da Ansible er open source, er den også gratis og tilgængelig for alle.
- Effektivt - Det er utroligt, at der med Ansible ikke er behov for yderligere software, der skal installeres; det giver til gengæld en masse plads til specifikke ressourcer til appen, som ellers ligger på serveren.
- Let at sætte op og bruge - Funktionerne i Ansible gør det ikke bare let at bruge, men også let at sætte op i starten.