Skip to main content

23 posts tagged with "IaC"

View All Tags

· 4 min read
Hasan Gural

Bir önceki yazımızda Azure Function örneğini deploy etmiş ve içerisinde bulunan function ile nasıl etkileşim halinde olduğunu ve aksiyon aldığından bahsetmiştik. Şimdi ise Azure aboneliği üzerine Custom Resource Provider tanımlamasının nasıl olduğunu anlayamaya çalışalım. Öncelikle Custom Resoırce Provider henüz general available olmadığı için tüm Azure Region'larında kullanma şansınız yok. Bu yüzden ben sadece destekleyenlerden biri olan, 'EastUs' özelinde devam edeceğim. Custom Resoırce Provider kesinlikle destekleyen Region'lar da oluşturulmalıdır.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "containerName": {
            "type": "string",
            "defaultValue": "fsocietyTerminal01"
        }
    },
    "resources": [
        {
            "apiVersion": "2018-09-01-preview",
            "type": "Microsoft.CustomProviders/resourceProviders",
            "name": "customContainerProvider",
            "location": "eastus",
            "properties": {
                "resourceTypes": [
                    {
                        "name": "startContainer",
                        "routingType": "proxy",
                        "endpoint": "https://customprovider-func.azurewebsites.net/api/{RequestPath}"
                    }
                ]
            }
        },
        {
            "apiVersion": "2018-09-01-preview",
            "type": "Microsoft.CustomProviders/resourceProviders/startContainer",
            "name": "customContainerProvider/startNewContainer",
            "location": "eastus",
            "dependsOn": [
                "[resourceId('Microsoft.CustomProviders/resourceProviders/', 'customContainerProvider')]"
            ],
            "properties": {
                "ContainerName": "[parameters('containerName')]"
            }
        }
    ],
    "outputs": {
    }
}

Yukarıda gördüğünüz resim üzerinde bir çok açıklama mevcut. Öncelike yukarıda gördüğünüz resim basit bir Azure Resoırce Manage Template ibaret ama bunun içerisinde bir tanımlamalar var. Bu template genel anlamıyla iki iş yapıyor. Bu açıkmalar resim üzerinde var ama kısaca yine özetlemekte fayda olduğunu düşünüyorum.

Azure Template içerisinde Resources kısmında tanımlı olan bölümleri ele alalım.

    1. Bölge yani , Custom Resoırce Provider için Azure API içerisinde tanımlı olan Resoırce Type çağırıp, işte benim custom resoırce provider adım ve ResoırceType tanımlamam bunlar dedik. CustomContainerProvider adında bulunan Custom Resoırce Provider bana startContainer adında bir resoırceType sağlıyor olacak. Bunu tekrar template içerisinde kullanarak süreci Azure function tarafına devredeceğim.
    1. Bölge de tamamen tanımlamış olduğum Custom Resoırce Provider çağırıyorum ve ona parameterik olarak bir değer gönderip container oluşmasını sağlayacağım. Dediğim gibi normalde bunu Azure Resource Manager Template ile yapabilirsiniz ama burada vermek istediğimiz mesaj Azure Abonelikleri eğer benim Custom Resoırce Provider'ımı kullanıyor ise, lütfen şu propertyleri göndersin ve onun için kendi hizmetimi, bana özel çözümümü Azure Aboneliği içerisine kolay birşekilde dağıtabileyim ve müşteri tarafında gereken tüm automation, yapılacak bir çok işlem (lisanslama, deployent validation vs) Azure Function arkasında çalışan Powershell ile yönetilebilsin. Bunun giib farklı örnekler ile senaryomuz genişletilebilir.

Şimdi isterseniz Deployment sürecine geçelim ve nasıl aksiyon alındığını beraber görelim. Yukarıda gönrdüğümüz template kendi aboneliğim içerisinde çalıştıracağım ve bu sayede basit bir container elde edeceğim. Azure Portal içerisinden Template Deployment seçelim,

Daha sonra "Create" butonuna basarak yukarıda bulunan Azure Resource Manager Template içerisine yapıştıralım ve parametreleri dolduralım.

Template için parametrik değer olarak "Container Name" kısmını belirledik. Bu containerName için girdiğimiz değer, yukarıda bahsettiğimiz gibi Azure Function içerisinde Azure API üzerinde REST API olarak gönderilecek ve Azure Function bu değerleri aldıktan sonra bizim için aksiyon alacak. Şimdi 'Purchase' butonuna basalım ve neler olduğunu beraber görelim.

Deployment süreci başladı. İlk önce tanımlamış olduğumuz customContainerProvider tanımlamasını yaptı. Bunu görebilmeniz için, Deploy ettiğiniz Resource Group içerisinde Deployments sekmesine gelmeniz yeterli. Şimdi ise Azure Resource Manager Template içerisinde olan ikinci kaynak olan Custom Resource Provider içerisine containerName parametresini gönderip Azure Function tarafından tetiklenmesini sağlandığını görelim.

Herşey yolunda gitmiş gözüküyor, gönderdiğimiz değer Azure Function içerisine gönderilmiş , Azure Function içerisindeki Powershell çalıştırıldı ve Azure Rest API gerekli cevaplar düzgün iletilmiş. Görüldüğü üzere deployment Azure function tarafından başarılı bir şekilde yapılmış gözüküyor. Şimdi ise Azure Function tarafında Log detaylarını görelim, böyle bir talep geldiği zaman nasıl bir etkileşim başlıyor.

Kullanmış olduğumuz Template içerisindeki Parametrik olarak değer Azure ARM REST API sayesinde Azure Function içerisine gönderildi ve yapmak istediğim Resource Group ve Azure Container Instance oluşturuldu. Azure Container Instance oluşup oluşmadığını kontrol edelim.

Yukarıdaki resimde görüldüğü üzere Azure Container Instance oluşturuldu ve Container içerisinde console üzerine yazılar yazdırdık. Bu yüzden tamamen neler yapabileceğimize bir örnek vermek adına yaptığımız bir uygulama oldu. Aşağıda paylaştığım gitHub adresim üzerinden dilerseniz Custom Resource Provider Template direk deploy edebilirsiniz. Fakat dikkat etmeniz gereken endpoint adreslerinin düzeltilmesi, kendi Azure Function hizmetini göstermelisiniz.

Not: Yaptığımız örneklerde sadece bir adet Azure Aboneliği özelinde devam ettik. Gerçek senaryolarda Azure Function tamamen hizmeti veren firma, partner tarafından yönetilir. Firmanın verdiği hizmetleri kullanmak isteyen Azure Abonelikleri Custom Resource Provider sayesinde Partnerlerin hizmetini kendi abonelikleri içerisine deploy etmelerine yardımcı olur. Yazımızın başında dediğimiz gibi, bu yöntem Partner firmaların hizmetlerini Azure Aboneliklerine dağıtırken kullanabilecekleri bir yöntem ama dilerseniz kendi organizasyon yapınızda kullanabilmek şansınız olabilir. Daha önceki yazımda verdiğim örnek gibi, Jumbox on demand aslında buna en net örnek olarak gösterebilirim. Bunun sebebi herşey kolay ve hızlı bir şekilde Azure Functions tarafından geliştirilen Powershell tarafından yönetiliyor olacak. Bu yüzden kontrol, yönetim, gizlilik herşey Azure Functions arkasında yazılan olan kısıma bağlı yani özetle hizmet veren kişiye/firmalara.

Daha fazla detay için gitHub adresim üzerinden contribute edebilir veya bana direk yorumlarınızı iletebilirsiniz.

· 5 min read
Hasan Gural

Bir önceki yazımızda Custom Resoırce Providers kavramını tanımlamak ve ona bağlı olan komponentleri anlamak ile ilgilenmiştik. Bu yazımızda ise, Custom Resource Providers tanımlamasının nasıl olduğundan bahsediyor olacağız.

Custom Resource Provider nasıl tanımlanır?

Custom Resource Providers, Azure ile endpoint (Azure Function) arasında karşılıklı ilişkileri tanımlayan bir listedir. Bu karşılıklı tanımlamalar Azure'un herhangi bir endpoint ile nasıl etkileşime girmesi gerektiğini açıklar. Custom Resource Provider'lar bir proxy gibi davranır ve belirtilen endpoint için gelen istekleri alır ve yanıtları onlara iletir. Bu kısımda endpoint arkasında çalışan bizim geliştirdiğimiz bir adet Powershell Core yazılmış Script olduğunu düşünelim ve onu Azure Function hizmetine deploy edip, endpoint olarak kullanacağız Azure Function olmasının sebebi tamamen Azure Servislerinden faydalanmak. Bir Custom Resource Provider iki tür sözleşme/tanımlar modeli belirtebilir bunlar sırasıyla;

  • resourceTypes
  • Actions

Bunlar endpoint tanımlarını belirtirken kullanılır ve her ikiside farklı API özellikleri bizlere sunar ve onlar aracılığıyla etkileşim içine geçilebiliriz.

  • name,
  • routingType
  • endpoint.

Yukarıda gördüğünüz, bir endpoint tanımının alması gereken öznitelikler yani propertyleri görebilirsiniz. Bu property'lerin ne iş yaptıklarına kısaca göz gezdirelim.

Tablo içerisinde bahsettiğimiz ve yukarıda ki örnek JSON dosyası içerisinde sıradan bir Endpoint tanımlasını nasıl yapmamız gerektiğinden bahsettik. Şimdi ise bu endpoint tanımlasını Azure Resource Manager içerisinde nasıl kullanabileceğiz ve nasıl Custom Resource tanımlası yapabiliriz buna beraber bakalım. Öncelikle Custom Resource için Resouce Types anlaşma/tanım özelliğini kullanılım. Aşağıda gördüğünüz tanımın temelinde bize yeni bir API sunar ve tüm operasyonunda RESTful özelinde Create, Read, Update, Delete (CRUD) yöntemlerini ortaya koyar ve destekler.

Yukarıdaki tanımladığımız JSON içerisinde artık Azure API bu detayları gönderdikten sonra Custom Resource ile nasıl iletişime geçeceğini ve eklenen API Detayları aşağıda bulabilirsiniz. Girdiğiniz resourceType adına göre Azure REST API gerekli CRUD işlemleri için API tanımlamaları yapılacaktır. ResourceType olarak kullanılan Custom Resource Provider tipinde yapılan istek sonrası endpoint kesinlikle Id, Name ve Type göndermelidir. Bunlar sırasıyla,

  • Id: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{customResourceName}",
  • Name: "{customResourceName}",
  • Type: "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}"

Bunların detaylarını geliştirmiş olduğum Powershell code bloğu içerisinde bulabilirsiniz. Return Response olarak bu değerleri geriye dönmeniz gerekiyor, Deployment sürecinin başarılı tamamladığını anlatmak için Azure API tarafına göndermeniz şart.

Custom Resource Provier için Custom Actions nasıl tanımlanır?

Daha öncede söylediğimiz gibi iki adet farklı karşılıklı anlaşma modelimiz var idi. Bunlardan diğeri olan Custom Actions en basit haliyle, Custom Resource Provider tanımlamasını yaptığımız zaman Azure bize, Action için bir Rest API sunar ama sadece Post methodunu destekler. Yazı serimiz boyunca ResourceType tanımı üzerinde yoğunlaşıp onu kullanarak endpoint kullanımı gerçekleştireceğiz.

Yukarıdaki örnekte bir Actions tanımlaması Custom Resource Providers için görebilirsiniz. Bu tanımlama ile bahsettiğim gibi, Custom Resource Providers için RESTful operasyona denk gelen aksiyonları belirtip endpoint talepleri iletebileceğiz. Tanımlanan Actions ile aşağıdaki API Detayları elde edilebilir.

Actions olarak kullanılan Custom Resource Provider tipinde yapılan istek sonrası endpoint kesinlikle aşağıda bulunan geçerli tipte veriler döndürmelidir. Bunlar sırasıyla,

  • Content tipi: "application/json; charset=utf-8" olmalı.
  • Geçerli bir JSON formatında, object array.

Custom Resorce Provider özelinde Resource Type ve Actions tipinde farklı karşılıklı anlaşma modellerinin nasıl yapılacağını gördük, aralarındaki farklılıklardan bahsettik ve artık ön gereksinimlerimize geçebiliriz.

Azure Functions hizmetine ihtiyacımız var çünkü bizim için bir endpoint gibi davranıp Custom Resource Provider tarafından gelen eylemleri işleyip Azure Function içerisinde çalışan Powershell Function veya Script artık nasıl bir süreç yönetmek istiyorsanız sizin isteğiniz doğrultusunda aksiyon almasını sağlayacağız. Makale içerisinde sizleri Azure Function nasıl oluşturulur, neler yapmanız gerektiğini bilmenize gerek kalmadan kendi gitHub hesabım üzerinden Azure Resource Manager Template'lerine erişebilir ve hızlıca kendi ortamınıza dağıtabilirsiniz. Bu yüzden Azure Function nasıl oluşturacağım, nelere dikkat etmem gerekiyor gibi sorunlara sizi boğmadan Azure Function oluşturmak için aşağıdaki adımları seyrederseniz çok hızlı bir şekilde Custom Resource Provider için bir endpoint tanımlaması gerçekleştirebilirsiniz.

Azure Function Dağıtım adımları için lütfen aşağıdaki adımları takip ediniz.

Gördüğünüz gibi Deploy to Azure butonuna bastığınız zaman sizler için yayınladığım Azure Function hizmetini deploy ediyor olacak. Function içerisinde geliştirdiğim, StartContainer isimli Function job tanımlanmış olacak. Bu sayede bunu Custom Resource Provider kullanabilirsiniz. Deployment başarılı olduğu zaman sizin için bir Deploy ettğiniz Function adında bir adet App Registration oluşturacak ( Service Principal Account ) bunun demo ortamı için azure hesabınıza yetkilendirmesini yapmanız gerekmektir. Daha fazlası için gitHub sayfamı takip edebilirsiniz. Özetle bu function depoy ederek, endpoint tanımlamasının bir şablon halinde hesabınıza dağıtarak kullanmaya başlayacaksınız.

Aşağıdaki paylaştığım Azure Function içerisinde Powershell Core ile geliştirmiş olduğum bir kod bloğu var, yaptığı işi kısaca özetlemek gerekir ise gelen talep doğrultusunda bir adet container oluşturup console içerisine birşeyler yazdırmak. Tahmin edebileceğiniz gibi bunu zaten Azure Resoırce Manager Templateleri ile yapabiliyoruz ama burada vermek istediğim örnek tamamen sizin hizmetinize özel geliştirmiş olduğunuz Custom Resource Provider için belirli bir nitelikler göndererek ( endpoint'e yani Azure Function uç noktasına) bu değerler Azure Function tarafından işlenip sizin için bir aksiyon almasını sağlamak. Yani özetle Azure deneyimini bozmadan, Azure Resource Manager üzerinden abonelik içerisinde Custom Resource Provider register edip, sadece talep edilen propertyleri göndermek olacak. Aşağıda bulunan kod bloğunu incelediğiniz zaman request edilen container adında hızlıca bir ACI oluşturup console üzerine birşeyler yazıyor olacak.

Bir sonraki yazımızda Azure Function ve Custom Resoırce Provider için yapmamız gereken yapılandırmalara devam edeceğiz.

· 7 min read
Hasan Gural

Bir süredir yazmak istediğim seri ile karşınızdayım. Öncelike seriyi okumadan önce lütfen Mshowto Blog'u üzerinde ve internette takip edebileceğiniz Azure Resource Manager Template isimli yazıları okumanızı tavsiye ederim. Eğer Azure Resource Manager az bir seviyede aşina iseniz, bununla beraber kendinizi DevOps kültürünün bir parçası olduğunuzu farkettiğiniz zaman Infrastrature As Code ile uğraşmaya başladınız demektir. Temel amacımız bu yazı seri içerisinde vermek istediğimiz veya aktarmak istediğimiz konu Azure Resource Manager'ın bir parçası olan Custom Resource Provider kullanarak ve işin içerisine son zamanlarda gözde servisimiz olan Azure Function dahil ederek bu muhteşem ikilinin aralarında bulunan çalışma ilişkisini göstermek olacak. Bu terimleri yazımızın ilerleyen kısımlarında tek tek açıklıyor olacağım.

Custom Resoırce Provider tanımına geçmeden önce hızlıca Azure Resource Manager ve Azure Functions konularından bahsedelim. Öncelikle Azure Resource Manager Template dağıtım modelini kullanmanın avantajlarından kısaca bahsedelim. En basit haliyle Azure Resource Manager Template dağıtım modelini kullanarak geliştirmiş olduğunuz JSON ( declarative syntax ) ile tekrar edilebilir, validate edilmiş, DevOps kültürüne uygun olarak deployment patternleri hazırlayabilir ve tekrar tekrar kullanmaıza yardımcı olur. Green Field bir deployment yaptığınız zaman veya hali hazırda mevcut bir ortamınız için geliştirilmiş olan Azure Resource Template'lerini Dev, UAT, Production ortamlarınız için tutarlı deployment pattern hazırlayabilirsiniz. Bildiğiniz gibi farklı deployment araçları kullanarak Terraform, Ansible(her ne kadar configuration as code giriyor olsada IaC ve CaC ) olarak da kullanabilir) dağıtım yapabilirsiniz.

Azure Resource Manager templateleri daha önce dediğimiz gibi bize tutarlı, tekrar edilebilir, moduler hale getirilmiş, validate edilmiş ve CI/CD süreçlerine entegre olurken çok farklı avantajlar sağlıyor. Deployment süreçlerini yönetirken hangi tool ile bu işi sırtlanmanız gerektiğini siz belirleyebilirsiniz. Daha öncesinde farklı deployment aracı olan Terraform video serisimize Bulut Bilişim Çözümleri ve Ötesi isimlı youtube kanalı içerisinden bakabilirsiniz.

Azure Function ile ilgili yaklaşık iki sene önce bir yazı yazmıştım ama o kadar hızlı değişiyor ki yetişmek mümkün değil. Uzun bir süredir Azure Automation kullanarak schedule edilen standard tasklarımı veya WebHook kullanarak request ettiğim custom süreçlerimi öncelikli olarak Azure Automation içerisinden yönetiyordum ancak oyuna Azure Function hizmetinin Powershell desteği ile girmesiyle beraber şimdi ise iki tarafıda yoğun olarak kullanıyorum fakat Serverless Automation kavramında Azure Function oyuna dahil olduğu için bu Azure Function hizmeti içerisinde Powershell kullanmayı daha çok tercih etmeye başladım şu sıralar. Azure Functions en çok DevOps tarafında Servleress Automation olarak karşımıza çıkıyor ve EventGrid, Storage Queue veya Services Bus ile yaptığınız entegrelerde inanılmaz sonuçlar alabilirsiniz. Bu konuyu başka bir yazıda ele alacağım. Muhtemelen Event Driven Orchestration dünyasının nimetlerinden faydalanmamak imkansız gibi gözüküyor.

Azure Function kendi içerisinde v1 ve v2 olarak ikiye ayrılmakta, yeni bir Azure Function oluşturmak istediğiniz zaman hangi versiyonu seçmeniz gerektiğinize emin olmalısınız. Temel anlamıyla, v1 Powershell Core desteklemiyor. Powershell Core kullanmak istiyorsanız v2 ile devam etmenizi tavsiye ederim. Sebebi ise Powershell Core dışında, Azure Function v2 bize çok fazla kolaylık sağlıyor, en temeli custom bir Powershell Modülüne ihtiyacınız olur ise bunları yönetmek için Dependancy Management kullanarak Package Management üzerinden Custom Powershell Modüllerini alabilir veya Managed Identiy tadına vararak Azure Function code bloğunuzun çalışırken karşılaşacağı authentication sorunlarını kolayca atalabilirsiniz.

Şimdi tekrar Azure Function hizmetini nimetlerine dönmeceğim ama önce artık Custom Resource Provider nedir, ne için kullanabiliriz bunu biraz daha açalım. Bunları şu cümleler ile özetleyebiliriz.

Öncelikle şunu bilmenizi isterim ki, Custom Resource Providers henüz release olmadı. Birkaç cümle ile Azure'da bulunan Publisher'lar yani Vendor veya Partner artık nasıl çağırmak isterseniz onların hizmet vermek istediği müştlerine kaynaklarını dağıtmak, configure etmek için bir yol sağlamaktır. Kullanıcıların Azure dışından gelen kaynaklar için eylemler tanımlamasına izin verir ve bunları Azure Resource Manager şablonu ile dağıtımına yardımcı olur. Senaryoyu biraz daha açmak gerekir ise düşünseniz F5 bir load balancer deploy etmeye çalıştığınız firmanın bir takım orkestrasyon yapması gerekir dağıtılan kaynaklar içerisinde işte tam bu noktada Azure Custom Resource Provider yardımımıza koşuyor. Azure Managed Application detaylarına baktığınız zaman Custom Resource Provider ile ilişkisi olduğunu göreceksiniz. Aslında cevap çok basit, eğer custom bir uygulamanız var ise ve bunu Market Place üzerinden hizmet vermesini istiyorsanız Custom Resource Provider kullanarak Custom Resource için API'lar yayımlayabilir ve kullandırabilirsiniz.

  • Azure Resource Manager REST API - isteğimiz doğrultusunda genişletebiliriz. Bunlar organizasyonuza bağlı olarak tasarlanan uygulamalar Internal ve External hizmet sağlayıcıları olabilir.
  • Mevcut Azure Deployment süreçlerinizde ihtiyacımız olan özel yapılandırmaları otomatikleştirebiriz.
  • Azure Resource Manager Template kullanarak daha fazla denetim altına alabilir ve etki eden deployment süreçlerini daha detaylı kontrol edebiliriz.

Daha fazla örnekleri genişletmemiz gerekir ise sizin bir uygulamanız var bir servis sağlayıcı olarak bu uygulamanızı Azure üzerinde kullanan müşterinize sunarken bir deployment süreçinden geliştirmek istiyorsunuz. Bu herhangi bir third-party uygulama, firewall, aklınıza gelebilecek Azure kaynaklarına dokunna her türlü bir süreç olabilir. Siz bir partner olarak hizmetleriniz var bunları Azure Resource Manager üzerinden dağıtabiir hale getirmek istiyorsunuz ve arada yer alan dağıtım süreçlerini otomatik hale getirerek tamamlamak istiyorsunuz. Benim yakın zamanda yaptığım ve Pre-Production bir sistemde kullanmak olduğunuz Custom Resource Providers kullanarak bir dağıtım yönetimden bahsetmek istiyorum tamamen internal-organizasyon içerisindeki istekler özeli dahilinde kullanıyoruz.Bir Custom Resoırce Provier geliştirdik fakat bu sadece şirket içerisindeki departmanlara hizmet veriyor. En basit haliyle, şirket içerisinde farklı departmanlar var bu departmanların kendi özgü kaynakları abonelikleri olduğunu düşünün. Departmanların isteği doğrultusunda kendi ortamlarına kolayca Jumpbox VM ihtyaçlarını olduğunu ve bunu yine basit bir Azure Resource Manager Template ile kullanabildiklerini ama arkadaki bir çok automation süreçlerini çok fazla soru sorulmadan kolayca ve güvenli bir biçimde halledildiğini düşünün.

Özetle; Bu servisi ben {Jumbox-On-Demand} olarak çağırıyorum. Business Departmanlar merkezi olarak kendi ihtiyaçları doğrultusunda Jumbox on demand hizmetini talep etmek için Azure Resource Template kullanıyorlar ama bu template içerisinde kullanmak istedikleri Azure kaynakları tek tek tanıtmıyorlar, sadece template hizmeti veren ekip tarafından geliştirip, talep edilen parametreler aslında Azure Function içerisine Post ediliyor ve deployment tamemen Azure Function üzerinden kontrol ediliyor. Azure Resource Manager Template'ler sadece bu noktada endpoint ( Azure Function) olarak tanımlamak için ve talep edilen parametrik değerli almak için kullanılıyor. Eğer aşağıda süreçleri düşünürseniz, bu işleri yapmak için basit bir kullanıcının nelere yetkili olması gerektiğini farkına varabilirsiniz. Bu yüzden business departman kullancısı sadece istediği talebi Azure Resource Manager içerisinde tanımlı olan Custom Resource Provider resource'una iletip daha sonrasında Azure Function endpoint'ine gönderiyor ve tüm kontroller, authentication ve authorization Azure Function tarafında yazdığınız Powershell Script tarafından kontrol edilecektir. Senaryonun bir tık ilerisi aslında aynı Azure Function hizmetini, ITSM hizmetleri ile birleştirmekten ibaret yani aynı talebi firmanın talebi ile beraber ServiceNow gibi hizmetlere entegre edebilirsiniz sebebi ise Azure Function geliştirdiğiniz Powershell bloğunuz bir Rest API gibi davranabilir ve önüne Azure API Management hizmetini koyabilirsiniz.

  • Creating - Virtual Machine – Sanal Makine oluşturma
  • Impelementing – Disk Encyrption – Oluşturulan Sanal Makineyi Disk Encryption süreçlerini otomatik hale getirme
  • Creating Firewall Rules on Firewall for spesific IP Ranges. Oluşturulan sanal makine için Firewall üzerinde ingress kurallar tanımlama ( belirtilen source adresler üzerinden)
  • Creating CIS Based Imaged – Enrolling Azure Automation Account to get latest DSC Configuration – CIS Image ( Hardening olaması için geliştirdiğim DSC Config alabilmesi için Azure Automation otomatik register etmek)
  • Automatically Enroll to Backup Vault – Jumbox amaçlı oluşturulan sanal makinenin Azure Backup Vault içerisine otomatik olarak kaydedilmesi
  • To Schedule – Azure Runbook for deleting and redeploying Jumpbox. Deployment süreçinde Azure Automation DSC ve Runbook özelliğinden faydalanılıyor. Mevcut bir Runbook ile güvenlik gereksinimlerinden dolayı her 30 günde bir dağıtılan Jumpbox silinip tekrar oluşturup domain ortamına dahil ediliyor.

Diğer bir örnek verebilecek olur ise, Custom Resource Provider ile mesela, Azure Active Directory tarafında Group Oluşturmak, Group Member'ları ekleme çıkarma gibi değişik senaryolar yapabilirsiniz. Senaryolar oldukça genişletilebilir.Bir sonraki yazımızda Custom Resoırce Provider yapısını oluşturmak için temel bileşemlere bakıyor olacağız.