Skip to main content

9 posts tagged with "DevOps"

View All Tags

· 4 min read
Hasan Gural

In the previous blog post, we have covered how to create a deploymentScript resource with Bicep. In this blog post, we will continue with the deployment script and talk about how to execute the script for accesing a private network from the deployment script.

👉 Accessing a private network from the deployment script

Imagine that you have a scenario where you have resources they locked down to a private network and you need to access them from your deployment script. In this case, you can use the deploymentScripts resource to run a script that accesses the private network.

· 3 min read
Hasan Gural

When you are working on a project, sometimes you need to deploy your resources to Azure using a script. In this blog post, we will try to cover if we need to execute script for the pre and post deployment how we can achieve this with Bicep while we are deploying our resources to Azure using Bicep.

👉 What are deployment scripts?

DeploymentScripts are a powerful feature that allows you to run either PowerShell or Bash scripts as part of your Bicep deployment. These scripts execute in a Docker container, providing a flexible way to add custom behavior to your deployment process. With either Azure CLI or Azure PowerShell at your disposal, so you can automate almost anything you need to do in your deployment if you have to execute a script before or after the deployment.

· One min read
Hasan Gural

Her yıl Nisan ayında tüm Dünya üzerindeki ülkelerde eş zamanlı gerçekleşen en büyük Azure etkinliği bu sene de 25 Nisan 2020 Cumartesi günü gerçekleştiriliyor. Bu sene ise MsHowto ekibi olarak, Covid-19 sebebi ile Virtual olarak gerçekleştiriyor olacağız.Global Azure Virtual BootCamp 2020 için etkinlik haritasını ve session detaylarını aşağıda görebilirsiniz. Bu etkinlikte Azure Blueprints servisi hakkında edindiğim tecrübelerimi aktarıyor olacağım.

MsHowto - Azure Virtual BootCamp 2020

· One min read
Hasan Gural

Her yıl düzenli olarak Nisan ayında tüm Dünya üzerindeki ülkelerde eş zamanlı gerçekleşen en büyük Azure etkinliği bu sene de 27 Nisan 2019 Cumartesi İzmir Yüksek Teknoloji Enstitüsü'nde gerçkleştirdik. MsHowto olarak İzmir lokasyonunda çok büyük bir kitleye seslendik. Konuşmacı olarak yer aldığım seminerde sevgili Fırat Yaşar ile birlikte Infrastructure with Terraform and Azure Pipelines isimli sunum ile katıldım. Keyifli bir organizasyon oldu. Katılım gösteren tüm herkese teşekkür ediyorum.

]

· One min read
Hasan Gural

Her yıl Nisan ayında tüm Dünya üzerindeki ülkelerde eş zamanlı gerçekleşen en büyük Azure etkinliği bu sene de 27 Nisan 2019 Cumartesi günü gerçekleştiriliyor. Bu sene ise MsHowto ekibi olarak, İzmir Yüksek Teknoloji Enstitüsü'nde yerimizi aldık. Global Azure Bootcamp etkinlik haritasını ve lokasyonlarını bu linkten görebilirsiniz. Bu etkinlikte özellikle Microsoft Azure DevOps platformu hakkında edindiğim tecrübelerimi aktarıyor olacağım.

· One min read
Hasan Gural

Microsoft Cloud and Datacenter Management MVP (Microsoft Valuable Professional) unvanına sahip olan Fırat Yaşar ile birlikte Infrastracture as Code yaklaşımını Terraform ile uygulayarak değerlendirdiğimiz ikinci içeriğimize videomuzdan ulaşabilirsiniz. Konunun devamı için Fırat Yaşar ile hazırladığımız diğer videomuza kanalımızdan ulaşabilirsiniz.

· 5 min read
Hasan Gural

Bildiğiniz gibi artık API kullanımının meşhur olduğu bir dünyada yaşıyoruz. Hemen hemen her incelediğim projede bir yerinde bir ucunda API ile iletişim haline geçip iş yapmaya çalışıyoruz. Bu yazı içerisinde biraz eğlenceli ve tuhaf ama keyifli bir konuyu aktarmak istiyorum. Microsoft Graph API bizlere Azure Active Directory, Office 365 Bileşenleri, Intune, Planner etc, içerisindeki istediğimiz kullanıcının özniteliklerine ulaşmayı ve bunları alarak raporlar oluşturmamıza olanak sağlanıyor. Bunu sadece kullanıcı bazında sınırlamamak lazım, Intune, Mobile Device Report gibi genişletebiliriz. Her türlü raporları bu API sorgular yaparak alma şansınız var. Office 365 tarafı ile ilgilinen arkadaşlar için, şimdilerde Powershell Module geçişleri yapıyorlar, ya da daha önceki yazdıkları kod bloklarını dönüştürmeleri lazım. Bunun başında, MSOnline adındaki module artık, AzureAD adındaki olan ve arka tarafta Microsoft Graph API v2.0 ( Beta ) olarak kullanılan sürüme dâhil edilerek geliştirilmiştir. Bu yüzden iki farklı Powershell Modulunu kullandığınız zaman farklı öznitelikler(propertyler) görebilirsiniz.

Powershell ile Microsoft Graph API kullanırken yukarıda bahsettiğim sadece belirli bir objeleri değerlerini getirmek ve raporlamak için değil daha farklı yöntemler içinde kullanabilirsiniz. Microsoft Graph API en basit haliyle REST API olarak Azure Active Directory erişim sağlayabilirsiniz. Bu sayede Azure Active Directory içerisindeki Applicationlar ( App Registrations) verdiğiniz izinlere göre, Azure Active Directory içerisindeki verileri okur, nesneler oluşturur, onların değerlini okur ve güncelleme ve silme işlemlerini gerçekleştirmek tamamiyle Azure AD Graph API'sini kullanabilir. Örneğin, Microsoft Graph API'na sorgu yaparak bir kullanıcı nesnesi için aşağıdaki değerleri döndürebilirsiniz; Bunları bir süreç olarak düşenebilirsiniz.

  • User oluşturma, lisans ve manager atama, mobile device provision etmek,
  • Assign to Office 365 Groups or Assign to Azure Active Directory Groups etc.

Özetle bu API sayesinde bir süreç haline getirip hayatımızı kolaylaştırabilirsiniz. Microsoft Graph API ile erişebileceğiniz servislerin hepsini özetlemek gerekir ise,

  • Azure Active Directory
  • Office 365 services
    • SharePoint, OneDrive, Outlook/Exchange, Microsoft Teams, OneNote, Planner, Excel
  • Enterprise Mobility and Security services
    • Identity Manager, Intune, Advanced Threat Analytics, Advanced Threat Protection
  • Windows 10 services
    • Activities, Devices
  • Education

Daha farklı bir senaryo ise, siz Software as a Service veren bir firma olarak bu API müşterleriniz için kullanarak onların süreçleri için değişik uygulamalar geliştirme şansınız var. Daha önce farklı isimler ile duymuş olabilirsiniz, yada yukarıdaki tüm servislere farklı şekilde API sorgulamaları yapmış olabilirsiniz, artık Microsoft Graph API' olarak geliştirmeye devam edecek. Yavaştan nasıl bağlanacağımızı Powershell ile REST API sorgular yaparak neler yapabildiğimizi görelim, öncelikle bir adet Service Principal ihtiyacımız var. Bunu oluşturmak için, Azure Active Directory içerisinde, App Registration sekmesine giderek oluşturabilirsiniz, Aslında bu yaratacağımız Application ile Microosft Graph API RestFull istekler yaparak istediğimiz oluşturma, silme, güncelleme gibi talepleri gönderiyor olacağız.

Yukarıdaki resimde adımları anlatmak için bir ekran görüntüsü paylaşıyorum, yeni bir adet Application Registration oluşturmak çok zor bir süreç değil. Sadece oluşturduktan sonra gereken yetkileri vermeniz gerekiyor. Dilerseniz şu makaleyi takip ederek yapabilirsiniz. Link : Microsoft Graph API Started. Benim hali hazırda oluşturduğum kendi Azure Active Directory için bir adet Application Registration bilgilerim var ve bu Application için Azure Active Directory üzerinde Graph API ve diğer servisler için gereken yetkilendirmeleri yaptım. Şimdi Powershell tarafında ilk başta nasıl bir değişkenlere ihtiyacımız var hızlıca tanıyalım.

$tennantid        = 'tenantId'         ## Tenant bilginiz
$ApplicationID = 'AppClientdId' ## Application Id ( App Registration )
$ApplicationKey = 'AppClientSecret' ## Application Secret
$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://graph.microsoft.com"

Yukarıdaki değişkenleri oluşturduktan sonra karşınıza gerekli değerleri girmeniz gerekmektedir. Çünkü bu değerlerin hepsini Powershell içerisinden Rest API istek yaparken kullanıyor olacağız. Aşağıdaki örnek içerisinde nasıl bir değerler geldiğini anlayabilirsiniz.

Aslında bu tarz istekleri yapmadan önce PostMan veya HttpMaster kullanarak test etme şansınız var. Ayrıca Microsoft bu kısımda devreye giriyor ve bize Microsoft Graph API Explorer sunuyor. Bu sayede yapacağınız sorguları daha öncesinden anlamanıza yardımcı olur ve nasıl parametreler kullanamanız gerektiğine karar verebilirsiniz. Aşağıdaki sayfaya giderek yukaıdaki belirttiğimiz tüm servisler için sorgulamalar yapma şansınız var. Eğer Microsoft Idniz ile oturum açarsanız ve izin verdikten sonra çok daha farklı deneyimler yaşabilirsiniz. Burası işin tamamen kendinizi bu API kullanımında ne tür bilgiler ve aksiyonlar alabileceğiniz için sizlere yol göstermesi için hizmet vermektedir.

Powershell tarafında kaldığımız yerden devam edelim, Application Id ve Application Secret bilgilerini aldıktan sonra artık API içerisine authorization/authentication olmak için gereken değerlerimizi gönderelim. Bu işlemleri hepsi tamamen token alıp Microsoft Graph API erişmeye devam etmek olacak.

$tennantid        = 'tenantId'         ## Tenant bilginiz
$ApplicationID = 'AppClientdId' ## Application Id ( App Registration )
$ApplicationKey = 'AppClientSecret' ## Application Secret
$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://graph.microsoft.com"

#request Body for Microsoft API
$Body = @{
'resource'= $ARMResource
'client\_id' = $ApplicationID
'grant\_type' = 'client\_credentials'
'client\_secret' = $ApplicationKey
}

Yukarıdaki kod bloğundan sonra aşağıdakileri yazıp artık REST API üzerinende gereken token alma işlemizi tamamlayalım.

$tennantid        = 'tenantId'         ## Tenant bilginiz
$ApplicationID = 'AppClientdId' ## Application Id ( App Registration )
$ApplicationKey = 'AppClientSecret' ## Application Secret
$TokenEndpoint = {https://login.windows.net/{0}/oauth2/token} -f $tennantid
$ARMResource = "https://graph.microsoft.com"

#request Body for Microsoft API
$Body = @{
'resource'= $ARMResource
'client\_id' = $ApplicationID
'grant\_type' = 'client\_credentials'
'client\_secret' = $ApplicationKey
}

$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept'='application/json'}
Body = $Body
Method = 'Post'
URI = $TokenEndpoint
}

$token = Invoke-RestMethod @params

Yukarıdaki Powershell satırları sayesinde Microsoft Graph API istek yaptığınız zaman token almış olacaksınız. Bu token yine gördüğünüz gibi '$token' değişkenine atanmış olacak. Şimdi ise artık bu token alıp başına authorization sürecini bitirmek için, Header ekleyip Rest API tarafına göndereceğiz. Bu sayede artık sorgulamak istediğimiz herşeye sahip olacağız.

$headers = @{}
$headers.Add("authorization","Bearer $($token.access\_token)")

Neredeyse API tarafında istek yapabilir konumdayız. Serimizin bir sonraki bölümünde birkaç sorgular ve istekler ile Microsoft Graph API kullanımı örnekler ile genişletmeye çalışalım.

· 2 min read
Hasan Gural

İlk bölümünüzde Powershell ile Microsoft Graph API üzerinde nasıl auhentication olacağımızı ve tüm ön gereksinimleri inceledik. Artık ilk isteğimizi gerçekleştirelim ve nasıl bir mantığı olduğuna bakalım.

Çalıştırdığımız Invoke-RestMethod cmdlet çıktısını 'responsUser' adındaki değişkene atamasını gerçekleştirdim. Fakat bunun öncesinde, ne tür parametler gönderdik ona bakalım. Microsoft Graph API URI kısmına dikkat çekmek istiyorum. Bu kısım aşağıdaki şekilde iki farklı bölüme ayrılıyor.

İki farklı versiyon bulunuyor şuan, v1 çok eski kaldı diyebilirim. Beta olan v2 olarakda duyabilirsiniz ama hala beta olarak devam ediyor. Bu yüzden v1 ve v2 iki arasında sorgulamalar yaptığınız zaman farklı sonuçlar dönecektir. V2 karşımıza gelen sonuçlar yukarıda görebilirsiniz. İlgili Graph URI içerisinde '/users/userNameorPrincipalName' olarak gönderdiğiniz zaman kullanıcı, authenticate olduğunuz App Registrations yetkisi dâhilinde tüm nitelikleri görebilirsiniz. Bu yaptığımız sadece Invoke-RestMehod içerisine, Method olarak Get gönderip sadece birşeyleri getirmemiz, faydalanmamız için belirttik. Daha farklı methodlar bilebileceğiniz gibi var, ( POST, PATCH, GET, DELETE) şeklinde görebilirsiniz.

Hemen farklı bir örnek yapalım bu kullanıcının tüm özeliklerini listeledik. Bunları belirtiğimiz gibi güncelleme, silme hakkına sahibimiz, Rest API yapacağınız isteklere ve ihtiyacınız göre değişkenlik gösterir. Farklı bir örnek ile devam edelim, bu sefer sorguladığımız kullanıcının memberOf tarafına istek yapacağım ve üye olduğu groupları beraber görelim.

$responsUser = Invoke-RestMethod -Headers $headers -Method Get 
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com" `
-ContentType "application/json"

$responsUserGroup = Invoke-RestMethod -Headers $headers -Method Get
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com/memberOf" `
-ContentType "application/json"

Bu yaptığımız son örnekte ise belirttiğimiz gibi kullanıcının üye olduğu groupları listeledik. Powershell ile Microsoft Graph API Kullanımının tadını çıkarmak için aşağıdaki birkaç örnek daha sizler için bırakıyorum. Bunları sizde test ederek, hayal gücünüzün ötesine gidebilirsiniz.

$getUserInfo     = Invoke-RestMethod -Headers $headers -Method Get 
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com" `
-ContentType "application/json"

$getUserPhoto = Invoke-RestMethod -Headers $headers -Method Get
-Uri "https://graph.microsoft.com/beta/users cloudshell@hasanguralhotmail515.onmicrosoft.com/photo/$value" `
-ContentType "application/json"

$updateUserPhoto = Invoke-RestMethod -Headers $headers -Method PUT
-Uri "https://graph.microsoft.com/beta/users/cloudshell@hasanguralhotmail515.onmicrosoft.com/photo/$value" `
-ContentType "application/json"

· One min read
Hasan Gural

MSHOWTO olarak 2017 senesinin ilk Üniversite etkinliğini Bahçeşehir Üniversitesinin Yazılım Bilişim Kulübünün organizasyonu ile gerçekleştirdik. Konuşmacı olarak yer aldığım seminerde gün boyunca Microsoft Cloud Vision konularından bahsettik. Keyifli bir organizasyon oldu. Katılım gösteren öğrenci arkadaşlarımıza teşekkür ediyorum.

]