Populariteten til Ansible gjør denne verktøypakken til en svært etterspurt løsning for webutviklingsoppdrag. Bedrifter og merkevarer som bruker en slik teknologi i sitt pågående arbeid (eller ønsker å prøve den ut i fremtiden), vil mer enn gjerne ta en nærmere titt på Ansible.
Denne automatiseringsmotoren med åpen kildekode har vært svært etterspurt, og det er ikke så rart, for den bidrar til å oppnå en ønsket, forenklet automatisering. Og du streber absolutt etter dette i virksomheten din. Derfor kan du bruke noen tips for å søke etter og ansette Ansible-utviklere på best mulig måte.
Det er ikke enkelt å velge den beste kandidaten blant alle som har søkt; mange vil oppfylle kravene i stillingsannonsen din, og her kommer den vanskelige delen. Risikoen er å legge ned for mye arbeid, tid og penger i en prosess som startet dårlig planlagt, og som det vil bli kostbart å reversere senere.
La oss gå rett på sak og klargjøre det viktigste om Ansible og hvordan ansettelsesprosessen for Ansible-utviklere bør se ut.
Om Ansible
Ansible representerer en pakke med programvareverktøy (også ansett som en åpen kildekode-motor for automatisering og IT-infrastruktur) som blant annet brukes til konfigurasjonsstyring, orkestrering og appdistribusjon. Andre, like levedyktige bruksområder for Ansible er infrastruktur, oppdatering av servere og arbeidsstasjoner, oppgradering av sikkerhet, programvareinstallasjon, patchsystemer og automatisering av deling i større skala.
Med Ansible kan utviklere konfigurere datamaskiner på nettverksnivå - ikke bare en enkelt datamaskin. Det er enkelt å installere og bruke, og det er ingen krav til sikkerhetsinfrastruktur eller bruk av agentprogramvare. I kombinasjon med DevOps er Ansible en utmerket verktøypakke fordi den muliggjør enkel automatisering og forenkler arbeidet for DevOps-eksperter.
Michael DeHaan skapte Ansible, og det ble først utgitt i 2012. Året etter, i 2013, grunnla Said Ziouani og Timothy Gerla Ansible, Inc (AnsibleWorks, Inc.). Red Hat kjøpte senere opp selskapet i 2016.
Hvorfor og når skal man ansette en Ansible-utvikler?
Du må ansette en Ansible-utvikler hvis du trenger automatisering. Dette er det sentrale salgsargumentet som Ansible tilbyr.
De betydelige fordelene med automatisering kan hovedsakelig sees i funksjonaliteten og standardiseringen av sky-distribusjoner (både private og offentlige). Ved hjelp av moduler, playbooks og roller kan utviklerne orkestrere sikkerhetssystemene på best mulig måte.
Ved å arbeide med bare én plattform for automatisering (Ansible) blir distribusjon, administrasjon og skalering av arbeidet mye mer håndterbart. Du vil også legge merke til at den daglige administrasjonen er enklere og mer pålitelig, og at oppgraderinger og installasjoner er enkle å gjennomføre.
Med Ansible blir utviklingsprosessen raskere og bedre takket være en prosess som kalles multistep app-orchestrating. Dette muliggjør regelmessige kodeoppdateringer, inkludert feilrettinger og andre nyheter i de kommende programvarefunksjonene.
Nyttig statistikk om Ansible
Gjennomsnittslønnen](https://www.glassdoor.com/Salaries/ansible-developer-salary-SRCH_KO0,17.htm) for en Ansible-utvikler er $ 87 019 årlig, med den laveste lønnen på $ 68 000 og den høyeste på $ 112 000 per år.
Når det gjelder populariteten til Ansible som en verktøypakke, har 9,49 % av utviklerne sagt at dette er det grunnleggende verktøyet de bruker i utviklingen.
Populære merkenavn som er avhengige av Ansible-bruk
Dette er noen merker som bruker Ansible:
- Revolut
- Amelco
- Udemy
- Walmart
- trivago
- Alibaba Reiser
- Udemy
- Typeform
- ViaVarejo
- LaunchDarkly
Intervju med en Ansible-utvikler
Dette er selvfølgelig den sentrale delen av ansettelsesprosessen. For å finne og ansette den beste Ansible-utvikleren må du ta hensyn til de tekniske og ikke-tekniske ferdighetene (og visse essensielle egenskaper) som utvikleren må ha. Deretter må du bruke relevante intervjuspørsmål som vil vurdere dev tilsvarende.
Tekniske ferdigheter hos en Ansible-utvikler
En erfaren Ansible-utvikler vil ha betydelig erfaring med:
- Kjenne til Yaml-syntaksen
- Har erfaring med kodeditorer, som Visual Studio Code
- Kjenner Ansible Galaxy godt, med katalogens oppgaver og kommandoer
- Bruk av spillbøkene til Ansible
- Kunnskap om kildekontrollsystemer, som Git og kommandoene git pull, git push, git clone.
Anmol Nagpal, en DevOps-ingeniør i Proxify-nettverket, sier at det er noen viktige tekniske fokuspunkter man bør se etter hos en Ansible-utvikler:
"Ansible-utvikleren bør ha omfattende kunnskap om Unix og Windows OS og forstå Docker i stor grad. De trenger praktisk erfaring med CI/CD-automatiseringsrørledninger, og like viktig, utmerket erfaring med L2 (ethernet) og L3 (switch) nettverk også."
Ikke-tekniske ferdigheter hos en Ansible-utvikler
De ikke-tekniske ferdighetene er like nødvendige som de tekniske. Selv om du setter pris på teknisk ekspertise, er profesjonalitet og holdninger på arbeidsplassen en viktig faktor for et vellykket arbeidsforhold.
Rekrutterere, ansettelsesansvarlige og talentutviklere bør fokusere på punktlighet. Dette viser hvor ansvarlig man tar intervjuet, noe som er en god indikator på fremtidig oppførsel i et arbeidsmiljø (komme til rett tid, respektere andres tid).
Når dette er sagt, viser også forberedelsene til utvikleren deres engasjement - kvaliteten på utstyret (kamera, hodesett), rommet og belysningen og kleskoden er alle viktige faktorer som påvirker det første inntrykket kandidaten etterlater seg.
Deretter er deres engelskkunnskaper nivå enda en nøkkelfaktor å se etter. Hvis det er en språklig hindring mellom utvikleren og kunden, vil det sannsynligvis påvirke den daglige kommunikasjonen. Den overordnede holdningen er også viktig; å være åpen, kommunikativ, optimistisk, nysgjerrig og en oppmerksom lytter er alt sammen med på å skape en fremgangsrik arbeidsdynamikk.
De trenger gode kommunikasjons- og problemløsningsferdigheter, evnen til å trives i et team og et vekstorientert tankesett.
Grunnleggende og vurdering av en Ansible-utvikler
Det er ikke noe problem å lære seg Ansible (det er altså veldig enkelt). En viktig ting for kandidaten å ha er en utmerket kommando av Linux-systemet fordi vi må kjøre Ansible på det (Ansible kan også kjøre på WSL - Windows Subsystem for Linux - men det støttes for øyeblikket ikke av Ansible, og det bør ikke brukes til ekte arbeid).
En annen forutsetning er at du har god erfaring med og gode kunnskaper om det menneskelesbare språket for dataserialisering, YAML, fordi Ansible-dreiebøkene er skrevet i dette språket.
Til slutt, Ansible er skrevet i Python. I beste fall må utvikleren være veldig kjent med og svært erfaren i Python.
Anmol la til de foretrukne må-ha (eller essensielle) for potensielle Ansible-ingeniører som i:
"Utvikleren trenger minst seks måneders erfaring med Linux. Men de trenger også kunnskap om funksjonaliteten til Ansible, Ansible-rollene, taggene, spillbøkene og GitLab. Ellers ville jeg forhørt meg med dem om konfigurasjonsadministrasjon, hvordan man kjører spillboken med tagger, og jeg ville også spurt om Ansible Galaxy, ad hoc-kommandoer, ingen direkte tilgang til servere og flere lignende relevante punkter."
Ansible-intervjuspørsmål
1. Kan du forklare hva CI/CD er?
Forventet svarr: For å effektivisere distribusjonsprosesser og utvikling bruker vi Continuous Integration. Etter at en app er bygget, kaller vi Ansible fra et CI-system. Dette er en vanlig måte å gjøre en enkel integrering på.
Med Continuous Delivery gjennomfører vi en prosess for å ta en kode til produksjon når koden tidligere befant seg i et eksternt depot.
2. Hva er kravene til Ansible-serveren?
Forventet svar: Det er et must å ha en virtuell maskin med installert Linux på den. Når det gjelder programmeringsspråk, trenger vi minst Python v2.6 eller nyere.
3. Hva er Ansible Playbooks?
Forventet svar: Ansible Playbooks er en gruppe oppgaver i en liste som brukes til å utføre mot verter automatisk. Når vi har flere verter i flere grupper, kalles dette Inventory.
Hver enkelt modul i Playbook er ment for en bestemt oppgave. Den har metadataene som brukeren utfører jobboppgavene for, og informasjon om selve oppgaveutførelsen (hvor og når).
Vi kan bruke Playbook på to måter: fra plattformen (Red Hat Ansible Automation Platform) og fra CLI.
4. Hva er Ansible-oppgaver?
Forventet svar: Den minste handlingsenheten vi ønsker å automatisere ved hjelp av en spillbok kalles en oppgave. Denne oppgaven bryter ned en konfigurasjonspolicy og deler den inn i kodeblokker. Disse kodeblokkene er til hjelp i automatiseringsprosessene og er avgjørende for automatiseringsprosessen generelt.
Spillboken består av en oppgaveserie, og Ansible vil utføre dem (oppgavene) nøyaktig som i spillboken, i samme rekkefølge. Alle disse oppgavene brukes for appdistribusjon til et eksternt miljø eller også for oppsett av en webserver.
5. Utdyp om Ansible-moduler.
Forventet svar: Ansible-moduler brukes inne i Ansible-spillboken og er frittstående skript. Her er noen eksempler:
Pakkeadministrasjon - For installasjon av ulike pakker, oppgradering, nedgradering og fjerning av disse pakkene.
Ansible Command Module - For implementering av kommandoer i den eksterne noden, og brukes vanligvis til Linux-kommandoer for eksterne servere.
Ansible Yum Module - Brukes til å installere ulike tjenester med Yum-pakkebehandleren (standard for Red Hat Linux-distribusjoner).
Ansible File Module - For ulike metoder for oppretting av nye filer; tildeling av eier, gruppetillatelser og mer.
Ansible User Module - For administrasjon av ulike brukerkontoer i et Linux-system, og for å legge til grupper, passordinnstillinger og til og med sletting av en brukerkonto.
Ansible Lineinfile Module - For justeringer av eksisterende linjer; innsetting, endring, fjerning og erstatning av linjer.
Ansible Archive Module - For å lage komprimerte arkiver, men i forskjellige filer.
Ansible Template Module - En modul med alle mulige konfigurasjonsparametere du trenger for enklere administrasjon av serverkonfigurasjon ved å opprette statiske filer.
Ansible Cli_Command Module - For å sende konfigurasjoner (tekstbaserte) til enheter via network_cli-plugin-modulen.
Ansible Windows-moduler - Disse modulene er testet for Windows-verter.
6. Hva kan du si om Ansible-taggene?
Forventet svar: Taggen representerer et attributt for strukturen til Ansible, dens oppgaver, roller og spill. La oss si at vi har en massiv spillbok. I dette tilfellet er det best å bare kjøre en del av den og ikke alt i den spillboken. Tag-attributtet viser seg å være en perfekt løsning for dette.
Når vi bruker taggene, kan vi velge hva vi kontrollerer eller om vi vil bruke taggene gjennom kommandolinjen. Men vi kan bruke to måter å filtrere de tag-baserte oppgavene på:
- (For kommandolinje) bruk -tags og -skip-tags
- (Ansible-konfigurasjonsinnstillinger) bruk TAGS_RUN og TAGS-SKIP.
7. Beskriv Ansible-rollene.
Forventet svar: Med Ansible-roller kan vi utvikle gjenbrukbare automatiseringskomponenter. Vi gjør dette ved å gruppere og innkapsle maler, konfigurasjonsfiler, håndterere og oppgaver (alle navngitte automatiseringsartefakter).
Det som er bra med roller, er at de gir mulighet for automatisk innlasting av filer, oppgaver, vars, meta, standardinnstillinger og handlere, blant mange andre. Når vi har satt sammen innhold i roller (ved å gruppere flere oppgaver), er det ganske enkelt å dele dette med resten av brukerne.
Rollene består av mange spillbøker; i hovedsak er de et sett med filer som er tilordnet en bestemt rolle før konfigurasjonene deles opp.
8. Hva er Ansible Galaxy?
Forventet svar: Det enorme offentlige depotet av Ansible-roller kalles Ansible Galaxy, og disse rollene øker og oppgraderes også stadig. Galaxy er nettstedet som lar brukerne opprette, installere, administrere og dele fellesskapsutviklede roller.
Hvis vi (utviklere) oppretter roller, kan vi dele dem gjennom Galaxy og bruke GitHub-kontoen. På denne måten kan vi importere rollene og gjøre dem tilgjengelige for alle i Ansible-fellesskapet. Hvis vi importerer roller, vil de i sin tur være synlige og tilgjengelige i søkeindeksen til Galaxy, slik at brukerne også kan bruke dem ved først å laste dem ned.
9. Kan du utdype Ansible Tower?
Forventet svar: Ansible Tower representerer Ansible enterprise-versjonen, som muliggjør distribusjon av Ansible-fordeler i stor skala. Den kan integreres med eksisterende infrastruktur, for eksempel sikkerhet, nettverk, appdistribusjon, lagring og livssyklusprosesser for programvareutvikling.
Funksjonene i Ansible Tower inkluderer:
- Jobbplanlegging
- GUI-dashbord (grafisk brukergrensesnitt)
- RESTful API
- Jobbstatus oppdateres i sanntid
- Arbeidsflyter med flere spillbøker
- Logging av integrasjoner (ekstern)
- Tilgangskontroll (rollebasert)
10. På hvilke(n) måte(r) kan du teste Ansible-prosjektene?
Forventet svar: Vi kan teste disse prosjektene på tre måter:
- Asserts - Hvis vi kjører en test i Python, vil Asserts duplisere metoden og måten testen kjøres på. Når et system kommer til en bestemt tilstand (tiltenkt), verifiserer Asserts dette for oss.
- Manuell kjøring - For dette trenger vi bare å spille og sørge for at vi har ønsket tilstand for systemet. Denne metoden er ganske enkel, men en ulempe er at det kan være forskjell mellom resultatene i miljøene (testmiljø vs. produksjonsmiljø)
- Sjekkmodus - Hvis vi ikke utfører simuleringen, men ønsker å vite hvordan ting vil kjøre, kan sjekkmodusen vise oss akkurat dette, dvs. at vi kan sjekke om alt fra engasjementet oppfører seg slik vi trenger det. En feil er at vi ikke kan kjøre kommandoer og skript for playbooks og roller. En løsning på dette er å deaktivere sjekk-modus for spesifikke oppgaver, og vi trenger bare å kjøre check_mode:no
Hva skiller en god Ansible-utvikler fra en dyktig?
De beste Ansible-utviklerne vil ha flere års erfaring, gode engelskkunnskaper, kritisk tenkning og resultater over gjennomsnittet i de tekniske testene.
Det er også visse spesifikke ting Ansible-utviklere av høy kvalitet gjør, noe som gjør arbeidet deres enklere, renere og mer optimalisert (i tillegg til å akselerere utviklingsprosessen:
- Med YAML kan utviklerne skrive Ansible Playbooks of Ansible; derfor hjelper mellomrom (bokstavelig mellomrom) YAML med å betegne hekkingen og definere strukturen i dokumentet.
- Organisering av playbooks gjennom roller - Sannsynligvis den mest effektive måten å administrere playbooks på, selv om det finnes andre måter å gjøre det på. Rollefunksjonen er utelukkende beregnet på de velorganiserte strukturene i spillbøkene.
- Versjonskontroll er ikke noe nytt eller uvanlig innen koding, snarere tvert imot. For eksempel er det å ha variabler, roller, inventar og playbooks i Git-versjonssystemet en utmerket måte å holde kontroll med datasettene på.
- Unik navngivning av variabler - Variablenes navn er ikke bare unike, men har også en viktig betydning. For å unngå forvirring legger utviklerne til et prefiks (rollenavn) til en variabel, slik at variablene blir ryddig organisert.
- Staging og produksjon med separat lager - Alt er mer tilgjengelig når utvikleren ikke holder alt vedlikeholdt i bare én lagerfil, men i stedet bruker separate.
- Bruk av blokksyntaks - Ansible Blocks hjelper utvikleren med å gruppere oppgaver på en logisk måte. Når dette er sagt, gjør de det enkelt å tilbakestille når det haster, sette data til oppgaver og organisere koden.
- I stedet for å bruke spesifikke kommandoer (shell, raw, command) i overdreven grad og senere komplisere ting, bruker utviklerne dem sparsomt. Og de gjør det fordi Ansible har innfødte moduler, hundrevis av dem.
- Rolling updates with serial keyword - Ansible tilbyr serial keyword som gjør det mulig for utvikleren å velge hvor mange maskiner som skal oppdateres på én gang og i én batch. Med nøkkelordet serial kan utviklere også velge antall verter som skal administreres.
Til de oppførte punktene ovenfor, Anmol lagt til:
"Utvikleren bør ha utmerket kunnskap om taggene og rollene og feilsøking. De vil mestre YAML-sikkerheten og krypteringen og vite hvordan man omgår rollback og shell scripting. Selvfølgelig vil de også ha stor kunnskap om Python og Go."
Mulige utfordringer under ansettelsen av en Ansible-utvikler
Ved å vite hvilke utfordringer som kan oppstå i løpet av ansettelsesprosessen, kan du forvente at kandidatene er godt forberedt:
Begrenset talentpool
Det er vanlig å møte denne utfordringen, men kanskje du kan prøve å utforske bredere. Prøv ulike jobbplattformer der det ikke er mangel på rekrutterere og talenter. Jo flere jobbplattformer som undersøkes, desto bedre er sjansene for å utvide denne talentpoolen.
Mangel på høyt kvalifiserte kandidater
Det kan være et problem å finne kandidater med stjernekompetanse, selv om talentpoolen er ganske stor - det er antallet kvalifiserte kandidater som er viktig her, ikke hvor stor talentpoolen er. Det vil være mange gode Ansible-utviklere, men kanskje ikke med fantastisk kunnskap og fremragende ferdigheter.
Konkurrenter
Forutsatt at det finnes Ansible-utviklere som virkelig briljerer i det de gjør, kan de allerede være ansatt eller be om en lønn som ikke passer budsjettet ditt.
I slike tilfeller kan konkurrentene dine være den avgjørende faktoren i det hele. Noen gir allerede dev sin ønskede (høye) lønn eller er klare til å sprute hvis de vil ansette den beste dev som andre ønsker. Noen konkurrenter kan også være villige til å gi mye bedre tilbud enn gjennomsnittet på markedet.
Den kostbare og langvarige rekrutteringsprosessen
Kostnader er også en utfordring for rekrutterings- og ansettelsesprosessen. Dette betyr at det er en risiko for at rekrutterere søker etter kandidater på en dårlig måte, og dette vil føre til at uegnede kandidater blir intervjuet, og at man går glipp av de beste utviklerne der ute og gjentar prosessen på nytt.
Forretningsdrivere og verdien av Ansible
La oss se hva fordelene med å bruke Ansible i utvikling er; på hvilken måte Ansible tilfører verdi for en virksomhet, og hvorfor det er viktig å bruke/implementere det:
- Fleksibel - Utvikleren kan enkelt organisere og diktere den overordnede dynamikken for appmiljøet, uavhengig av distribusjonssted. Det er like enkelt å tilpasse i henhold til spesifikke krav.
- Ingen behov for agentprogrammer - Det er ikke lenger behov for brannmurporter eller installasjon av spesifikk programvare, fordi det nå er mulig å automatisere klientens system uten at disse tingene er installert og uten individuelle og nye administrasjonsstrukturer.
- Gratis - Siden Ansible er åpen kildekode, er det også gratis og tilgjengelig for alle.
- Effektivt - Det er utrolig at med Ansible er det ikke behov for ekstra programvare å installere; dette gir i sin tur mye plass til spesifikke ressurser for appen, ellers på serveren.
- Enkelt å sette opp og bruke - Funksjonene i Ansible gjør det ikke bare enkelt å bruke, men også enkelt å sette opp i utgangspunktet.