💻
Cheet Sheets
  • 🦁Başlarken
  • 🟧DevOps Pre-Requisite
    • ❤️Why Linux? | Linux Basics #1
    • 💛Vi Editor | Linux Basics #2
    • 💙Basics Commands | Linux Basics #3
    • 🧡Package Managers | Linux Basics #4
    • 💚Services | Linux Basics #5
    • 💛Networking Basics
    • 🤎DNS Basics
    • 🩶Applications Basics
    • 🟨Java introduction
    • 🟩NodeJS Introduction
    • 🟦Python Introduction
    • 🟪GIT Introduction
    • 🟧Apache Web Server Introduction
    • ⬛Apache Tomcat
    • 🟫Python Flask
    • 🟥Node.js Express App
    • 🟨Databases
    • 🟩MySQL
    • 🟪MongoDB
    • 🟨SSL & TLS
    • 🟦YAML & JSON - JSON Path
    • ⬛Labs Resources
  • 🍎Kubernetes
    • 🍏Kubernetes: Nedir ?
    • 🍒Bileşenler
    • 🍵Kubectl ve Versiyon
    • ❤️Pod
    • 🏷️Label ve Selector
    • 🔎Annotation
    • 📲Namespaces
    • 📦Deployments
    • 🔁ReplicaSet
    • 🔙Rollout & Rollback
    • 🌐Networking - 1
    • 🌏Service
    • 🛠️Liveness Probe & Readiness Probe
    • 🥐Resource Limits
    • 💰Environment Variables
    • 📃Ephemeral Volumes
    • 🔑Secrets
    • 🌂ConfigMap
    • 🖥️Node Affinity
    • 🔌Pod Affinity
    • ✍️Taint and Toleration
    • 🔦DaemonSet
    • 🧀PV/PVC
    • 🌜Storage Class
    • 🗿StatefulSet
    • 🕹️Job & Cronjob
    • 🔐Authentication
    • 📏Role-based access control (RBAC)
    • 🈷️Service Account
    • 📈Ingress
    • 📂ImagePullPolicy & ImageSecret
    • 📖Static Pods
    • 🌐Network Policy
    • 🫐Helm Nedir?
    • 📽️Prometheus Stack - Monitoring
    • 💼EFK Stack - Monitoring
    • 🥳CRD & Operator
  • 🧑‍⚕️GIT & GITHUB
    • 👉Girizgah
    • 🌴Branch
    • 🤝Merge
    • 🤔Conflict - Rebase
    • 🇸🇴Alias
    • 🛑Gitignore
    • 🥢Diff
    • ◀️Checkout
    • 🔦Stash
    • 👉Other
  • ☁️AWS
    • 🪣S3
    • 🚙EC2
    • ⚖️ELB
    • 🤝Auto Scaling
    • 🗄️EFS
    • 🔐VPC
    • 🎆CloudFront
    • ❤️Route53
    • 🦈RDS
    • 🏢ElastiCache
    • 🔭CloudWatch
    • 👀CloudTrail
    • 📃CloudFormation
    • 🔕SNS
    • 📬SQS
    • 🎇SWF
    • 📧SES
    • 📦Kinesis
    • 📐AWSConfig
    • 👩‍🏭OpsWork
    • 🚀Lambda - Api Gateway
    • 📌ECS - EKS
    • 🔑KMS
    • 📂Directory Service
    • 🏐Snowball
    • 💾Storage Gateway
    • 💽Volume Gateway
    • 📼Tape Gateway
    • 🏠Organizations
    • 🔙Backup-Transfer-CloudShell
    • 🆔IAM
    • 📀DataSync
    • 🗃️FSx
    • 🎒Aurora Serverless
    • 🌐Global Accelerator
    • 💪HPC
    • 🎰Outposts
    • 🗼Others
  • 👨‍🔬Ansible
    • 👉Girizhah
    • 📔YAML
    • ⚙️Komponentler
    • 🎒Inventory
    • 🏑ad-hoc
    • ▶️Playbook
  • 👨‍⚕️PROMETHEUS
    • 📈Terminoloji
    • 🦯Ubuntu 20.04 Prometheus Kurulum
    • 🗒️prometheus.yml dosyasına ilk bakış:
    • 🧭promQL up query
    • 📇Exporters
    • 🔦promQL Data Types
    • 🦯Selectors & Matchers
    • 🔢Binary Operators
    • 💀ignoring and on
    • ✍️Aggregation Operators
    • 🧠Functions
    • 🖊️Alıştırma
    • 💻Client Libraries
    • 🐍Examining the data of our Python application
    • 🐐Examining the data of our GO application
    • ⏺️Recording Rules
    • 💡rate functions
    • ⏰Alerting
    • ⌚Alert Routing
    • ⏰Slack integration with Prometheus
    • 🤯PagerDuty integration with Prometheus
    • ◼️BlackBox exporter
    • 📍Push Gateway
    • 🪒Service Discovery
    • 🧊kube cadvisor with external prometheus
    • 👉aws with prometheus
    • ☁️CloudWatch Exporter
    • 👨‍🚒mysql exporter
    • 🛃Custom exporter with Python
    • ⚙️Prometheus with HTTP API
    • 🤖Prometheus Federation For Kubernetes
    • 📺Grafana
    • ⁉️Prometheus: Ne zaman kullanılmalı? Ne zaman kullanılmamalıdır?
  • 🍪Sheets
    • 🛳️Docker Sheets
    • 🐐Kube Sheets
  • 🔢12 Factor APP
    • 🏗️Introduction
    • 1️⃣Codebase
    • 2️⃣Dependencies
    • 3️⃣Concurrency
    • 4️⃣Processes
    • 5️⃣Backing Services
    • 6️⃣Config
    • 7️⃣Build, release, run
    • 8️⃣Port binding
    • 9️⃣Disposability
    • 🔟Dev/prod parity
    • 🕚Logs
    • 🕛Admin processes
  • ☁️Azure 104
    • 👨‍👨‍👧‍👧Azure Active Directory ( Entra ID )
    • 💰Subscriptions
    • 🌎Virtual Network (VNET)
    • 💻Virtual Machines
    • 🧑‍🌾Load Balancing
    • 🥍Network Advanced
    • 🪡Automating Deployment and Configuration
    • 💂Securing Storage
    • 📓Administering Azure Blobs and Azure Files
    • 🔧Managing Storage
    • 🎁App Service
    • 🛳️Azure Container
    • 🥇Backup And Recovery
    • 🪐Network Watcher
    • ⏰Resource Monitoring And Alerts
  • ⛅AZURE 305
    • 🆔identity and access management
    • 💼Desing Azure AD (Entra ID)
    • 👨‍💼Desing for Azure B2B
    • 🛃Desing for Azure B2C
    • 💳Design for MFA and Conditional Access
    • ⛑️Design for Identity Protection
    • 🚶Access Reviews
    • 🚦Managed identity Demostration
    • 🔐Key Vault Demostration
    • 👑Governance hierarchy
    • 💠Design for Management Groups
    • 🔑Desing for Subscriptions
    • 🍇Desing for resource groups
    • 📟Design for resource tags
    • 🚷Azure Policy & RBAC
    • 🫐Desing For Blueprints
    • 🪡Desing for Virtual Networks
    • 🛫Design for on-premises connectivity to Azure
    • 🔽Design for network connectivity
    • 📦Design for application delivery
    • 🥞Design for network security and application protection
    • 📕Choose a compute solution
    • 🌊Design for virtual machines
    • 🔋Azure Batch Demostration
    • 🛰️Design for Azure App Service
    • ⛲Design for Azure Container Instances
    • 🎢Design for Azure Kubernetes Service
    • 📠Azure Functions Demostration
    • 💪Azure Logic Apps Demostration
    • 🧑‍💼Design for data storage
    • 🎞️Design for Azure storage accounts
    • 🌟Choose the storage replication
    • 📹Azure blob storage - Lifecycle & immutable demo
    • 🥌Azure Files Demostration
    • 🕸️Design Azure disks
    • 🦼Design for storage security
    • 🔮Azure Table Storage And Cosmos DB Demostration
    • 🟧Azure SQL Solutions
    • 🎡Azure SQL Database - Purchasing models
    • 🕯️Database availability
    • 📜Data security strategy
    • 🧮Azure SQL Edge
    • 🚲Azure Data Factory
    • 🔅Azure Data Lake Storage
    • 🧘‍♂️Azure Databricks
    • 🎒Azure Synapse Analytics
    • 🅰️Azure Stream Analytics
    • 📼Data flow strategy
    • 🍥Cloud Adoption Framework
    • ☣️Azure Migration Framework
    • 🦿Assessing workloads
    • 🪡Migration tools
    • 🤖Azure Database migration
    • 👥Storage migration
    • 👜Azure Backup
    • ⏲️Azure Blob Backup and Recovery
    • 💈Azure files backup and recovery
    • 🎞️Azure VM backup and recovery
    • 🧺Azure SQL backup and recovery
    • ⏰Azure Site Recovery
    • 📩Differentiate event and message
    • ✈️Azure messaging solutions
    • 🚜Event Hub
    • 🥍Application optimization solution
    • 🎁Application lifecycle
    • 📺Azure Monitor
    • 🅱️Log Analytics
    • 👥Azure workbooks and Insights
    • 🚌Azure Data Explorer
  • Github Actions
    • Github Actions Nedir?
    • Workflow & Schedule Triggers
    • Single and Multiple Events
    • Manuel Events
    • Webhook Events
    • Conditional Keywords For Steps
    • Expressions - 1
    • Expressions - 2
    • Runners
    • Workflow Commands
    • Workflow Context
    • Dependent Jobs
    • Encrypted Secrets
    • Configuration Variables
    • Default & Custom Env Varb
    • Set Env Varb with Workflow Commands
    • Github Token Secret
    • Add Script to workflow
    • Push Package #1
    • Push Package #2 Docker
    • Service Containers
    • Routing workflow to runner
    • CodeQL Step
    • Caching Package and Dependency Files
    • Remove workflow Artifact
    • Workflow Status Badge
    • Env Protection
    • Job Matrix Configuration
    • Disable & Delete Workflows
    • Actions type for Action
    • Inputs and Outputs for actions
    • Action Versions
    • Files and Directories for Actions
    • Exit Codes
    • Reusable Workflow & Reuse Templates for Actions and Workflows
    • Configure Self Hosted Runners for Enterprise
  • Loki
    • What is Loki?
    • Architecture of Loki
    • Install Loki For Ubuntu
    • Install Promtail For Ubuntu
    • Querying Logs
    • Loki in Kubernetes
    • Deploying Loki in Kubernetes
    • Connecting to Grafana
    • Viewing Kubernetes logs
    • Promtail Customize & Pipeline
  • Ansible
    • Ansible Introduction
    • Introduction to Ansible Configuration Files
    • Ansible Inventory
    • Inventory Formats
    • Ansible Variables
    • Variable Types
    • Registering Variables and Variable Precedence
    • Variable Scoping
    • Magic Variables
    • Ansible Facts
    • Ansible Playbooks
    • Verifying Playbooks
    • Ansible lint
    • Ansible Conditionals
    • Ansible Conditionals based on facts, variables, re-use
    • Ansible Loops
    • Ansible Modules
    • Introduction to Ansible Plugins
    • Modules and Plugins Index
    • Introduction to Handlers
    • Ansible Roles
    • Ansible Collections
    • Introduction to Templating
    • Jinja2 Templates for Dynamic Configs
  • 🅰️Ansible Advanced
    • Playbook run options
    • Facts
    • Configuration files
Powered by GitBook
On this page
  • Azure Resource Manager (ARM);
  • VHD Templates;
  • VM Extension;

Was this helpful?

  1. Azure 104

Automating Deployment and Configuration

PreviousNetwork AdvancedNextSecuring Storage

Last updated 1 year ago

Was this helpful?

Azure Resource Manager (ARM);

Azure Resource Manager, Azure'da altyapıyı kod olarak yönetmek, kaynakları daha verimli kullanmak ve karmaşık uygulamaları kolayca deploy etmek için önemli bir araçtır. Azure'da bulunan birçok hizmet ve özellik, ARM ile entegre edilmiştir ve ARM şablonları, Azure kaynaklarını hızlı ve tutarlı bir şekilde dağıtmak için kullanılır.

  1. Şablon Tabanlı Dağıtım: ARM, JSON tabanlı şablonlar kullanarak Azure kaynaklarını tanımlamanıza olanak tanır. Bu şablonlar, altyapı ve hizmetlerinizi kod olarak temsil etmenizi ve tekrar kullanılabilir şablonlar oluşturmanızı sağlar.

  2. Grup Yönetimi: ARM, kaynakları mantıksal gruplara dahil etmenizi sağlar. Bu gruplar, ilişkili kaynakları kolayca yönetmenizi ve izlemenizi sağlar. Kaynakları mantıksal bir birimde toplama ve yönetme kolaylığı sağlar.

  3. İşlem Geçmişi ve İzleme: ARM, kaynakların oluşturulması, güncellenmesi ve silinmesi gibi işlemleri otomatik olarak izler ve geçmişte yapılan değişikliklere geri dönmenize olanak tanır.

  4. Rol Tabanlı Erişim Denetimi (RBAC): ARM, kullanıcıların ve grupların Azure kaynaklarına erişimini denetlemek için rol tabanlı erişim denetimi (RBAC) sağlar. Bu, güvenliği artırmanıza ve sadece yetkilendirilmiş kullanıcıların kaynaklara erişimini sağlamanıza yardımcı olur.

  5. Otomatik Ölçeklendirme: ARM, kaynakları otomatik olarak ölçeklendirmenizi ve uygulamanızın ihtiyacına göre kaynakları artırmanızı veya azaltmanızı sağlar. Bu, uygulamalarınızın yüksek taleplere cevap vermesini ve maliyetleri optimize etmenizi sağlar.

  6. Bağımlılıkların Yönetimi: ARM, kaynaklar arasındaki bağımlılıkları tanımlamanıza ve yönetmenize olanak tanır. Bu, kaynakların sırayla oluşturulmasını veya belirli bir sıra izlemesini sağlar.

  7. Gelişmiş Hata Yönetimi: ARM, deploy sırasında oluşabilecek hataları yakalamak ve hata durumlarında geri dönme yeteneği sunar. Bu, güvenilir ve hata toleranslı altyapılar oluşturmanıza yardımcı olur.

  8. Uzaktan Yönetim ve Otomasyon: Azure PowerShell, Azure CLI (Command-Line Interface) gibi araçlar ve Azure SDK (Software Development Kit) ile birlikte kullanarak ARM, Azure kaynaklarını uzaktan yönetmek ve otomasyon senaryoları oluşturmak için kullanılabilir.

Azure Resource Manager (ARM) şablonları, Azure kaynaklarını tanımlamak, dağıtmak ve yönetmek için kullanılan JSON tabanlı dosyalardır. Bu şablonlar, altyapı ve hizmetleri kod olarak temsil eder ve Azure'daki kaynakları otomatik olarak dağıtmak ve yapılandırmak için kullanılır. ARM şablonları, Azure'da altyapıyı ve hizmetleri oluşturmanın ve yönetmenin temel bir parçasıdır.

ARM şablonlarının ana bölümleri şunlardır:

  1. $schema: Bu, şablonun hangi ARM şablon şemasını kullandığını belirten bir linktir. Şema, şablonun nasıl yazılması ve yorumlanması gerektiğine dair kuralları içerir. Yani, bu sizin şablonunuzun "dilbilgisi kitabı" gibidir.

  2. contentVersion: Bu, şablonunuzun sürüm numarasını içerir. Bir yazılım sürümü gibi düşünebilirsiniz. Eğer şablonunuzda değişiklik yaparsanız, bu sürüm numarasını güncelleyerek hangi sürümün kullanıldığını takip edebilirsiniz.

  3. apiProfile: Bazı ARM şablonları belirli Azure API sürümlerine özgüdür. Eğer şablonunuz belirli bir API setini kullanıyorsa, bu kısımda bu API profilini belirtirsiniz. Bu, şablonunuzun belirli bir Azure hizmetinin belirli bir sürümüyle uyumlu olmasını sağlar.

  4. parameters: Şablonunuzu daha esnek hale getiren, dışarıdan alınan değerlerdir. Örneğin, kullanıcının şablonu çalıştırırken belirteceği bir sanal makine boyutu veya bir depolama hesabı adı gibi.

  5. variables: Şablonunuz içinde birden fazla yerde kullanabileceğiniz sabit veya hesaplanmış değerleri tanımlarsınız. Örneğin, belirli bir kaynak için kullanacağınız ortak bir konum değeri tanımlayabilirsiniz.

  6. functions: Şablonunuzda tekrar eden karmaşık kod bloklarını daha düzenli hale getirmek için kullanılan özel fonksiyonlardır. Bu fonksiyonlar, şablon içinde birden fazla kez kullanılabilecek özel işlemleri tanımlar.

  7. resources: Şablonunuzla oluşturmak veya yönetmek istediğiniz Azure kaynaklarını belirtirsiniz. Her kaynak için tip, ad, konum, boyut gibi özellikleri ve diğer kaynaklarla olan bağlantıları (bağımlılıkları) tanımlarsınız.

  8. outputs: Şablonunuz çalıştırıldıktan sonra, sonuç olarak dışarı vermek istediğiniz bilgileri tanımlar. Örneğin, oluşturduğunuz bir sanal makinenin IP adresi gibi bilgileri dışarı çıkarabilirsiniz. Bu bilgiler başka şablonlar veya otomasyon işlemleri tarafından kullanılabilir.

Örnek ARM Şablonu;

Aşağıda basit bir ARM şablon örneği verilmiştir:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "storageAccountName": {
            "type": "string",
            "metadata": {
                "description": "Oluşturulacak Azure Storage Hesabının adı."
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "westus",
            "metadata": {
                "description": "Kaynakların oluşturulacağı konum."
            }
        }
    },
    "variables": {
        "storageAccountType": "Standard_LRS"
    },
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "name": "[parameters('storageAccountName')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "[variables('storageAccountType')]"
            },
            "kind": "StorageV2",
            "properties": {}
        }
    ],
    "outputs": {
        "storageAccountKey": {
            "type": "string",
            "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value]"
        }
    }
}
  • $schema ve contentVersion: Şablonun şeması ve içerik sürümü belirtilmiştir.

  • parameters: Kullanıcıdan alınacak iki parametre tanımlanmıştır: storageAccountName ve location. storageAccountName, oluşturulacak depolama hesabının adı için, location ise kaynakların hangi Azure bölgesinde oluşturulacağı için kullanılır.

  • variables: Depolama hesabının türü (SKU) belirtilmiştir. Burada "Standard_LRS" (standart, yerel olarak yedeklenmiş depolama) kullanılmıştır.

  • resources: Asıl kaynak olan Azure Storage hesabı tanımlanmıştır. Bu kısımda kaynak tipi, API sürümü, adı, konumu ve SKU'su belirtilmiştir.

  • outputs: Şablon çalıştırıldıktan sonra dışarı verilecek olan depolama hesabının anahtarını (key) içerir. Bu, oluşturulan depolama hesabına erişim için gereklidir.

Azure Portal:

  • Azure Portal'a giriş yapın.

  • Sol üstteki arama çubuğuna "Deploy a custom template" yazarak bu seçeneği arayın ve seçin.

  • Ardından, "Build your own template in the editor" seçeneği ile JSON şablonunuzu yapıştırın veya "Load a template file" seçeneği ile şablon dosyanızı yükleyin.

  • Gerekli parametreleri doldurun ve "Review + create" ardından "Create" butonuna tıklayarak deploy işlemini başlatın.

Azure CLI:

  • Azure Command-Line Interface (CLI) aracılığıyla ARM şablonunu deploy etmek için bir terminal açın.

  • Azure hesabınıza CLI üzerinden az login komutu ile giriş yapın.

  • Şablonu deploy etmek için aşağıdaki komutu kullanın, burada <resource-group-name> kaynak grubunuzun adı ve <path-to-file> ise şablon dosyanızın yolu olacak şekilde değiştirin:

az group deployment create -g <resource-group-name> --template-file <path-to-file>

Azure PowerShell:

  • Azure PowerShell modülünü kullanarak ARM şablonunu deploy etmek için PowerShell penceresi açın.

  • Azure'a Connect-AzAccount komutu ile oturum açın.

  • Aşağıdaki komutu kullanarak ARM şablonunuzu deploy edin, burada <resource-group> kaynak grubunuzun adı ve <path-to-file> ise şablon dosyanızın yolu olacak şekilde değiştirin:

New-AzResourceGroupDeployment -ResourceGroupName <resource-group> -TemplateFile <path-to-file>

Exporting deployments as ARM template;

Azure üzerinde daha önceden gerçekleştirdiğiniz bir deploy işleminin tüm detaylarını içeren bir ARM şablonunun dışarıya çıkarılması sürecini tanımlar. Bu süreç sayesinde, Azure'da deploy edilmiş bir kaynak grubunun tam yapılandırmasını - kaynak tipleri, ayarlar, yapılandırma değerleri ve bağımlılıklar dahil olmak üzere - JSON formatında bir şablona dönüştürebilir ve kaydedebilirsiniz.

Bu şablon, daha sonrasında, aynı Azure kaynaklarını farklı bir abonelikte, bölgede veya ortamda (örneğin, geliştirme, test veya prodüksiyon) hızlı bir şekilde ve aynı ayarlarla yeniden oluşturmak için kullanılabilir.

Bu özellik, bulut kaynaklarınızın yönetimi ve tekrarlanabilirliği konusunda size büyük esneklik ve hız kazandırır. Örneğin, bir geliştirme ortamında oluşturduğunuz bir uygulama yapılandırmasını test veya prodüksiyon ortamına taşımak istediğinizde, manuel olarak her bir kaynağı tekrar oluşturmak yerine, bu dışa aktarılmış şablonu kullanarak tüm kaynak grubunu tek bir komutla kolayca deploy edebilirsiniz. Bu, zaman tasarrufu sağlar ve yapılandırma hatalarını azaltır, çünkü tüm kaynaklar aynı yapılandırma ile konsistent bir şekilde oluşturulur.

Özetle, Azure'da "Exporting deployments as ARM template" özelliği sayesinde, Azure portal üzerinden manuel olarak oluşturduğunuz veya deployment ile oluşturduğunuz kaynakların tamamının yapılandırmasını, bir ARM şablonu olarak dışa aktarabilirsiniz. Bu şablon, ilgili kaynak grubunu içerisinde bulunan kaynakların tam bir tanımını içerir ve sonradan bu yapılandırmayı tekrar kullanarak, aynı kaynakları otomatik bir şekilde ve hızlıca başka bir ortamda veya abonelikte yeniden oluşturmanıza olanak tanır.

Azure'da belirli bir kaynağa ait ARM şablonunu dışa aktarmak için Get-AzResourceGroupDeploymentTemplate komutunun -Resource parametresinin kullanabilirsiniz.

Export-AzResourceGroup -ResourceGroupName <Resource-Group-Name> -Resource <Resource-ID>

Yukarıdaki komutu kullanarak, belirli bir kaynağın yapılandırmasını ve özelliklerini bir ARM şablonu olarak dışa aktarabilir, bu yapılandırmayı başka yerlerde yeniden kullanabilirsiniz.

Aynı zamanda az cli kullanarak da, tıpkı powershell de olduğu gibi, tüm resource group altındaki kaynakları veya spesifik bir resource için ARM template oluşturabiliriz. Aşağıda yardımcı bir döküman paylaşıyorum.

VHD Templates;

Azure'da VHD (Virtual Hard Disk) template'leri, sanal makineler (VM) oluşturmak ve yapılandırmak için kullanılan bir araçtır. Bu template'ler, Azure üzerinde VM'lerin hızlı ve tutarlı bir şekilde dağıtılmasını sağlar.

VHD Template Tanımı:

  • Bir VHD template, bir sanal makinenin disk görüntüsünü içeren bir dosyadır. Bu disk görüntüsü, işletim sistemi, uygulamalar ve yapılandırma ayarları gibi VM'nin tüm bileşenlerini kapsar.

  • VHD dosyası, bir VM'nin tamamen işlevsel bir kopyası olarak düşünülebilir.

VHD Template'leri ve Azure VM'leri:

  • Azure'da VM oluştururken, kullanıcılar genellikle mevcut bir VHD template'ini kullanır. Bu, işletim sistemi ve gerekli uygulamaların ön yüklemesini içerir.

  • VHD template'leri, Azure Blob Storage üzerinde saklanır ve ihtiyaç duyulduğunda kullanılabilir.

VHD Template Türleri:

  • Generalized Template'ler: Bu template'ler, tüm özgün kullanıcı verilerinin ve ayarlarının kaldırıldığı, genelleştirilmiş bir VM görüntüsüdür. Genellikle yeni VM'ler oluşturmak için kullanılır. Bu template'ten oluşturulan VM'ler, ilk açılışta tamamlanması gereken hostname (bilgisayar adı), admin kullanıcısı ve diğer VM ile ilgili kurulum işlemlerini gerektirir.

  • Specialized Template'ler: Bu template'ler, VM'nin tam bir kopyasıdır ve özel ayarlar, uygulamalar ve kullanıcı verileri içerir. Bu template'ten oluşturulan VM'ler tamamen yapılandırılmıştır ve bu imajdan VM oluşturulurken hostname ve admin kullanıcı/şifre gibi parametreler gerektirmez.

VHD Template'leri ile VM Oluşturma Süreci:

  • VM oluşturulurken, Azure kullanıcıların bir VHD template'i seçmelerine olanak tanır. Bu, VM'nin nasıl yapılandırılacağını belirler.

  • Kullanıcılar, Azure portalı, Azure CLI, veya PowerShell aracılığıyla bu template'leri kullanarak yeni VM'ler oluşturabilir.

Kullanım Senaryoları ve Avantajları:

  • VHD template'leri, çeşitli kullanım senaryolarına hizmet eder. Örneğin, aynı yapılandırmaya sahip çok sayıda VM oluşturmak, test ortamlarını hızla kurmak veya özel uygulama yapılandırmalarını korumak için kullanılır.

  • Bu template'ler, VM oluşturma sürecini hızlandırır ve tutarlı bir yapılandırma sağlar, bu da özellikle büyük ölçekli ve karmaşık ortamlarda zaman ve kaynak tasarrufu sağlar.

VM Extension;

Azure VM Extension, Azure sanal makinelerinde (VM) kurulum esnasında veya sonradan yapılandırma ve otomasyon görevleri sağlayan küçük uygulamalardır. Bu görevler şunları içerebilir:

  • Yazılım kurulumu: VM’ye istediğiniz yazılımı yükleyebilirsiniz. Örneğin, Azure Monitor agent, Chef, Datadog gibi araçları VM’ye kurabilirsiniz.

  • Antivirüs koruması: VM’yi virüslere ve kötü amaçlı yazılımlara karşı koruyabilirsiniz. Örneğin, Microsoft Antimalware, Symantec Endpoint Protection gibi antivirüs programlarını VM’ye kurabilirsiniz.

  • VM içinde bir komut dosyası çalıştırma: VM’de PowerShell veya Bash komut dosyalarını çalıştırabilirsiniz. Örneğin, Custom Script Extension, VM’de herhangi bir PowerShell veya Bash komut dosyasını çalıştırmanıza olanak tanır. Bu komut dosyaları, Azure Storage veya GitHub’tan indirilebilir.

Azure VM Extension’ları, Azure CLI, PowerShell, Azure Resource Manager (ARM) şablonları ve Azure portalı kullanarak çalıştırabilirsiniz.

Custom Script Extension, Azure VM Extension’larından biridir. Bu uzantı, Azure API’yi kullanarak VM’lerde PowerShell veya Bash komut dosyalarını çalıştırmanızı sağlar.

Sistemi güncelleyip, sisteme redis kuran bir script:

#!/bin/bash
# Custom script to update and upgrade Ubuntu 20.04
# Update the package manager
sudo apt update
# Upgrade the installed packages
sudo apt upgrade -y
# Install redis packages
sudo apt install redis -y
# Print a success message
echo "Update and upgrade completed on $(hostname)"

Göreceğiniz üzere, sunucu üzerinde redis servisi kurulu gözükmektedir.

Desired State Configuration (DSC), Azure'da bir VM'in belirli bir yapılandırma durumunda kalmasını sağlamak için kullanılan bir yönetim aracıdır. DSC, PowerShell'in bir parçası olarak karmaşık dağıtımları kolaylaştıran ve yeniden başlatma gibi adımları içerebilen bir yapılandırma platformudur. DSC ile oluşturulan yapılandırma scriptleri okunması kolay ve declarative bir biçimde yazılır, yani istenilen son durumu tanımlarlar ve bu durumun sürekli sağlanmasını garanti ederler.

DSC'nin kullanılması gereken senaryolar, özellikle post-deployment yapılandırmasında yeniden başlatma gibi karmaşık adımlar içeren durumlardır. Custom Script Extension (CSE) bu tür karmaşık senaryoları desteklemediğinde DSC tercih edilmelidir. DSC'nin yapılandırma blokları, yapılandırmanın adını verdiğiniz en dıştaki script bloğudur ve her bir "node" bloğu, yapılandırmanın uygulanacağı bilgisayarları ve kaynakları tanımlar. Bu, Azure VM'lerinizin yönetimini otomatikleştirmek ve istenen durumun sürekliliğini sağlamak için güçlü bir araçtır.

☁️
🪡
Desired State Configuration for Azure overview - Azure Virtual MachinesMicrosoftLearn
Logo
Getting Started with Azure Automation DSCMedium
Export-AzResourceGroup (Az.Resources)MicrosoftLearn
Logo
Manage VMs with Azure Automation State Configuration | TechTargetIT Operations
Logo
Export template in Azure CLI - Azure Resource ManagerMicrosoftLearn
Azure virtual machine extensions and features - Azure Virtual MachinesMicrosoftLearn
Logo
Logo
Logo