Menu Zamknij

Bicepsy Azure

Nie sądziłem, że wrzucę kiedyś na bloga zdjęcie umięśnionej klatki… w końcu do Arnolda mi wiele brakuje 🙂

Azure Bicep to nowa usługa, właściwie język programowania (Code as an Infrastructure), która w założeniu ma pomóc architektom w tworzeniu rozbudowanych usług w Azure.

Zaraz… przecież mamy ARM Template, mamy też Terraform…

Nie znam wielu osób, które tworzą szablony ARM, pozostali, wraz ze mną wpierw tworzą zestaw usług, eksportują gotowy JSON i go modyfikują. Tak jest prościej. Ale jak każdy kto dotknął kiedykolwiek ARM Template wie, że jest to dość złożony opis architektury. Nie dość, że zawiera masę parametrów, to sam JSON wymaga zachowania złożonej składni, gdzie czasem łatwo o pomyłkę.

To rozwiązuje Terraform, przynajmniej częściowo – tam, gdzie jest pełne wsparcie dla Azure to za pomocą rozwiązania HashiCorp można łatwo tworzyć kod dla Azure. Alternatywnie Terraform może publikować fragmenty ARM Template – ale tu wracamy trochę do początku.

Tu wchodzi Azure Bicep – ARM DSL (Domain Specific Language). Bicep jako język programowania infrastruktury Azure. Uruchomienie kodu napisanego w Bicep generuje ARM Template JSON, który ostatecznie tworzy zasoby w Azure.

Bicep ma już oficjalne wsparcie w Az CLI oraz PowerShell. Ma też dedykowane rozszerzenie VS Code.

Bicep jest zbliżony do Terraform, przykład kodu, który ma w Azure utworzyć konto magazynu (Storage Account):

Terraform:

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_storage_account" "example" {
  name                     = "storageaccountname3656"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  account_tier             = "Standard"
  account_replication_type = "LRS"

  tags = {
    environment = "staging"
  }
}

I analogiczny kod w Azure Bicep

param location string = 'westeu'
param name string = 'storageaccountname3656'

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: name
  location: location
  kind: 'Storage'
  sku: {
    name: 'Standard_LRS'
  }
}

Jak widać wygląda to podobnie. Czy się przyjmie? Jeśli pracujesz tylko na Azure i tworzysz szablony ARM – to jest to dobra alternatywa – upraszcza tworzenie kodu – jest on bardziej przejrzysty… Chcesz przetestować – skorzystaj z Bicep Playground.

Jesli jesteś architektem multi-cloud – zostań przy Terraform 🙂

Chcesz dowiedzieć się więcej? Skorzystaj z tych odnośników:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.