Kmom01: Introduktion till DevOps

By . Latest revision .

Det är en fullspäckat kurs där vi ska lära oss många ny verktyg och koncept. I kursen ska vi lära oss både om det kulturella inom devops men även det praktiska. Vi börjar med att skaffa en produktionsmiljö och bekantar oss med ett påbörjat projekt som ska kopplas till en CI kedja och driftsätta manuellt.

#Vad är devops?

Kolla på följande video för att få en introduktion till ämnet devops. Devops är ett brett ämne med många olika definitioner, här försöker skaparen av CM verktyget Chef beskriva konceptet och komma fram till en rimlig definition.

Chef Style DevOps Kungfu - Adam Jacob Keynote - ChefConf 2015.

För de som vill gräva ner sig i den teoretiska delen och företagskulturen av devops rekommenderar jag boken Effective Devops. Läs kapitel 1-6.

#Miljö

Tanken är att vi ska jobba med ett projekt igenom hela kursen och då behöver vi verktyg och program för att jobba med koden. Vi kommer ha både en lokal utvecklingsmiljö och en produktionsmiljö. Vi börjar med utvecklingsmiljön, som vi brukar kalla labbmiljö.

#Labbmiljön

Vi kommer att utöka vad som ingår i labbmiljön under kursen. Till en början behöver vi programmen som finns i installera labbmiljön.

#Produktionsmiljö

När man jobbar enligt devops ska saker ofta gå snabbt och automatiskt, då underlättar det om man snabbt och enkelt kan starta upp och stänga ner servrar. Därför ska vi använda oss av en molntjänst, mer specifikt Microsoft Azure. OBS! logga inte in via den länken.

#Azure

För att få en introduktion till vad Azure är kan ni kolla in “What Is Azure?”.

What Is Azure?

Logga in på Azure med ditt studentinlogg och kolla sen på videon nedanför och skapa din första VM på Azure.

101 Skapa server på Azure.

#Domännamn

Det underlättar dessutom om vi har ett domännamn som vi kan länka till en server. Om du inte redan har ett kolla in artikeln “GitHub Education Pack och en server på Digital Ocean”. I den görs mer saker än vad vi behöver göra så kolla bara på de två följande delarna:

  1. GitHub Education Pack

  2. En domän till din server (Du kan sluta läsa när det börjar handla om Digital ocean).

När du har fixat en domän, kolla på videon för att ditt domännamn till servern du skapade ovanför.

102 Koppla domän till Azure.

#10 första minuterna

Nu ska vi logga in på servern och konfigurera den. Vi utgår från en artikeln som är gjord för jsramverk kursen så några saker är inte exakt likadant.

När du loggar in på servern använd azureuser som användare istället för root.
Du behöver även byta till root användaren efter att du har loggat in, gör det med sudo su.
Du kan skippa följande kommandon:

apt-get remove --purge unscd
userdel -r debian

Brandväggsdelen är frivillig i och med att vi kommer styra portar till servern i Azure.

Gör nu Första 10 minuter på en server delen.

#Appen

Nästa steg är att bekanta dig med appen som du ska jobba på i kursen. Läs igenom och följ:

Introduktion till Devops appen.

#Driftsätt appen

Vi har en server och vi har en app, då måste vi lära oss driftsätta den. Om något går fel när du jobbar igenom artikeln och du inte riktigt vet hur du ska ångra det, skapa om servern i Azure och använd dig av skripten i repot för att snabbt göra de 10 första minuterna på en server och börja om med driftsättningen.

Jobba igenom “Driftsätta en Flask app”.

#Continues Integration

Vi vill ha en CI-kedja till repot så att testerna automatiskt körs när du gör push. I kursen har jag valt att använda CircleCi. Nu ska du läsa igenom en artikel som visar hur vi kan använda CirclCi för python projekt. När du gjort det ska du göra det för ditt forkade repo.

Jobba igenom “Continuous Integration With Python: An Introduction”.

När du pushar kod i ditt repo ska CircleCi köra alla unittester, integrationtester och validera koden. Använd dig av make kommandot make test för att köra det. Du ska inte använda dig av flake8 som de gjorde i artikeln.

Om ni vill snabba på CircleCi jobbet kan ni cacha det installerade paketen, detta är frivilligt. Kolla in Caching dependencies, det är i steps: delen det intressanta sker. En längre förklaring på hur det funkar kan ni hitta i CircleCi’s dokumentation.

#Video

  1. Kursen innehåller föreläsningar som spelas in och därefter läggs i spellistan “devops streams ht21”.

  2. I “kursen devops” hittar du alla videor som är kopplade till kursmomentet, de börjar på 1xx i namnet.

#Lästips

  1. Bättre commit meddelanden:

  2. Semantisk versionshantering, en bra versionsstandard för projekt. Vi inte riktigt den i kursen för att jag vill ha ny siffra för varje kursmoment.

  3. The 12 Factor App är en populär “standard” för att bygga Software-as-a-service och används mycket i devops sammanhang.

  4. DevOps Roadmap Visar upp vanligaste verktygen man behöver kunna för att jobba med de tekniska delarna av devops.

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas.

  1. Lägg till funktionaliteten att följa andras blogginlägg. Jobba igenom Kom igång med followers.

  2. Driftsätt den nya funktionaliteten på din server.

  3. Koppla ditt repo till CircleCi. När du gör en commit ska CricleCi köra alla unittester, integrationtester och validera koden. Lägg till en CircleCi badge i README filen för repot.

  4. Försäkra dig om att du har pushat repot med din senaste kod och taggat din inlämning med version v1.0.0. Om du pushar kmom01 flera gånger kan du öka siffrorna efter 1:an.

#Resultat & Redovisning

Det är ingen inlämning på Canvas för kmom01. Kmom01 redovisas tillsammans med kmom02 istället.

#Revision history

  • 2021-10-29: (C, aar) Slog ihop canvas inlämning med kmom02.
  • 2020-10-20: (B, aar) Uppdaterade med Azure inför HT20.
  • 2019-04-17: (A, aar) Första versionen släppt.

Document source.