Usprawnianie DevOps: integracja Azure CLI z potokami CI/CD
By Mirko Peters ·
W dynamicznym świecie nowoczesnego dostarczania oprogramowania liczą się przede wszystkim wydajność i szybkość. Gdy zespoły programistyczne wdrażają…
Automatically translated with AI from the original post. Read the English original
W dynamicznym świecie nowoczesnego dostarczania oprogramowania wydajność i szybkość mają kluczowe znaczenie. Gdy zespoły programistyczne wdrażają praktyki ciągłej integracji i ciągłego wdrażania (CI/CD), potrzeba lekkich, niezawodnych i wieloplatformowych narzędzi do automatyzacji jest większa niż kiedykolwiek. Niezależnie od tego, czy tworzysz tymczasowe środowiska testowe, wdrażasz infrastrukturę jako kod, czy konfigurujesz mikrousługi, narzędzia w potoku muszą działać szybko i spójnie.
Oto Azure CLI. Zaprojektowany z myślą o prostocie, szybkości i działaniu na różnych platformach, szybko stał się pierwszym wyborem inżynierów chmury, którzy chcą usprawnić swoje procesy DevOps. W tym wpisie przyjrzymy się, dlaczego Azure CLI sprawdza się w nowoczesnych potokach wdrożeniowych, jak wypada na tle innych narzędzi do zarządzania i jak można go bezproblemowo zintegrować z procesami CI/CD.
Jeśli spodobał Ci się ten szczegółowy materiał, koniecznie posłuchaj powiązanego odcinka podcastu Azure CLI vs PowerShell: Which Should You Use?, w którym omawiamy zasadnicze różnice między najważniejszymi interfejsami do zarządzania chmurą firmy Microsoft.
Wprowadzenie do Azure CLI w CI/CD
Potoki ciągłej integracji i ciągłego wdrażania wymagają narzędzi, które mogą działać w minimalnych środowiskach kontenerowych bez dużego narzutu. Tradycyjnie skrypty automatyzacji były ściśle powiązane z konkretnymi systemami operacyjnymi, co utrudniało migrację między lokalnymi komputerami deweloperów, agentami kompilacji i klastrami produkcyjnymi. Nowoczesne DevOps wymaga narzędzi zapewniających pełną spójność działania w systemach Windows, macOS i Linux.
Azure CLI odpowiada na te wymagania wprost. Dzięki przejrzystej, przyjaznej dla skryptów strukturze poleceń, która domyślnie zwraca dane w formacie JSON, programiści i zautomatyzowani agenci mogą odpytywać, tworzyć i modyfikować zasoby chmury z minimalnym nakładem pracy. Po osadzeniu w potoku CI/CD, na przykład w GitHub Actions, GitLab CI lub Azure DevOps, Azure CLI przekształca abstrakcyjne kroki wdrożenia w powtarzalny, deterministyczny kod.
Dlaczego Azure CLI w nowoczesnych potokach
Projektując nowoczesne architektury CI/CD, liczy się każda sekunda. Agenty kompilacji zużywają zasoby obliczeniowe, a długie kolejki wdrożeniowe mogą hamować tempo pracy zespołu. Azure CLI jest szczególnie zoptymalizowany pod kątem takich wysokowydajnych środowisk. Ponieważ jego architektura opiera się na lekkich wywołaniach REST, wykonywanie poleceń jest wyjątkowo szybkie i oszczędne pod względem zasobów.
Co więcej, kontenerowe agenty kompilacji często działają na okrojonych obrazach Linuksa, a instalacja rozbudowanych zależności może wydłużać czas uruchamiania potoku. Mały ślad Azure CLI i prosta instalacja sprawiają, że jest on idealnym towarzyszem dla runnerów CI/CD opartych na Dockerze. Pozwala programistom testować skrypty wdrożeniowe lokalnie, w powłoce identycznej z tą, którą uruchamia zdalny serwer kompilacji, co znacząco ogranicza błędy typu „u mnie działa”.
Azure CLI vs PowerShell: szybkie porównanie
W zarządzaniu chmurą często pojawia się dylemat, czy wybrać Azure CLI, czy PowerShell. Oba narzędzia są niezwykle potężne, ale odpowiadają zupełnie innym profilom użytkowników i modelom pracy operacyjnej. Aby zrozumieć, dlaczego Azure CLI często wygrywa w potokach CI/CD, warto zestawić je obok siebie.
| Scenariusz | Najlepsze narzędzie | Dlaczego się wyróżnia |
|---|---|---|
| Szybkie wdrażanie zasobów | Azure CLI | Szybkie, lekkie, proste polecenia, działa na każdej platformie, świetne do DevOps i skryptowania. |
| Automatyzacja w przedsiębiorstwie | PowerShell | Obsługuje złożoną automatyzację, zwraca dane w postaci obiektów, wspiera operacje zbiorcze i zapewnia silną integrację z Windows. |
| Integracja z potokiem CI/CD | Azure CLI | Polecenia wysokiego poziomu, natywne wsparcie dla infrastruktury jako kod, łatwa konfiguracja potoku. |
| Zaawansowane skryptowanie | PowerShell | Elastyczne skryptowanie, tworzenie własnych narzędzi, głęboka kontrola nad zasobami Azure. |
| Zarządzanie wieloplatformowe | Azure CLI | Działa w systemach Linux, macOS i Windows, napisane w Pythonie, idealne do zróżnicowanych środowisk. |
Choć PowerShell świetnie radzi sobie z rozbudowanymi, obiektowo zorientowanymi zadaniami administracyjnymi i głęboką integracją z Windows, Azure CLI wygrywa w kontenerowych potokach dzięki prostemu tekstowemu wyjściu, szybszemu wykonywaniu lekkich operacji zbiorczych i natywnej zgodności z Bash.
Instalacja i konfiguracja Azure CLI
Zanim zaczniesz automatyzować infrastrukturę chmurową, musisz upewnić się, że Azure CLI jest poprawnie zainstalowany i uwierzytelniony w środowisku wdrożeniowym. Na szczęście instalacja jest prosta, niezależnie od systemu operacyjnego.
Jeśli konfigurujesz lokalny komputer lub maszynę wirtualną pełniącą rolę agenta kompilacji z systemem Windows, możesz zainstalować CLI za pomocą programu PowerShell:
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msiW przypadku runnerów CI/CD opartych na systemie Linux (takich jak standardowe runnery Ubuntu w GitHub Actions) instalację można wykonać jednym krokiem, korzystając z repozytorium pakietów Microsoft, lub wykorzystać gotowe środowiska runnerów, które domyślnie zawierają Azure CLI. Po instalacji sprawdzenie, czy wszystko działa, sprowadza się do uruchomienia polecenia:
az --versionW przypadku uwierzytelniania w potokach unikaj interaktywnego logowania przez przeglądarkę. Zamiast tego skonfiguruj potok tak, aby uwierzytelniał się bezpiecznie, używając jednostki usługi (Service Principal) lub tożsamości zarządzanej (Managed Identity):
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_IDPodstawowa składnia i polecenia Azure CLI
Zaletą Azure CLI jest intuicyjna i przewidywalna składnia. Każde polecenie zaczyna się od przestrzeni nazw az, po której następuje grupa zasobów lub usługa, a na końcu akcja, którą chcesz wykonać. Taka płaska struktura poleceń sprawia, że pisanie i czytanie skryptów potoków jest wyjątkowo łatwe.
Oto kilka podstawowych poleceń, często wykorzystywanych w automatyzacji chmury:
# Create a resource group
az group create --name MyPipelineResourceGroup --location eastus
# List all virtual machines in a table format
az vm list --output table
# Deploy an ARM or Bicep template
az deployment group create --resource-group MyPipelineResourceGroup --template-file azuredeploy.jsonDomyślnie polecenia Azure CLI zwracają czytelne ładunki w formacie JSON. Dzięki temu bardzo łatwo jest pobrać konkretne właściwości za pomocą wbudowanych wyrażeń JMESPath (--query) i przekazać te wartości do kolejnych kroków przepływu pracy CI/CD.
Automatyzacja wdrożeń z Azure CLI
Automatyzacja to serce DevOps. Podczas wdrażania aplikacji w platformie Azure rzadko chcesz polegać na ręcznych kliknięciach w portalu Azure. Opakowując logikę wdrożenia w skrypty Azure CLI, zapewniasz pełną spójność między środowiskami deweloperskim, testowym i produkcyjnym.
Wyobraź sobie, że musisz utworzyć nową usługę Azure App Service, zaktualizować jej ustawienia konfiguracji i wdrożyć kod przy każdym scaleniu do gałęzi głównej. Zautomatyzowany skrypt z użyciem Azure CLI sprawia, że jest to bardzo proste:
# Create an App Service plan
az appservice plan create --name MyPlan --resource-group MyResourceGroup --sku B1 --is-linux
# Create the web app
az webapp create --name MyAppService --resource-group MyResourceGroup --plan MyPlan --runtime "NODE:18-lts"
# Configure environment variables
az webapp config appsettings set --name MyAppService --resource-group MyResourceGroup --settings DATABASE_URL="Server=tcp:myServer.database.windows.net..."
Ponieważ polecenia te są idempotentne, ich wielokrotne uruchamianie nie zepsuje infrastruktury; zamiast tego zapewniają, że docelowe środowisko odpowiada pożądanemu stanowi konfiguracji.
Integracja Azure CLI z potokami CI/CD
Integracja poleceń Azure CLI z popularnymi orkiestratorami CI/CD, takimi jak GitHub Actions czy potoki Azure DevOps, jest wyjątkowo prosta. Ponieważ agenty potoków zazwyczaj wykonują skrypty powłoki, polecenia `az` możesz umieścić bezpośrednio w plikach konfiguracyjnych przepływu pracy.
Oto przykład fragmentu pliku przepływu pracy GitHub Actions, który loguje się do platformy Azure i wdraża aplikację internetową:
name: Deploy to Azure
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy Azure Resources
run: |
az group create --name ProdRG --location eastus
az deployment group create --resource-group ProdRG --template-file infra/main.bicep
Łącząc oficjalne akcje runnerów z poleceniami Azure CLI, tworzysz solidny, audytowalny i zautomatyzowany potok wdrożeniowy, który działa bezproblemowo przy każdej zmianie kodu.
Najlepsze praktyki usprawniania DevOps z Azure CLI
Aby w pełni wykorzystać automatyzację Azure CLI i zapewnić bezpieczeństwo oraz wydajność potoków CI/CD, stosuj się do sprawdzonych praktyk:
- Nigdy nie zapisuj sekretów w kodzie: Zawsze przechowuj dane uwierzytelniające jednostki usługi, ciągi połączeń i klucze API w bezpiecznym magazynie sekretów platformy CI/CD (np. GitHub Secrets lub grupy zmiennych w Azure DevOps).
- Przypinaj wersje CLI: Środowiska chmurowe zmieniają się szybko. Aby uniknąć nieoczekiwanych zmian powodujących awarie w potokach, jawnie określ wersję Azure CLI, której mają używać agenty kompilacji.
- Korzystaj z zapytań JSON: Używaj wbudowanego parametru
--query, aby wyodrębniać konkretne identyfikatory lub punkty końcowe z wyników poleceń, zamiast pisać złożone zewnętrzne wyrażenia regularne lub skrypty parsujące. - Zachowuj idempotentność skryptów: Projektuj polecenia CLI tak, aby można je było uruchamiać wielokrotnie, bez niezamierzonych skutków ubocznych i błędów związanych z duplikowaniem zasobów.
- Sprzątaj środowiska testowe: Stosuj zautomatyzowane skrypty usuwania w potokach dla żądań scalenia (PR), aby usuwać tymczasowe grupy zasobów i nie generować zbędnych kosztów w chmurze.
Podsumowanie
Integracja Azure CLI z potokami CI/CD to przełom dla nowoczesnych zespołów DevOps. Lekkość, wieloplatformowość i intuicyjna składnia sprawiają, że jest to idealny towarzysz szybkich, zautomatyzowanych wdrożeń w chmurze. Łącząc bezpieczne praktyki uwierzytelniania, dobrze zorganizowane skrypty i solidną integrację z potokami, możesz osiągnąć niespotykany dotąd poziom szybkości i niezawodności w całym cyklu dostarczania oprogramowania.
Aby zgłębić ten temat jeszcze bardziej i posłuchać ożywionej dyskusji o filozofiach pracy z wierszem poleceń, sprawdź nasz towarzyszący odcinek podcastu: Azure CLI vs PowerShell: Which Should You Use?. Opanuj oba narzędzia, poznaj ich unikalne mocne strony i już dziś w pełni kontroluj swoją architekturę chmury Azure!