Rekommendationer för att aktivera automatisering

Gäller för denna checklista för Azure Well-Architected Framework Operation Excellence:

OE:10 Utforma och implementera automatisering i förväg för åtgärder som livscykelproblem, start och tillämpning av skyddsmekanismer för styrning och efterlevnad. Försök inte att eftermontera automatisering senare. Välj automatiseringsfunktioner som din plattform tillhandahåller.

Den här guiden beskriver rekommendationerna för att utforma och implementera din arbetsbelastning för att aktivera automatisering. Utforma din arbetsbelastning med automatisering i åtanke för att säkerställa att rutinuppgifter som etablering av resurser, skalning och distributioner utförs snabbt och tillförlitligt. Automation förenklar underhållsaktiviteter och gör att du kan uppdatera, korrigera och uppgradera dina system mer effektivt.

Viktiga designstrategier

Arbetsbelastningsdesign

Du kan utforma din arbetsbelastning för att stödja automatisering från idéfasen till den pågående förbättringsfasen. Överväg först hur du vill tillämpa automatisering i din arbetsbelastning för att säkerställa att du lägger de nödvändiga delarna på plats. Tänk på din arbetsbelastning när det gäller Well-Architected Framework-pelare för att planera för de typer av automatisering som du ska använda. Du kan automatisera många funktioner för säkerhet, tillförlitlighet, prestanda, åtgärder och kostnadskontroll.

Utforma med automatisering i åtanke för att minimera refaktoriseringen när arbetsbelastningen har körts. Tänk på dina arbetsbelastningskrav när du bestämmer vilka automatiseringsverktyg som ska användas. Det kan finnas färdiga automatiseringsverktyg som ditt team redan är bekant med. Genom att använda dessa verktyg kan du göra det enklare att automatisera din arbetsbelastning, men tänk på deras begränsningar och kompatibilitet med din molnplattform. Vissa automatiseringsverktyg kan till exempel integreras bra med Azure CLI-verktyg, medan andra kan kräva REST-gränssnitt. Undersök alltid de verktyg som molnplattformen tillhandahåller för att säkerställa att de är kompatibla och tillhandahålla de funktioner du behöver. Exempel på sätt som du proaktivt kan planera för automatisering är:

  • Distribution: Automatisera dina program- och infrastrukturdistributioner för att säkerställa en förutsägbar standard. Planera för automatisk distribution genom att utveckla distributionsstandarder, träna ditt team på de verktyg som du ska använda och implementera nödvändig infrastruktur.

  • Validering: Verifiera automatiskt efterlevnadskrav mot din arbetsbelastning med hjälp av orkestrerings- eller principverktyg. Identifiera lämpligt valideringsverktyg för din arbetsbelastning och planera att implementera de system som krävs, till exempel orkestreringsservrar.

  • Automatisk skalning: Använd automatisk skalning i hela infrastrukturen för att hjälpa dig att uppnå dina krav på tillförlitlighet och prestanda. Du bör allokera IP-adressutrymme och undernät i arbetsbelastningen i förväg för att ta hänsyn till skalningsåtgärder, förutom att planera för redundans och naturlig tillväxt.

Kompromiss: När du utformar din arbetsbelastning för att aktivera automatisering bör du överväga vilken kontroll du vill behålla jämfört med den effektivitet du kan få genom automatisering. I vissa fall kanske din arbetsbelastning inte är tillräckligt mogen för att automatisera vissa funktioner eller så kanske du behöver en flexibilitetsnivå som automatiseringen inte tillhandahåller.

Tänk också på teamets kompetensuppsättning när du utformar din arbetsbelastning. Om en hög grad av automatisering kräver verktyg som ditt team inte har stöd för kan du behöva använda en mindre omfattande design som ett mellanliggande steg.

Förbättringar av kontinuerlig arbetsbelastning

När arbetsbelastningen körs i molnet är det viktigt att prioritera kontinuerliga förbättringar. Observera din arbetsbelastning i praktiken, analysera användningsmönster och granska kundens beteende som är relaterat till din arbetsbelastning för att identifiera områden där du kan förbättra automatiseringen. Leta efter sätt att förbättra befintlig automatisering eller introducera ny automatisering för att förbättra din kundupplevelse. Du kan till exempel ha automatisk skalning aktiverat, men arbetsbelastningsökningen är kortvarig. Du kan integrera skalbar automatisering för att minska CPU-användningen när belastningen sjunker under tröskelvärdet.

Följande avsnitt i den här guiden ger rekommendationer om specifika automatiseringsområden som kan hjälpa dig med din arbetsbelastningsdesign och implementering.

Bootstrapping

Bootstrapping refererar till konfigurationsuppdateringar till en resurs som måste göras när den har etablerats, men innan den är tillgänglig som en del av arbetsbelastningspoolen. Bootstrapping är ofta associerat med virtuella datorer , men många andra resurser måste konfigureras som en del av distributionsprocessen, inklusive PaaS-tekniker (plattform som en tjänst) och containervärdtekniker som Azure Kubernetes Service (AKS).

Din molnplattform kan tillhandahålla bootstrapping-lösningar åt dig, som du bör använda där det är möjligt. Du kan till exempel använda VM-tillägg i Azure för att göra fördefinierade konfigurationsändringar under distributionsprocessen och anpassa dina konfigurationsändringar genom att mata in PowerShell-skript.

Autentisering och auktorisering

Ta hänsyn till automatisering när du utformar din autentiserings- och auktoriseringsstrategi. Det är viktigt att upprätthålla den högsta säkerhetsnivån i produktionsarbetsbelastningar, men det kan påverka automatiseringen. Användningen av biometrisk autentisering eller multifaktorautentisering ökar till exempel komplexiteten som måste redovisas i din automatiseringsdesign. Använd icke-mänskliga, säkra konton för automatiserad autentisering, till exempel hanterade identiteter, arbetsbelastningsidentiteter eller certifikat. Se till att du har inkluderat hemlighets- och nyckelhantering i din automatisering för ökad autentiseringssäkerhet.

Designvariationer i din arbetsbelastning

Undvik att distribuera ny infrastruktur i onödan när små ändringar görs genom att skapa flexibilitet i artefakterna. I stället för att distribuera om infrastrukturen när en funktionsflagga ändras kan du till exempel använda parametrar som är inställda på att uppdatera komponenter som appkonfigurationer. Se till att tydligt definiera och dokumentera hur variabilitet används för att undvika överanvändning och konfigurationsavvikelse.

Skapa ett kontrollplan

Ett kontrollplan är serverdelssystemet eller en uppsättning verktyg som du använder för att hantera programmet och dess beroenden via ett enhetligt gränssnitt. Skapa kontrollplanet som ett REST-gränssnitt, CLI eller webhook för att stödja automatisering med externa verktyg.

Exponera underhållsåtgärder via kontrollplanet som gör att du kan samordna arbetsbelastningskomponenter, till exempel ordnad säkerhetskopiering och återställning, bootstrapping, konfiguration, import/export och batchbearbetningsåtgärder. Var noga med att välja rätt detaljnivå när du bestämmer vilka åtgärder som ska exponeras via kontrollplanet.

Övervaka och logga

Utveckla en övervakningsstrategi för att samla in mått som driver den typ av automatisering som du behöver. Använd strukturerad loggning och anpassade mått för att tillhandahålla den information som krävs av automatisering i ett format som är lätt att känna igen med automatiseringsverktyg. De mått som du samlar in bör paras ihop med tröskelvärden som definieras i övervakningssystemet som utlöser aviseringar och automatiserade åtgärder, till exempel meddelanden eller självåterställningsmekanismer, när det är lämpligt. Mer information finns i Rekommendationer för självåterställning och självbevarelsedrift.

Användarlivscykel

Utforma ditt program och din infrastruktur för automatisk registrering och avregistrering av användare, för enskilda användare eller kunder med flera klientorganisationer. Planera för automatiska databasuppdateringar via skript, infrastrukturetablering och avetablering samt hantering av autentiseringsuppgifter och hemligheter.

Orkestrering och principanvändning

Som en del av din kontinuerliga arbetsbelastningshantering kan du automatisera Desired State Configuration (DSC) i dina resurser för att säkerställa att de uppfyller efterlevnads- och affärskraven. DSC-automatisering hjälper till att säkerställa att konfigurationsavvikelsen fångas upp och åtgärdas snabbt. Du kan automatisera DSC med orkestreringsverktyg eller principhanteringsverktyg. Tänk på orkestreringsverktyg som Azure DevOps-tjänster eller Jenkins som push-baserade mekanismer. Med orkestreringsverktyg kan konfigurationsuppdateringar skickas ut via en arbetsflödeshändelse, till exempel en manuell eller automatiserad distribution. Dessa uppdateringar körs som en del av en aktivitetssekvens som definierats i distributionsskriptet. Principhanteringsverktyg använder pull-baserade mekanismer, vilket innebär att ett system körs på den grundläggande nivån i din arbetsbelastning som regelbundet avsöker arbetsbelastningen för att kontrollera dess tillstånd mot din definierade DSC. Om avsökningen identifierar en feljustering eller konfigurationsavvikelse vidtar verktyget korrigerande åtgärder. Tänk på följande när du bestämmer dig för mellan orkestrerings- och principhanteringsverktyg:

  • Orkestreringsverktyg har inte inbyggda funktioner för att proaktivt avsöka din arbetsbelastning efter konfigurationsavvikelse. Orkestreringsverktyg bör integreras i din CI/CD-pipeline (continuous integration and continuous delivery) för att upprätthålla en standard för distribution och hantering av infrastruktur som kod (IaC). En fördel med att använda orkestreringsverktyg är att resurserna alltid är fullständigt konfigurerade när de distribueras.

  • Med principhanteringsverktyg kan du definiera principer som påverkar en eller flera resursgrupper. Dessa principer tillämpas när resursen checkar in med principhanteringssystemet. En fördel med att använda principhantering är att dessa system inte är koddrivna, så de kan vara enklare för operatörer i ditt team att implementera.

När du bestämmer dig för mellan orkestrerings- eller principverktyg bör du överväga om de konfigurationsuppdateringar som du planerar att göra för nya resurser måste göras vid tidpunkten för distributionen. Tänk också på om definitionen av uppdateringar i kod passar dina operativa metoder och hur många resurstyper du planerar att distribuera. Om det finns många olika konfigurationer mellan resurstyper kan principverktyg vara ett enklare sätt att hantera uppdateringar.

Azure-underlättande

Principhantering

Azure Policy: Med Azure Policy kan du tillämpa standarder och utvärdera efterlevnad i stor skala. Azure Policy ger en aggregerad vy för att utvärdera det övergripande tillståndet för arbetsbelastningsmiljön på instrumentpanelen för efterlevnad. Eller så kan du använda Azure Policy för att utvärdera varje resurs och princip på detaljerad nivå. Du kan också använda Azure Policy för att åtgärda nya resurser automatiskt eller åtgärda befintliga resurser i grupp.

Kompromiss: Avlastning av automatisering från din CI/CD-pipeline till plattformsverktyg eller tjänster, som Azure Policy, kan förenkla din pipeline, men har nackdelar som den extra hanteringsbördan med att använda flera system. Till exempel fångas inte körningsfel i en plattformstjänst in i pipelineloggarna och måste matas in på din observerbarhetsplattform intelligent så att lämpliga parter meddelas.

Bootstrap-automatisering

Azure Virtual Machines tillägg: Virtual Machines tillägg är små paket som kör konfiguration och automatisering efter distributionen på virtuella datorer. Flera tillägg är tillgängliga för olika konfigurationsuppgifter, till exempel att köra skript, konfigurera lösningar mot skadlig kod och konfigurera loggningslösningar. Installera och kör dessa tillägg på virtuella datorer med hjälp av en Azure Resource Manager-mall, Azure CLI, Azure PowerShell-modulen eller Azure Portal. Varje virtuell dator har en installerad VM-agent som hanterar tilläggets livscykel.

Vanligtvis använder VM-tillägg ett anpassat skripttillägg för att installera programvara, köra kommandon och utföra konfigurationer på en virtuell dator eller Azure Virtual Machine Scale Sets. Du kan ställa in dessa tillägg så att de körs som en del av IaC-distributioner så att de körs på nya virtuella datorer med hjälp av Azure VM-agenten. Tillägg kan också köras utanför en Azure-distribution med hjälp av Azure CLI, PowerShell-modulen eller Azure Portal.

Cloud-init: Cloud-init är ett branschverktyg för att konfigurera virtuella Linux-datorer vid första starten. Precis som med tillägg för anpassade Skript i Azure kan du med cloud-init installera paket och köra kommandon på virtuella Linux-datorer. Du kan använda cloud-init för programvaruinstallation, systemkonfiguration och mellanlagring av innehåll. Azure innehåller många cloud-init-aktiverade VM-avbildningar i välkända Linux-distributioner. En fullständig lista finns i cloud-init-stöd för virtuella datorer i Azure.

Resurs för Azure-distributionsskript: När du distribuerar med Azure kan du behöva köra godtycklig kod för att starta hanteringen av användarkonton, Kubernetes-poddar eller köra frågor mot data från ett system som inte kommer från Azure. Eftersom ingen av dessa åtgärder är tillgängliga via Azure-kontrollplanet krävs en separat mekanism. Mer information finns i Microsoft.Resources deploymentScripts. Precis som andra Azure-resurser gäller distributionsskriptresursen:

  • Kan användas i en Azure Resource Manager-mall.

  • Innehåller Azure Resource Manager mallberoenden i andra resurser.

  • Förbrukar indata och genererar utdata.

  • Använder en användartilldelad hanterad identitet för autentisering.

När distributionsskriptet distribueras körs PowerShell- eller Azure CLI-kommandon och skript. Skriptkörningar och loggning kan observeras i Azure Portal eller med Azure CLI- och PowerShell-modulen. Du kan anpassa variablerna för körningsmiljön, tidsgränsalternativ och resurshantering efter ett skriptfel.

Bootstrap AKS-kluster med GitOps: Du kan starta ett nyligen etablerat AKS-kluster med hjälp av GitOps och Flux v2-klustertillägget genom att deklarera dina konfigurationsinställningar i GitHub-lagringsplatser. Eftersom AKS-klusterfiler lagras på en GitHub-lagringsplats är de versionshanterade och ändringar mellan versioner spåras enkelt. Kubernetes-kontrollanter körs i klustren och synkroniserar kontinuerligt klustertillståndet med önskat tillstånd som deklarerats i Git-lagringsplatsen genom att hämta filerna från lagringsplatsen. Mer information finns i REFERENSarkitektur för AKS-baslinje.

Konfigurationshantering

Azure Automation State Configuration är ett DSC-hanteringsverktyg som hanteras av Azure Policy gästkonfigurationsfunktion som du kan använda för att skriva, hantera och kompilera PowerShell DSC-konfigurationer för noder i alla molnbaserade eller lokala datacenter. Du kan också använda det här verktyget för att importera DSC-resurser och tilldela konfigurationer till målnoder.

Azure App Configuration är en tjänst som du kan använda för att centralt hantera programinställningar och funktionsflaggor. Det fungerar med Azure Key Vault så att du på ett säkert sätt kan hantera en mängd olika programkonfigurationer i din miljö.

Ändringsspårning och inventering

Ändringsspårning och inventering med hjälp av Azure Monitoring Agent spårar operativsystemets konfigurationsavvikelse i virtuella datorer. Detta automatiserar identifieringen av drift, inventeringen som kör tjänster och installerade paket på de virtuella datorerna i din arbetsbelastning. Objekt som spåras av ändringsspårning och inventering är:

  • Installerad Windows- och Linux-programvara
  • Viktiga Windows- och Linux-filer
  • Windows-registernycklar
  • Windows-tjänster och Linux-daemons

Checklista för utmärkt driftseffektivitet

Se den fullständiga uppsättningen rekommendationer.