Skip to main content

14 posts tagged with "IAC"

View All Tags

· 2 min read
Hasan Gural

Serinin ilk bölümünde temel gereksinimlerimizi ve Bicep kullanımının avantajları/getirdikleri hakkında konuştuk. Şimdi biraz daha detaya ineceğiz ve Azure Resource Manager Şablonu ile Bicep arasında değişken, kaynak, parameter tanımlama gibi konulara bakacağız. İlk örnek olarak parameter tanımlamanın farklılıklarından bahsetmek istiyorum. Azure Resource Manager şablonlarında parametrelerimiz çok önemli bir kriterdir. Parameterlere bazen environment tipini ( dev/test/prod) bununla beraber isim standardlarını oluşturabiliyor. Tabi bunun dışında farklı paramterlerde kullanabiliyoruz, özetle dağıtılacak olacak her servise göre değişebiliyor.

· 4 min read
Hasan Gural

Bu yazı serisi içerisinde temel hedefliğimiz nokta, Microsoft’un neden Project Bicep geliştirmeye doğru adım attığını olacak, bununla beraber Bicep ile Azure Resource Manager Şablonlarının temel farklılıklarını konuşarak dağıtımlar yapmaya çalışacağız. Öncelikle Project Bicep nedir ve bunun altında yatan hikayesi nedir bunu anlayamaya çalışalım.

· 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

Microsoft Cloud and Datacenter Management MVP (Microsoft Valuable Professional) unvanına sahip olan Fırat Yaşar ile birlikte Azure Kubernetes Service (AKS) - #3 - Deploy a Sample Application konusunu değerlendirdiğimiz üçüncü 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.

· One min read
Hasan Gural

Microsoft Cloud and Datacenter Management MVP (Microsoft Valuable Professional) unvanına sahip olan Fırat Yaşar ile birlikte Azure Kubernetes Service (AKS) - #2 - Deploy an Azure Kubernetes Service Cluster 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 videolarımıza kanalımızdan bulabilirsiniz.

· 2 min read
Hasan Gural

Bu aralar benimde çok fazla zaman geçirdiğim ve zaman zaman kaybolduğum ama bir o kadar da keyif aldığım Kubernetes, sektörde hizmet veren yazılım firmasının göz bebeği durumunda olduğunu söyleyebilirim. Özellikle Kubernetes altyapısını yönetilen Azure Kubernetes Service üzerine devredip yönetiyorsanız Visual Studio Code ile gelen extesion kullanarak yönetimin verimliliğine ve keyfine varabilirsiniz. Visual Studio Code üzerinde bulunan bu extension size en basit haliyle, unmanaged veya managed cluster ortamlarınızı Visual Studio Code üzerinden kolayca yönetmenize olanak sağlıyor ve tek yapmanız gereken kubeconfig dosyası içerisinde gerekli yapılandırma bilgilerini hazır tutmanız.

Yaptığı işleri kısaca özetlemek gerekir ise,

Visual Studio Code üzerinden mevcut Cluster ortamnıız görebilir, pod, network, namespace gibi kaynaklarınızı yönetebilirsiniz.Herhangi bir Kubernetes cluster'ını yönetebilirsiniz. ( Azure, AWS, GCP ve daha fazlası ). Helm Repository içerisinde bulunan definition'ları görebilir ve bunları deploy etmenize yardımcı olur. Kubernetes içerisinde dağıtmış olduğunuz, uygulamalarınızın YAML definition kolayca editleyebilir, değişiklileri tekrar uygulayabilirsiniz. Kubernetes cluster yönetirken, kubectl içerisinde bulunan komutları hatırlamadan, Visual Studio Code üzerinde bulunan Command Platte özelliği ile kubectl komutlarını hatırlamadan çalıştırabilirsiniz.

· 2 min read
Hasan Gural

Sevgili Fırat Yaşar ile birlikte bir süredir Bulut Çözümleri ve Ötesi isimli Youtube kanalımızda, Azure Kubernetes Services ile ilgili videolar çekiyoruz. Fakat bu yazıda sıklıkla kullandığım open source bir araç olan 'kind' bahsetmek istiyorum. 'Kind' en basit haliyle size çok hızlı bir şekilde development ortamlarınız için Kubernetes Cluster ortamı oluşturmaktadır. Bunu yapmak için, minikube veya daha farklı teknolojiler kullanabilirsiniz ama benim şu sıralar favorim 'kind' olduğunu söyleyebilirim.

· 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.

]