Skip to main content

· 2 min read

Azure içerisinde ihtiyaçlarımızdan dolayı yaratılan Sanal Makineleri oluşturma işlemleri, bu sanal makinelerimizin hangi network üzerinde yaratılması ve isteğe bağlı olarak disk ekleme gibi işlemleri Azure Portal üzerinden yapmak biraz zamanımızı alabiliyor. Fakat benim gibi danışmanlık ve eğitim tarafında yer alıyorsanız, ihtiyaçlarımızdan dolayı birden fazla sanal makineyi aynı anda oluştururken bu süreçler ile uğraşıp ve zaman kaybetmek istemeyebilirsiniz. İşte bu süreçleri kolaylaştırmak adına geliştirdiğim Azure Virtual Machine Provisioing Tool – BETA sürümünü paylaşıyorum. Kısa bir not eklemek istiyorum; Azure içerisin de Resource Group Deployment kullanımı yaygın hale geldikçe bu işletim sistemi dağıtım süreleri oldukça kısa sürede gerçekleşecektir.

DevOPS

Azure VM Provisioning Tool kendi içerisinde bir çok kontroller yapmaktadır.

063015_2015_AzureVirtua1.png

Azure Virtual Machine Provisioning Tool şimdilik yapabildikleri,

  • Seçilen Storage Account içerisinde Sanal Makine dosyalarını barındırma
  • Yeni oluşturulacak Sanal Makineler için Cloud Service Kontrollerinin gerçekleştirilmesi
  • Image Family olarak sadece "Windows Server" ailesi
  • Oluşturulacak sanal makine veya makinelere istenilen boyutta Disk ekleme
  • Oluşturulacak sanal makine veya makinelere istenilen Network ve Subnet içerisine alınması
  • Username ve password işlemlerinin belirlenmesi

Yukarıdaki işlemlerin hepsini "Azure Virtual Provisioning Tool" üzerinden gerçekleştirirken, her sanal makine yaratma süreçlerinin detaylarına isterseniz "Provisioning Details" butonu üzerinden anlık olarak takip edebilir ve isterseniz işlemleriniz devam ederken yeni bir süreç başlatabilirsiniz.

Aşağıdaki örnek incelemesinde, Storage Account seçildikten Sanal Makine Instance Size tipi, disk ve network içerisine ekleme ve oluşturulacak sanal makine sayısı belirtilerek "Deploy to Azure" butonuna basmanız yeterlidir. Virtual Machine Count kısmına girilen bilgi "4" olarak belirlenmiştir. Verilen Cloud Service adından başlayıp yaratmak istediğiniz sanal makine sayısı kadar verilen ismin sonuna rakam eklenerek oluşturma işlemi başlayacatır.

063015_2015_AzureVirtua2.png

"Deploy to Azure" butonuna bastıktan sonra, Provisioning Details butonu sayesinde talep ettiğiniz sanal makine veya makinelerinizin oluşturma işlemlerinin durumunu görüntüleyebilirsiniz.

063015_2015_AzureVirtua3.png

Son olarak Azure Portal üzerinden sanal makinelerimizin durumlarını görüntüleyelim.

063015_2015_AzureVirtua4.png

Download

· 4 min read

Preview Portal ile birlikte hayatımıza giren en dikkat çekici özellik, Azure üzerinde barındırılan kaynaklarınızın yönetimi için yeni bir yöntem olan Resource Manager ortaya çıkmıştır. Azure Resource Manager kendi içerisinde iki kısımdan oluşmaktadır.

  • Resource Group
  • Resource Group Template

RESOURCE GROUP

Resource Group ile artık Azure üzerinde hizmet veren kaynaklarınızı mantıksal birim içerisine alarak görüntüleyebilirsiniz. Aşağıdaki görseldeki örnekteki (VM, Storage, Database) gibi kaynakları oluşturan mantıksal birimlere Resource Group denir. Bu mantıksal birimleri eski portal üzerinden görme şansınız bulunmamaktadır. Resource Group oluşturmamızın diğer sebepleri ise, kaynaklarınızı mantıksal bir grup içerisine alarak, örneğin tek bir Azure Subscription altında bulunan müşterileriniz, şirketinizde bulunan departmanlar veya Azure kaynakları ( VM, Database, Storage, Web App ) bazında Resource Group içerisine alarak kolay bir şekilde yönetebilirsiniz. Bu sayede Resource Group Azure üzerinde kullanılan kaynakların fatura bilgilerini, servis durumunu ve maliyet yönetimi kolaylıkla sağlayabilirsiniz. Biraz daha derinleştirelim, yapınızda birçok Resource Group var bunların içerisindeki kaynaklarınızı diğer Resource Group içerisine taşıyabilir veya tek tıklama ile seçtiğiniz Resource Group içerisindeki kaynaklarınızı Azure içerisinden kolayca silebilirsiniz.

072715_1837_AzureResour1.png

Resource Group ile gelen özellikler

  • Role Based Access Control
  • Tags
  • Audit Logs
  • Resource Locks

ROLE BASED ACCESS CONTROL

Resource Group oluşturmamızın diğer avantajı ise, Azure içerisinde Resource Group bazında Role Based Access Control yetkisi verebiliyoruz.

TAGS

072715_1837_AzureResour2.png

Resource Group veya Resource atanan "Tag(etiket)" sayesinde yönetimde büyük kolaylıklar sağlamaktadır. Artık kaynaklarınızı çağırırken ve aksiyon alırken atamış olduğunuz etiket adıyla çağırmanız yeterli olacaktır. Bu özellikte kısıtlamalar bulunmakta hemen ondan bahsedelim. Resource başına 15 adet "Tag(etiket)" atayabilmekteyiz. Azure üzerinde izlenen "Tag" yapılandırmasından inceleyelim.

  • Ortam bazında etiket ( Dev / Test / Prod )
  • Role bazında etiket ( Web Server, Database )
  • Departman bazında etiket ( Finans, Satış, IK )
  • Sorumlu kişi bazında etiketleme (ITPersonel1, ITPersonel2)

AUDIT LOGS

Oluşturduğunuz Resource Group'lar için Role Based Access Control ile yetki devri yaptığınızı varsayalım. Bu yetki devrinden sonra Audit Log'lar ile Resource Grouplar üzerinden yapılan işlemleri görebilirsiniz. Varsayılan olarak açıktır. Log içeriğini görüntülemek için Powershell ihtiyacımız bulunmaktadır.

RESOURCE LOCKS

Active Directory tarafında objelerin yanlışlıkla silinmemesi için korumaya aldığımız gibi, aynı yapıyı Azure Resource Group içerisindeki kaynaklar içinde kullanabiliyoruz. Kaynaklarımızın hatalı bir şekilde silinmemesini sağlayabiliriz.

Resource Group yönetmek için Preview Portal, Powershell, Azure CLI ( Mac, Linux, Windows),veya REST API kullanılabilir. Yazımızın içerisinde Preview Portal ve Powershell üzerinden örnekler gerçekleştireceğim. Artık Preview Portal üzerinde oturum açıp ilk Resource Group oluşturma işlemlerine başlayalım. Browse bastığınız zaman "Resource Group" listesini göreceksiniz. Add butonu ile yeni bir Resource Group yaratmak için Resource Group Name ve Region belirleyip oluşturalım. Alt kısımda ise Pin to Startboard seçili olarak gelmekte bu ise oluşturduğumuz Resource Group içerisine kolayca ulaşmak için Preview Portal başlangıç sayfasına bağlayabilirsiniz.

072715_1837_AzureResour3.png"Create" butonunu tıkladık, Resource Group oluşturma işlemi bittikten sonra, Preview Portal başlangıç sayfasına dönelim ve kontrol edelim.

072715_1837_AzureResour4.png"BAResourceGroup" olarak oluşturduğum Resource Group Preview Portal ana sayfasında görmekteyim. "BAResourceGroup" üzerine gelip tıkladığınız zaman oluşturduğunuz Resource Group detayları aşağıdaki gibi karşımıza gelmektedir.

060515_2032_AzureResour4.pngYukarıda "Summary" kısmında görüldüğü gibi yeni oluşturduğumuz Resource Group içerisinde herhangi bir kaynak bulunmamaktadır. "Settings" butonuna basarak Resource Group ile ilgili yazımızın başında bahsettiğimiz RBAC ayarlarını yani Resource Group yönetimini başka bir çalışana devretmek için Users kısmından gerçekleştirebilirsiniz. Bununla beraber, Properties Resource Group yapılandırma ayarlarınızı ( Region, Subscription) bilgilerini, Tags kısmında ise kaynaklarınıza etiket vererek verilen Tag adı ile çağırma şansına sahip olursunuz. Unutmayalım, Audit Logs ve Resource Locks Powershell ile yönetebilmektedir.

072715_1837_AzureResour5.pngOluşturulan Resource Group içerisinde "Add" butonuna tıklayarak, yeni bir kaynak ekleyebilirsiniz. Eklenen kaynaklar(VM, Web Site, Database, Storage) ile ilgili bazı kurallardan bahsedelim.

  • Her kaynak sadece bir Resource Group içerisine üye olabilir.
  • Herhangi bir kaynak istenildiği zaman Resource Group içerisinden çıkartılabilir veya başka bir Resource Group içerisine eklenebilir.( Powershell ile yapılıyor.)
  • Resource Group farklı Region üzerinde hizmet veren kaynakları üye olarak alabilir.

Resource Group içerisine girdiğimiz zaman "Summary" kısmında ise, Peers ve Linked Resources kısımlarını görmekteyiz.

Peer Resources: Resource Group içerisinde tutulan kaynakların listelendiği yerdir.

Linked Resources: Resource Group içerisinde bir web sitesi olduğunu düşünelim ve bu web sitesi Database kullanması gerektiğini ve bu Database sunucusu başka bir Resource Group içerisinde olsun. Farklı Resource Group içerisindeki kaynaklar ilişki içerisinde olsun. İşte böyle bir durumda başka Resource Group üzerinden kullanılan kaynaklar örnekte verdiğimiz gibi (Website + Database) linked Resources kısmında gözükecektir.

Resource Group içerisine ben bir adet sanal makine ekleyerek sizlere yazımızın başında bahsettiğimiz Servis durumunu ve fatura detaylandırmasını detaylarına beraber bakalım.

072715_1837_AzureResour7.png

Yukarıda görüldüğü gibi Resource Group içerisinde Monitoring ve Billing detaylarını görebiliriz. Resource Cost kısmına bakacak olursak Resource Group içerisine eklemiş olduğum bir sanal makinem bulunmakta ve bunun bana maliyet detaylarını göstermektedir. Resource Group içerisine ekleyeceğiniz tüm kaynaklarınızın size yansıyan maliyet detaylarını bu ekrandan kontrol edebilirsiniz.

· 4 min read

Mayıs ayı içerisinde Microsoft bizlere niyahet Azure üzerinde DNS Servisinin Preview olarak duyurdu. Artık Azure üzerinde Public DNS hizmeti alabileceğiz. Amazon içerisinde bu hizmet uzun süredir var. Şimdilik bu yeni gelen özelliği kullanmak için sadece Powershell ile gerçekleştirebiliyoruz.

DNS Hizmeti ile beraber yakın zamanda eklenecek olan özellikler ise,

  • DNSSEC Support
  • Traffic Manager ile beraber biçimde çalışma
  • Office 365 içerisine custom domain ekleme işlemleri
  • Azure Portal üzerinden yönetim arayüzü

Azure DNS servisini Powershell üzerinden yöneteceğimiz için Azure Powershell Modülünü güncellememiz gerekmektedir. GitHub üzerinden en güncel Azure Powershell modulü aşağıdaki linkte mevcuttur.

https://github.com/Azure/azure-powershell/releases

Azure Powershell Modülünü kurduktan sonra versiyon kontrol için aşağıdaki komutlar size yardımcı olacaktır.

052715_1022_AzureDNSPre1.png

Yapacağımız işlemleri sırasıyla özetleyelim.

  • Powershell içerisine Azure hesabının eklenmesi
  • Azure DNS önizleme sürümüne kaydolmak ( Preview Feature ekranı veya Powershell ile yapılabilir.)
  • Resource Group oluşturması ( Azure içerisinde mevcut Resource Gruplar kullanılabilir.)
  • Zone oluşturulması ve Registrar(tescil edilen firma) tarafında Name Server(NS) kayıtlarının güncellenmesi

Powershell içerisine Azure hesabınızı eklemek için Blog üzerinde daha önce detaylı bir yazı paylaşmıştım. Hızlıca tekrardan bahsedelim. "Add-AzureAccount" cmdlet kullanarak karşımıza gelen kısımda Subscription bilgileri ile Powershell içerisine Azure hesabımızı ekleyebiliriz.

052715_1022_AzureDNSPre2.png

Azure DNS Preview servisini kullanmak Preview Feature sayfasından bunu aktif etmeniz için aşağıdaki adresten başvuru yapmanız gerekmektedir.

http://azure.microsoft.com/en-us/services/dns/

Yukarıdaki işlemi dilerseniz Powershell ile gerçekleştirme şansınız bulunmaktadır. Azure Powershell Modülünü ResourceManager Moduna çekmeniz gerekmektedir. Bu sayede Provider ile ilgili cmdlet karşımıza gelecektir.

052715_1022_AzureDNSPre3.png

# Azure Powershell Modül ResourceManager moduna almak Switch-AzureMode AzureResourceManager

Register işlemleri

Register-AzureProvider -ProviderNamespace Microsoft.Network -Force Register-AzureProviderFeature -ProviderNamespace Microsoft.Network -FeatureName azurednspreview -Force

Registration durumunu görüntüleme

Get-AzureProviderFeature -ProviderNamespace Microsoft.Network -FeatureName azurednspreview

Powershell içerisine Azure hesabımızı tanıttık, DNS Preview özelliğini kullanmak için ister Preview Feature sayfasından veya yukarıda görüldüğü gibi Powershell ile başvuru yapabiliyoruz. Yukarıdaki en son Powershell komutu ile yapılan DNS Preview servisi için RegistrationState kısmını ekrana getirdim. Eğer yeni başvuru yapsaydınız yaklaşık 24 saat içerisinde aktif hale gelecekti. Preview Feature sayfasından veya Powershell ile yapılan başvuruları buradan kontrol etmeniz gerekmektedir. Sebebi ise henüz DNS Preview servisini Azure Portal üzerinden göremiyoruz.

DNS Preview başvurusunun "Registration State" kısmını "Registered" gördükten sonra, artık DNS Zone tanımlamasını Azure DNS Servisi içerisinde yapalım. Yazımızın başındaki adımlarda belirttiğimiz gibi, DNS Zone oluşturmanız için Azure içerisinde mevcut yada yeni bir Resource Group yaratmalısınız.

Yeni bir Resource Group yaratmak için yine Azure Powershell Modulünü ResourceManager modunda ve kullanmanız gereken cmdlet

"New-AzureResourceGroup –Name ResourceGroupName –Location AzureRegion" şeklinde olmalıdır.

New-AzureResourceGroup –Name BAResourceAzure –Location 'West Europe'

052715_1022_AzureDNSPre4.png

Azure üzerinde artık DNS Zone yaratma işlemine geçelim. Unutmamız gereken nokta var, Azure DNS Servisi içerisine Zone yarattığımız zaman bizlere Name Server (NS) ve Start of Authority (SOA) iki adet kayıt oluşturacak. Bu kayıtlar bizlere Windows Server içerisinde DNS hizmeti içerisinde Zone oluşturduğumuz zamanda gelmektedir. Name Server(NS) kayıdı içerisinde DNS Sunucu bilgileri var ve biz bu isimleri alıp Alan adımızı Registrar ettiğimiz yani tescil ettiğimiz firma üzerinden Azure DNS Server adresimizi göstermemiz gerekmektedir.

Azure DNS Servisi içerisine Zone eklemek için ilgili cmdlet "New-AzureDNSZone –Name domainname –ResourceGroup ResourceGroupName" şeklinde olmalıdır.

New-AzureDNSZone –Name hasangural.com –ResourceGroup BAResourceAzure

052715_1022_AzureDNSPre5.png

Zone ekleme işlemi bitti, artık Zone oluştururken Name Server (NS) ve Start of Authority (SOA) kayıtlarımızı gösterelim. Bunun için kullanacağımız cmdlet,

"Get-AzureDnsRecordSet -ZoneName domainname -ResourceGroupName ResourceGroupName -RecordType Kayıttipi(NS – SOA – A – SRV )"

Not: RecordType parametresini kullanmaz iseniz DNS zone içerisindeki tüm kayıtlar listelenir.

Get-AzureDnsRecordSet -ZoneName hasangural.com-ResourceGroupName BAResourceAzure -RecordType NS

052715_1022_AzureDNSPre6.png

Oluşturduğum Zone içerisinde bu Domain Adına hizmet veren DNS Server listesi yukarıdaki çalıştırdığım cmdlet sayesinde görmekteyim. Artık yapmam gereken sadece, Registrar arayüzünden (CPanel) içerisinden bu alan adı için belirtilen DNS Serverları kullanmam gerektiğini belirtmem gerekiyor.

052715_1022_AzureDNSPre7.png

Yukarıdaki gibi artık hasangural.com için Azure DNS Serverlarını kullanacağımı belirttim. Artık hasangural.com için Azure DNS hizmet veriyor. DNS Hizmetimizin başarılı bir şekilde çalıştığını anlamak için test amaçlı bir tane Resource Record kayıdı oluşturalım. Host (A) kayıdı oluşturup ve daha sonra bunu doğrulamasını gerçekleştirelim.

Azure üzerinde Zone içerisine Resource Record ( A, MX, SRV, PTR, TXT) kayıtlarını eklemek için kullanacağımız cmdletler, "New-AzureDnsRecordSet, Add-AzureDnsRecordConfig, Set-AzureDnsRecordSet" bunların hepsini pipeline süreci içerisinde kullanmamız gerekmektedir.

New-AzureDNSRecordSet -Name azuredns -RecordType A -ZoneName hasangural.com -TTL 360 -ResourceGroupName BAResourceAzure ` | Add-AzureDnsRecordConfig -Ipv4Address '4.5.6.7' ` | Set-AzureDnsRecordSet

052715_1022_AzureDNSPre8.png

Azuredns.hasangural.com adında bir Host(A) kayıt eklendi ve ip adresi olarak "4.5.6.7" olarak gösterdik. Şimdi ise eklediğimiz Host(A) kaydının Azure DNS üzerinden hizmet vermediğinin  doğrulamasını yapalım. Bu kısımda dilerseniz Powershell yada Nslookup kullanabilirsiniz.

052715_1022_AzureDNSPre9.png

Son kısmımızda ise yukarıda yapmış olduğum "azuredns.hasangural.com" Host(A) kayıdı için cevap veren sunucunun Azure DNS Serverlarının isimlerini görmekteyim.

· 4 min read

Azure Active Directory alışıla gelmiş On-Premises yapımızda bulunan Windows Server Based Active Directory ile birçok ortak özellikleri ve benzerlikleri vardır. Azure Active Directory ve Windows Server Directory Services içerisinde kullanılan x-500 Based dizin hizmeti mimarisi aynıdır. Fakat Azure Active Directory içerisinde federasyon desteği ile bizlere kolaylık sağlamaktadır. Ayrıca Azure Active Directory Multi Factor Authentication (iki veya daha fazla yöntem kullanılarak kimlik doğrulaması) desteği vardır.

050215_1300_AzureActive1.png

Yukarıdaki resimde görüldüğü gibi Active Directory kullanım ve dağıtım süreçlerinin üç kısımda inceleyebiliriz.

  • On-premises Active Directory
  • On-premises Active Directory on an Azure VM
  • Azure Active Directory

1-) On-premises Active Directory

Bir kurum içerisinde Windows Server Based işletim sistemi üzerine fiziksel veya sanal sunucu farkı olmaksızın kurabildiğimiz dizin hizmetidir. Windows Server ailesinin Active Directory yaygın ve öncelikli bir hizmet olarak kabul edilir. Active Directory Dizin hizmetleri içerisinde Active Directory sadece bir bileşenidir. Active Directory ile beraber Active Directory Certificate Services (AD CS), Active Directory Lightweight Directory Services (AD LDS), Active Directory Federation Services (AD FS), and Active Directory Rights Management Services (AD RMS) hizmetlerini kullanabilirsiniz.

Azure Active Directory (AAD) ile AD DS karşılaştırıldığında, AD DS için aşağıdaki kullanım özelliklere dikkat edilmesi önemlidir.

  • AD DS X.500 based hiyerarşik yapısı ile gerçek bir dizin hizmetidir.
  • AD DS öncelikle kimlik doğrulama için Kerberos kullanır.
  • AD DS etki alanı içerisinde kaynakları bulmak için DNS kullanır.
  • AD DS sorgulamaları Lightweight Directory Access Protocol (LDAP) aracılığıyla ile çağırır.
  • AD DS organizational units (OU) ve yönetim için ise Grup Policy nesnelerini (GPO) kullanır.
  • AD DS ortamına herhangi bir sunucu veya bilgisayar etki alanı içerisine ekleyerek yönetebilirsiniz.

2-) On-premises Active Directory on an Azure VM

On-Premises içerisinde çalışan, Windows Server tabanlı Active Directory hizmeti Azure üzerindeki bir Virtual Machine ile çoğaltma ve dağıtma işlemleri gerçekleştirebilir. Bu bizlere kurum içerisinde AD DS hizmetini ölçeklenebilirlik ve yüksek erişebilir bir yapı sağlamak için yol olabilir. Genellikle On-Premises içerisinde bulunan Domain Controller için disaster recovery senaryosu için Azure üzerindeki bir sanal makine içerisinde Domain Controller(s) yapılandırılabilir ( En az 2 tane önerilir). Herhangi bir felaket durumu olduğu zaman ilgili roller taşınır ve hizmetler kesintisiz çalışması sağlanmaktadır. Azure üzerinde bir Windows Active Directory hizmetini barındırmak için disk yapılandırmasını dikkat etmemiz gerekiyor. AD DS hizmetinin Database, Log, Sysvol parçalarını Azure içerisindeki sanal makinada barındırabilmek için veri diskleri eklenmesi ve disklerin kesinlikle "Host Cache Preference" özelliğinin "None" olarak belirlenmesi gerekmektedir. Bkz

Extend Active Directory to Microsoft Azure olarak adlandırdığımız bu işlem, Active Directory Site and Services içerisinde gerekli Site, Subnet ve Site IP link tanımlamalarının tamamlanması gerekmektedir. Bununla beraber extend işleminin failover için FSMO rolleri ve Global Catalog özelliklerinin hangi sunucular üzerinde olacağının iyi belirlenmesi gerekiyor. Daha sonra ise aşağıdaki gibi sırasıyla işlemler yapılır ve Disaster Recovery için bir çözüm elde edilmiş olur.

050215_1300_AzureActive2.png

3-) Azure Active Directory

Azure Active Directory (AAD) ve On-Premises(kurum içi) Active Directory, birçok benzerlik olmasına rağmen, aynı zaman birçok farklılıklar vardır. Azure Active Directory (AAD) kullanmak için Azure içerisinde bir Virtual Machine içerisine Domain Controller kurulumu yapmanıza gerek yoktur.

AD DS ile AAD karşılaştırıldığında, Azure Active Directory (AAD) aşağıdaki kulanım özelliklere dikkat edilmesi önemlidir.

  • AAD öncelikle bir kimlik çözümü ve HTTP (port 80) ve HTTPS (port 443) iletişim kullanarak Internet tabanlı uygulamalar için tasarlanmıştır.
  • AAD kullanıcıların ve gruplar oluşturulabilir, fakat Windows Server Based Active Directory gibi organizational units (OU) ve yönetim için Group Policy Object mimarisi yoktur.
  • AAD sunucu ve bilgisayar etki alanı içerisine dahil edilmesini desteklemez.
  • AAD LDAP aracılığıyla ile direk sorgulamalar yapılamaz, bunun yerine HTTP ve HTTPS üzerinden REST API kullanır.
  • AAD Kerberos kimlik doğrulamasını kullanmaz, bunun yerine kimlik doğrulaması için HTTP veya HTTPS üzerinden gerçekleşir. Arka tarafta kullanılan SAML, WS-Federasyon ve Open ID Connect protokollerini kullanır ( Authorization için ise OAuth).
  • AAD birçok third party uygulama ile federasyon içerisindedir. Azure Active Directory (ADD) şifreniz ile federasyon içinde olduğunuz uygulamalara erişebilirsiniz. Örnek; Facebook, Dropbox for Business, SalesForce

· 5 min read

Azure üzerinde barındırdığımız hizmetlerimiz ile On-Premises yapımızın aynı network içerisindeymiş gibi iletişim halinde olmalarını sağlamak için Site to Site VPN teknolojisini kullanıyoruz. Son kullanıcı olarak Azure ile VPN yaparken ise Point to Site VPN ile erişim sağlayabiliriz. Bu yazımızda Azure içerisinde farklı bir konu olan VNet to VNet VPN kapsamından ve senaryodan bahsetmek istiyorum.

Tüm VPN yöntemlerini açıklayan resim aşağıda bulabilirsiniz.

042115_1846_Configuring1.png

Azure üzerinde birden fazla Virtual Network yapınız var, bunları kullanan Sanal Makinelere sahipsiniz ve birbirleriyle VPN yaparak aynı network içerisindeymiş gibi iletişim haline geçmesini istiyorsunuz. Biraz daha konuyu derinleştirirsek, farklı Azure Data Center üzerinde tutulan sanal sunucularınız var. ( Örneğin; West-US - East US)

Yukarıdaki detayı biraz daha genişletelim. İki farklı "Azure Subscription" arası bu yöntemi kullanarak farklı Microsoft Azure Hesapları içerisindeki Virtual Network yapılarını aynı network içerisindeymiş gibi iletişim halinde olmalarını sağlayabilirsiniz.

Yazımızın başında belirtmiş olduğumuz gibi biz Azure üzerinde farklı Data Center üzerinde barındırdığımız sanal sunucularımızın birbirlerine erişmeleri için, VNet to VNet VPN yöntemini gerçekleştireceğiz. Aşağıdaki resimde gerçekleştireceğimiz senaryomuz bulunmaktadır.

042115_1846_Configuring2.png

Yapımızı anlamak için Azure Portal içerisinden Network kısmına göz gezdirelim.

042115_1846_Configuring3.png

Görüldüğü gibi iki adet Virtual Network(VNet) yapılandırmamız bulunmakta, ve bu Virtual Network'leri kullanmaktalar.

042115_1846_Configuring4.png

Azure Portal İçerisinden "Virtual Machines" kısmına girdiğimde Location kısmına dikkat edelim, Sanal Makinemi oluştururken seçmiş olduğum Virtual Network ( VNet ) sayesinde ilgili Azure Data Center içerisinden oluşturulmasını ve hizmet vermesini sağlamış durumdayım. Şimdi ise Virtual Network (VNet) içerisindeki IP Aralıklarını görelim. Bunu dilerseniz, Portal üzerinden de bakma şansınız var. Ben Powershell ile daha kolay olduğu için tercih ettim. VNET İsmi, Lokasyonu ve Adres aralığını görmekteyiz.

042115_1846_Configuring5.png

Network bilgilerimizi öğrendik. Azure ile On-premises yapınızı birbirine bağlamak için Site to Site VPN yöntemini yapılandırırken, On-Premises Network bilgilerimi Azure Portal içerisine eklememiz gerekiyor. Aynı şekilde bizde VNet to VNet VPN yapabilmemiz için Azure Portal üzerinden Networks kısmında Virtual Network (VNet) adreslerini Local Network olarak tanıtmamız gerekiyor. Bunun sebebi ileride VNet to VNet VPN kurarken, VPN yapılacak karşı tarafın, "Local Network" adresini belirtmemiz gerekiyor.

New Butonuna basıktan sonra, "Virtual Network" içerisinden "Add Local Network" tıklayarak Virtual Network(VNet) içerisinde tanımla olan IP aralıklarını girelim. İlk olarak "AzureVNet – East US" isimli Virtual Network'ün IP Adres aralığını tanıtıyorum.

042115_1846_Configuring7.png

Name alanında oluşturacağım "Local Network" için bir isim vermem gerekiyor. Bu isimlere dikkat edelim, çok fazla "Local Network" ile çalışınca karmaşık bir yapıya yol açabiliyor. Benim vermiş olduğum isim Virtual Network adresimin yanına "Local Network" prefix ekledim. "VPN Device IP Adress" kısmına şimdilik "temp" bir adres girmem gerekiyor. Sebebi ise karşılıklı VNet to VNet VPN yapacağımız için iki tarafta bir Gateway Adresi oluşturma işlemimizi henüz gerçekleştirmedik. Bu adımları ilerde beraber yaptıktan sonra bu kısmı tekrar güncellemesini yapıyor olacağız.

042115_1846_Configuring8.png

"AzureVNet –East US" isimli Virtual Network'ün Local Network IP Adres aralığını tanıtıyorum. VNet adres aralıkları için Powershell çıktısına tekrardan bakabilirsiniz.

042115_1846_Configuring9.png

"Complete" butonuna basıktan sonra, Local Network oluşturma işlemini tamamladım. Tekrar Aynı şekilde "AzureVNet – West Europe" isimli Virtual Network'ün IP Adres aralığını tanıtıyorum. Yukarıda belirtmiş olduğum gibi Name alanına "Local Network" prefix ekleyerek devam ediyorum. "VPN Device IP Adress" kısmına yine bir "temp" adres belirtiyoruz.

042115_1846_Configuring10.png

"AzureVNet –West Europe" isimli Virtual Network (VNet) içerisinde kullanılan IP Adres aralığını tanıtıyorum.

042115_1846_Configuring11.png

"Complete" butonuna basıyorum ve artık Azure içerisindeki tüm Virtual Network'ler(VNet) için "Local Network" tanımlamalarını tamamladık. Artık VNet to VNet VPN işlemleri başlatmak için, Azure Portal üzerinden her iki Virtual Network(VNet) ayarlarına girip, VPN kurmak istediğimiz karşı Virtual Network(VNet) için tanıtmış olduğumuz "Local Network" adını seçmemiz gerekiyor. İstediğiniz Virtual Network(VNet) içerisine girip, ("AzureVNet – East US" olarak başladım.) "Configure" tabına gittiğiniz zaman "Connect to the local network" seçerek bağlantı kurmak istediğimiz "Local Network" seçiyoruz. Daha sonra "Virtual Network Adress Spaces" kısmında ise "Add Gateway Subnet" kısmına tıklayarak ileride oluşacak Gateway adresimiz için bir subnet ekliyoruz.

042115_1846_Configuring12.png

"Save" Butonuna tıklayıp yaptığımız ayarlarımızı kaydediyoruz.

042115_1846_Configuring13.png

Aynı işlemleri diğer Virtual Network(VNet) için gerçekleştirelim. "AzureVNet – West Europe" isimli Virtual Network(VNet) içerisine girip "Configure" tabına giriyorum. Connection kısmında bulunan "Connect to the local network" butonunu tıklayıp, VPN yapmak istediğim ve tanıtmış olduğum "Local Network" bilgilerini seçiyorum. Yukarıda gerçekleştirdiğimiz gibi "Gateway" subnet ihtiyacımız bulunmaktadır. "Add Gateway Subnet" kısmına tıklayarak ileride oluşacak Gateway adresimiz için bir subnet ekliyoruz.

042115_1846_Configuring14.png

"Save" Butonuna tıklayıp eklemiş olduğumuz ayarları kaydediyoruz. Artık Azure içerisin de bulunan tüm Virtual Network(VNet) için VPN yapmaları gereken Local Network adreslerini belirtip ve Gateway oluşturmaları için subnet ekleme işlemlerini tamamladık. "AzureVNet – East US" isimli Virtual Network içerisine girelim ve artık VPN yapabilmemiz için Gateway adresi oluşturmamız gerekiyor. Hatırlarsanız yukarıda, Gateway Subnet oluşturmuştuk. Bu sayede bizlere bu aralık içerisinden Gateway adresi oluşturacak ve Public IP üzerinden iki farklı Virtual Network(VNet) birbirleriyle görüşecekler."Static Routing" ve "Dynamic Routing" olarak iki adet farklı Gateway ekleme şansınız bulunmaktadır. Baktığınız zaman bu seçenekler karşı taraftaki cihazın özellikleri ile seçilen bir alandır. "Static Routing" seçtiğimiz zaman sadece "Site to Site VPN" işlemini gerçekleştirebilirsiniz. "Dynamic Routing" seçtiğiniz zaman tüm senaryoları destekliyor. Bununla beraber "Static Routing" Security protokolü olarak "IKEv1" kullanmaktadır. Dynamic Gateway ise "IKEv2" protokolünü kullanmaktadır. Daha detaylı bilgiyi ilgili sayfada bulabilirsiniz.

https://msdn.microsoft.com/en-us/library/azure/jj156075.aspx

· 4 min read

Yazımızın ikinci bölümüyle devam ediyoruz. "Create Gateway" kısmına gelip "Dynamic Routing" tıklayarak Gateway adresi oluşması için yaklaşık olarak 30-40 dakika beklememiz gerekiyor. Bu Virtual Network(VNet) için bizlere VPN tünelinin oluşmasını sağlayan Public IP ataması gerçekleşecektir.

042115_2019_Configuring1.png

İki ayrı Virtual Network birbirine VPN yapacakları için her iki tarafında "Gateway" adresine ihtiyacı bulunmaktadır. "AzureVNet – West Europe "için de aynı şekilde "Dynamic Routing" tıklayarak gateway oluşturmasını sağlıyorum.

042115_2019_Configuring2.png

Gateway adresin oluşması için bir süre geçtikten sonra, "AzureVNet – East US" içerisine girelim ve Gateway IP Adresi oluşmuş durumdadır.

042115_2019_Configuring3.png

Diğer Virtual Network ("AzureVNet – West Europe") içerisine girip, Gateway IP Adresinin tanımlandığını görmekteyim. Bu Gateway IP Adreslerini yazımızın ilk başlarında "Local Network" tanımlarken "VPN Device Address" kısmı bulunmaktaydı. Biz bu adresi "temp" olarak nitelendirmiştik. Sebebi ise ilgili Virtual Network içerisine VPN yapabileceğimiz Gateway IP Adresini henüz oluşturmamıştık.

042115_2019_Configuring4.png

Her iki VNet'in Gateway IP Adreslerini not alıp artık "temp" olarak girilen "Local Network için güncellemesini gerçekleştirelim. Azure Portal içerisinden "Networks" tabında gelip, "Local Networks" kısmına girdikten sonra, düzenlemek istediğiniz ilgili "Local Network" üzerine gelip "Edit" butonuna basalım. "VPN Device Adress" kısmına ise girmiş olduğumuz "temp" adresini silip oluşan ilgili Virtual Network (VNet) için oluşan Gateway IP Adresini girerek güncellemeniz gerekmektedir.

Aşağıda görüldüğü gibi güncellemeleri gerçekleştirdim. Azure üzerinden bu "Local Network" ile herhangi bir bağlantı "Site to Site VPN" ya da "VNet to VNet VPN" yapılmak istenirse, VPN Device Adresi üzerinden erişim sağlanacaktır.

042115_2019_Configuring5.png

Tanımlı olan "Local Networks" için "VPN Device Address" güncellemesi yaptıktan sonra, "Site to Site VPN" ile hiç ilgilendiyseniz orada Vendor göre bizlere hazır yapılandırma dosyaları indirmektedir. Fakat biz Azure içerisinde "VNet to VNet VPN" yapacağımız için, herhangi bir yapılandırma (Powershell script, config dosyası) indirip çalıştırmayacağız. Azure içerisinde VPN yaptığımız için böyle bir durumumuz yok. "Site to Site VPN" için yapılandırma dosyalarının(Powershell Script, Config) içerisinde kullanılan güvenlik protokolleri sebebiyle erişim için "Pre-Shared key" bilgileri saklanmaktadır. Şimdi biz de iki farklı VNet için oluşturduğumuz Gateway adreslerine "Pre-Shared key" tanımlaması gerçekleştirerek birbirleriyle bağlantı kurarken karşılıklı doğrulamaları gerekiyor. Bu kısımda yardımımıza Powershell koşuyor. Azure Powershell ile kullanacağımız cmdlet sayesinde belirtiğimiz Virtual Network (VNet) için şu "Local Network" içerisine giderken belirtilen "Pre-Shared key" tanımlamasını yapabiliriz. Azure Powershell yükleme ve hesap tanıtmak için bu yazım sizlere yardımcı olacaktır.

Set-AzureVNetGatewayKey

–VnetName (VirtualNetworkAdı)

–LocalNetworkSiteName(VPNYapılacakLocalNetworkAdı)

–sharedKey (Paylaşımlı Anahtar) şeklinde bu cmdlet kullanabilirsiniz.

#region Set-AzureVNetGatewayKey Pre-sharedkey Set-AzureVNetGatewayKey -VNetName 'AzureVNet - East US' -LocalNetworksiteName 'AzureVNet - West Europe - Local Network' -sharedKey bilgeAdamPass

Set-AzureVNetGatewayKey -VNetName 'AzureVNET - West Europe' -LocalNetworksiteName 'AzureVNET - EastUS - Local Network' -sharedKey bilgeAdamPass #endregion

Sadece VNet to VNet VPN yaparken birbirlerine bağlantı yapılacak Virtual Network(VNet) için Gateway adreslerine "Pre-Shared Key" atanması gerekiyor.

042115_2019_Configuring6.png

Powershell üzerinden VNet to VNet VPN yapılabilmesi için Pre-SharedKey atamasını gerçekleştikten sonra, VPN bağlantısını aktif etmemiz için isteğinize bağlı olarak herhangi bir Virtual Network(VNet) içerisine girip "Connect" butonuna basmanız yeterli olacaktır.

042115_2019_Configuring7.png

Bağlantı kurulmaya başlıyor. Bu işlem bittikten sonra, "Dashboard" sekmesine gelip arada bağlantı ve giden gelen trafiği görebilirsiniz. Artık Azure içerisinde bulunan "AzureVNet – West Europe" ve "AzureVNet – East US" adındaki farklı Azure DataCenter da bulunan Virtual Network(VNet) yapısı birbiriyle VNet to VNet VPN sayesinde erişim sağlanabilir.

042115_2019_Configuring8.png

Dilerseniz Powershell ile bağlantı durumunu kontrol edebilirsiniz.

"Get-AzureVNetConnection" cmdlet ile Virtual Network (VNet) adını göndererek, kolayca bağlantı durumu hakkında rapor alabilirsiniz.

#region Check VNet to VNet Connection Status Get-AzureVNetConnection -VNetName "AzureVNet - East US" | ft LocalNetworkSiteName, ConnectivityState

Get-AzureVNetConnection -VNetName "AzureVNET - West Europe" | ft LocalNetworkSiteName, ConnectivityState #endregion

042115_2019_Configuring9.png

Son olarak yazımızın başında belirtmiş olduğum iki adet Virtual Machine bulunmakta ve bunlar iki ayrı Virtual Network (VNet) içerisinden olduklarından dolayı Farklı Azure Datacenter içerisinde ve farklı IP aralıklarına sahiplerdi. Yaptığımız "VNet to VNet VPN" ile birbirleriyle iletişim haline geçebildiklerini görmek için ICMP paketi göndererek test işlemini gerçekleştirelim.

042115_2019_Configuring10.png

· 2 min read

Azure üzerinde hizmet veren Sanal Makinelerimize ihtiyaçlarımızdan  dolayı Static IP verilebiliyoruz. Bu işlemi gerçekleştirmek için bir çok yöntemler bulunmaktadır. Azure Preview Portal üzerinden isterseniz de Azure Powershell ile hesabınızı tanıtıp, istemiş olduğunuz Sanal Makinemize Static IP atamaları gerçekleştirebilirsiniz. Fakat bu işlemleri gerçekleştirirken hangi Sanal Makine Static yada Dynamic şimdilik bilemiyoruz. Azure Portal ve Preview Portal tarafında bu tarz bir rapor olmadığı için geliştirmiş olduğum Powershell Fonksiyonu sizlere yardımcı olacaktır.

Function : Get-AzureVMStaticIPList

AzureVMStaticIPList

function Get-AzureVMStaticIPList{ BEGIN{
try { Write-Host "Importing Azure PowerShell Module." -ForegroundColor Magenta Import-Module -Name 'Azure' -ErrorAction Stop Write-Host "Getting the list of all Azure VM" -ForegroundColor Magenta $VmList = Get-AzureVM -ErrorAction Stop #Select Default AzureSubscription $subs = Get-AzureSubscription | Where-Object IsDefault -eq $true Select-AzureSubscription -SubscriptionId $subs.SubscriptionId } catch { Write-Host "Exception Occured : $_.Exception" } } PROCESS{ $i = 1 $array= @() Write-Host "Exporting to Powershell Console" -ForegroundColor Magenta foreach ($vm in $VmList){ $ResultIP = $vm | Get-AzureStaticVNetIP $counter = $i++ $obj=New-Object PSObject $obj |Add-Member -MemberType NoteProperty -Name "SerialNumber" $counter $obj |Add-Member -MemberType NoteProperty -Name "Name" $vm.Name $obj |Add-Member -MemberType NoteProperty -Name "DNS Name" $vm.DNSName $obj |Add-Member -MemberType NoteProperty -Name "Instance Size" $vm.InstanceSize $obj |Add-Member -MemberType NoteProperty -Name "Internal IP" $vm.IpAddress if($ResultIP) { $obj |Add-Member -MemberType NoteProperty -Name "Static" "Yes" } else { $obj |Add-Member -MemberType NoteProperty -Name "Static" "No" } $obj |Add-Member -MemberType NoteProperty -Name "PublicIP" $vm.PublicIPAddress $array += $obj}
$array | Select-Object SerialNumber,Name,"DNS Name","Instance Size", ` "Internal IP",Static | Ft -AutoSize} END{ Write-Host "Script run finishes at : $(get-date)" } }

· 4 min read

Azure üzerinde hizmet veren sanal makinalarımızın on-premises ya da Azure içerisindeki sanal makinalar ile iletişim haline geçebilmesi için Virtual Network kullanmaları gerekmektedir. İhtiyacımızdan dolayı bazı durumlarda Sanal Makinamızın üye olduğu Virtual Network değiştirmeniz gerekmektedir. Bunu yapmanız için Azure Portal üzerinde direk müdahale ederek değiştirme şansınız bulunmamaktadır. Bu işlem için Sanal Makinamızın kapalı duruma getirip, Inventory içerisinden silip (Burası hatalı anlaşılmasın sadece sanal makinayı konsol üzerinden siliyoruz. Sanal makinamızın disk bilgileri duruyor.) tekrar sanal makinayı aynı disk üzerinden oluşturup, bu sefer oluşturduğumuz anda Virtual Network seçip bu sorunumuzu kolayca çözebiliriz. Sanal Makinamızın Virtual Network değiştirmemiz için bu işlem gerekiyor, yazımızın ilerleyen kısımlarında biraz daha derinlere inip, Virtual Network içerisinde oluşturulan "Subnet'ler" arası değişimleri de gerçekleştireceğiz.

Azure Portal üzerinde oturum açıktan sonra, hemen senaryomuzu anlamak için Virtual Network yapılandırmamıza göz gezdirelim.

041615_1818_AzureVMleri1.png

Yukarıda görüldüğü gibi iki adet VNET bulunmaktadır. Bu VNET IP-Subnet bilgileri aşağıdaki gibidir.

041615_1818_AzureVMleri2.png

041615_1818_AzureVMleri3.pngYukarıda görüldüğü gibi VNet olarak iki adet bulunmakta ve bunlar farklı IP-Bloklarını barındırmaktadır. Azure üzerinde hizmet veren sanal makinemin üye olduğu Virtual Network'ünü değiştirmek istiyorum. Hizmet veren sanal makinem, "AzureVNET – Branch-West Europe" Virtual Network içerisine dahil durumdadır. Yazımızın ilerleyen kısımlarında biz bu sanal makineyi "AzureVNET – HQ-West Europe" içeriğine dahil edip ilgili VNET üzerindeki aralıktan IP-Adresi almasını gerçekleştireceğim. Bu işlem için sanal makinemi Azure konsolu üzerinden kapalı duruma getirip sadece konsol üzerinden silip tekrar ekleyerek aşabiliriz. Sırasıyla yapmamız gerekenleri gerçekleştirelim.

041615_1818_AzureVMleri4.pngBu işlemi gerçekleştirmek için Sanal Makinenin kullandığı disk bilgilerini öğrenmemiz gerekiyor. Disk bilgilerine bakmak için sanal makinenin detaylarında görebilirsiniz.

041615_1818_AzureVMleri5.pngSanal makinamızın disk bilgilerini gördük. Şimdi ise dahil olduğu VNET detayları görelim. VNET olarak "AzureVNET – Branch-West Europe" içerisine dahil ve bu VNET içerisindeki "Branch-Subnet-1" aralığından IP adresi almış konumdadır.

041615_1818_AzureVMleri6.pngSanal makine Disk ve Virtual Network bilgilerimizi öğrendik. Artık Sanal makinamızı Azure Portal üzerinde kaldırabiliriz. Bu işlem için Sanal makine üzerine gelip, "Delete" kısmından "Keep the attached disk" seçerek sanal makinamızın konsol üzerinden silinmesini fakat disklerinin silinmemesini sağlıyoruz.

041615_1818_AzureVMleri7.pngKaldırma işlemi başlamış durumda artık, Sanal Makinamızın saklanan disk bilgileri ilgili Storage Account içerisinde tutulmaktadır.

041615_1818_AzureVMleri8.pngPortal üzerinden kaldırmış olduğumuz sanal makinamızı tekrar hizmet vermesini sağlayıp ve istemiş olduğumuz VNET içerisine ekleme işlemlerine sırasıyla bakalım. "New" Butonuna basıktan sonra "Virtual Machine" içerisinden "From Gallery" sanal makine oluştururken Microsoft bize sunduğu hazır Image Galerisi içerisinden, mevcut imajlarınız veya disklerinizden oluşturmasını sağlayabiliriz.

041615_1818_AzureVMleri9.png"From Gallery" seçtikten sonra, "My Disk" içerisinden konsol üzerinden sildiğimiz sanal makinemizin disk bilgilerini görmekteyiz. Bu disk seçip işlemlerimize devam edelim.

041615_1818_AzureVMleri10.pngSıfırdan bir sanal makine oluştururmuş gibi karşımıza adımlar gelmektedir. Sanal Makinenin adı, Size detayları girdikten sonra devam ediyoruz.

041615_1818_AzureVMleri11.pngBir sonraki adımda artık yapmak istediğimiz işlem karşımıza gelmektedir. Amacımız, Sanal makinemizin mevcut Azure üzerinde kullanmış olduğu Virtual Network (AzureVNET – Branch-West Europe) çıkartıp, farklı bir Virtual Network (AzureVNET – HQ-West Europe) içerisine geçerek ilgili IP aralığından adres almasını sağlamaktı.

041615_1818_AzureVMleri12.pngRegion/Affinity/Virtual Network seçeneğinde "AzureVNET – HQ-West Europe" Virtual Networkünü seçerek bu sanal makinemin bu VNET içerisinde olması gerektiğini ve Virtual Network Subnets kısmında ise bu VNET içerisindeki "HQ-Subnet-1" aralığından IP Adres almasını sağlıyoruz.

041615_1818_AzureVMleri13.pngComplete butonu tıklayıp, sanal makinemin tekrardan belirtmiş olduğun disk üzerinden açılmasını ve yeni VNET üzerindeki aralıktan IP Adres almasını görelim.

041615_1818_AzureVMleri14.pngVirtual Machines tabına gittiğimiz zaman Sanal makinemin açıldığını görmekteyiz. Sanal makinem açıldığı zaman Virtual Network üzerine "AzureVNET – HQ-West Europe" dahil olmalı ve ilgili aralıktan IP Adresi alması gerekmektir.

041615_1818_AzureVMleri15.png

Artık VNET değiştirmesini başarıyla gerçekleştirdik. Yazımızın başında dediğimiz gibi, Azure Portal üzerinden şimdilik bu şekilde Virtual Network değişimi gerçekleştirebiliyoruz. İlerleyen zamanlarda Portal içerisine bu değişim sürecinin ekleneceğini düşünüyorum.

Şimdi ise, Sanal Makinemizin üye olduğu VNET içerisinden almış olduğu Subnet değiştirme işlemini gerçekleştirelim. Bu işlem için aynı süreçleri yapmamıza gerek yok. Bu kısımda devreye Powershell giriyor. Powershell ile sanal makinemizin üye olduğu VNET içerisindeki Subnet'ler arası değiştirme işlemini gerçekleştirebiliyoruz.

Azure Powershell Module ve Azure Hesabınızı tanıtmak ile ilgili yazıları bu link bulabilirsiniz.

Azure hesabınızı ekledikten sonra, işlem yapmak istediğiniz Sanal Makinenizin "Cloud Service ve VM" adına ihtiyacınız bulunmaktadır. Bu bilgileri "Get-AzureVM" kullanarak öğrenebilirsiniz. Daha sonra pipeline süreci ile "Set-AzureSubnet" cmdlet içerisine gönderek Subnet değiştirme işlemini gerçekleştirebilirsiniz. En son olarak ise "Update-AzureVM" ile yapmış olduğunuz değişikliği güncelleyerek sanal makinenizin istediğiniz subnet içerisine dahil olmasını sağlayabilirsiniz. Bu kod satırını çalıştırdığınız zaman sanal makineniz otomatik olarak restart edilir.

# Değiştirmek istenen Azure VM Get-AzureVM -ServiceName cloudserviceName -Name VMName

Subnet değiştirmesi için pipeline süreci ile kullanıması gereken cmdlet'ler

Get-AzureVM -ServiceName WS2012-R2-Test -Name WS2012-R2-Test | Set-AzureSubnet -SubnetNames "HQ-Subnet-2" | Update-AzureVM

041615_1818_AzureVMleri16.png

· 5 min read

Daha önceki yazılarımızda Powershell ile Office Word kullanıma giriş yapmıştık. Bu yazımızda ise, Office Excel içerisine Powershell ile yapmış olduğumuz sorguların sonuçlarını Excel içerisine yazdırmayı ve ileri süreçlerde ilgili alanlara göre düzenleme işlemlerinden bahsediyor olacağım.

Akıllara gelen ilk soru Export-CSV ya da Convertto-CSV komutları Office Excel aktarmak için yeterli değil mi? Sorumuzun cevabı: "Evet" fakat biz bu yazımızda Office Excel içerisine Powershell ile yaptığımız herhangi bir sorgu yazdırmakla kalmayıp ilgili alanlara göre düzenlemeler yapabiliriz. Örneğin, Powershell ile WMI sorgusu yaptınız, bu sorguda ortamdaki makinalarımızın disk bilgileri hakkında olduğunu varsayalım. Disk boyutları belirtmiş olduğunuz boyutların altında ise Excel içerisindeki ilgili alanın renginin değişmesini isteyebilirsiniz. Fakat bunu yukarıda belirtmiş olduğumuz komutlar ile yapmanız mümkün değildir.

Office Word yazımızda bahsetmiş olduğumuz gibi COM Objesi oluşturup onunla beraber çalışmamız gerekmektedir.

Herhangi bir COM Objesi yaratmak için Powershell içerisinde kullanacağımız Cmdlet "New-Object"' Office Excel uygulamasını çağırmak için ise "New-Object" cmdlet içerisinde –ComObject parametresine Excel.Application göndermektir. Aşağıdaki örnekte bu işlemi bir değişkene atayarak yapıyorum.

Excel uygulamasının tüm özellikleri artık Excel değişkenine atanmış durumdadır.COM Objesini oluşturduktan sonra process olarak arka tarafta başlatıldı fakat Visible değeri "$False" olduğu için uygulamayı görememekteyim. Bu değeri "$True" çekerek uygulamayı görebiliriz.

Excel uygulamamızı ekrana getirmeyi başardık. Şimdi ise Excel içerisine çalışma sayfaları eklemeye geldi. Bu işlemi yapabilmek için "Workbooks.Add()"çağırarak gerçekleştireceğiz. Powershell içerisinden çağırdım Excel içerisine çalışma sayfası eklenmiş olacak. Bu yöntemi kullanırken "Workbooks" adında bir değişkene atamasını yapıp, ilerleyen kısımlarda ilgili çalışma sayfasını seçim işlemlerinde kullanacağım.

Excel içerisine çalışma sayfası eklendikten sonra, isteğinize bağlı olarak yeni çalışma sayfaları ekleyebilirsiniz. Oluşturduğumuz "Workbooks" değişkenin "Sheets.Add()" methodunu kullanarak yeni çalışma sayfaları ekleyebilirsiniz.

$Workbooks.sheets.add()

Excel içerisinde Sheet oluşturduktan sonra, Powershell içerisinden yaptığımız sorguları yazdırmak için hazırlık aşamasına geçelim. İlk önce yapmamız gereken, ilgili verileri yazmak istediğimiz Sheet seçmemiz gerekiyor. Sheet seçimi için, Workbooks değişkenin özelliklerinde olan "WorkSheets.Item('pagenumber')" methodunu kullanıp daha sonra bunu "Sheet1" adında bir değişkene atamasını gerçekleştirelim. Seçilen sayfanın tüm içeriğini artık "Sheet1" değişkeni üzerinden yönetiyor olacağız. Hemen bu özelliklerini iyice anlamamız için, "Sheet1" değişkenin Name özelliğini kullanarak Excel içerisindeki seçmiş olduğumuz çalışma sayfasının adını değiştirelim.

Görüldüğü gibi, ilgili çalışma sayfasını seçip ismini Powershell kodu içerisinde belirttiğim gibi değiştiğini görmekteyim. Powershell içerisinden WMI sorgulama yaparak ortamdaki tüm bilgisayarlarımızın kullandıkları disklerindeki sürücü harfi, disk boyutu, kalan boyut, makine adı gibi kısımları getireceğim. Bu sorgunun cevabını yazdırmadan önce "Disk Report Page" adlı Sheet içerisine oluşacak raporun başlıklarını ekleyeceğim. Bu Sheet üzerinde işlemler yapacağım için "Sheet" değişkenimi kullanarak devam edeceğiz. Sheet değişkenin içerisindeki "Cells" özelliği içerisindeki "Item()" methodu ile Excel içerisindeki ilk satıra rapor başlıklarını ekleyeceğim.

Bu methodun kullanım biçimi "Cells.Item(<satırnumarası>,<sutunnumarası>"

Rapor için istemiş olduğumuz başlıkları oluşturduk. Dikkat ettiyseniz, kod içerisinde "Cells.Item()" methodunu kullanırken satır ve sütün bilgilerini gönderdik. Şimdi ilgili başlıklar altına istemiş olduğumuz verileri yazmaya geldik. Bu işleme başlamadan önce, Excel içerisinde verilerimizi yazdırırken ikinci satırdan başlamamız gerekiyor ve yazdırılan her veriden sonra, diğer satırlara devam etmesini sağlamamız gerekmektedir. Bunun için Powershell içerisinde döngü yapmamız gerekmektedir. Her yazdığımız veri aynı satır ve sütün içerisine yazmamızı için döngü içerisinde satırları ve sütünları saydırmamız için değişken oluşturup counter olarak kullanmalıyız. Satır ve Sütün için kullandığımız counter değişkenlerini "Cells.Items" içerisine göndermemiz gerekiyor. Öncelikle disk sorgusu yapmak için, Get-WmiObject cmdlet ile "win32_logicaldisk" WMI class kullanıp, daha sonra tüm sorguları "Foreach-Object" ile döngüye içerisine sokup counter değişkenlerini kullanıp Excel içerisindeki ilgili satırlara eklemesini gerçekleştireceğiz. Bununla beraber "if-else" 10GB'tan küçük ve eşit ise ilgili hücrenin kırmızı ile boyanmasını gerçekleştireceğim.

Bu renk değişimi için "Cells.Items" özelliği olan "Interior.ColorIndex" kullanarak gerçekleştireceğiz. "Interior.ColorIndex" özelliğinin alabileceği değerler ilgili sayfada bulunmaktadır.

Get-WmiObject ile clas belirtip sorgulamayı gerçekleştirdik. Get-Wmiobject'in parametlerinden olan "-ComputerName" ile tüm şirketteki bilgisayarlarınızı sorgular yapıp Excel içerisine yazdırabilirsiniz. Kod içerisinde comment-block oluşturarak detayları yazdım. "Interior.ColorIndex" için ise 3 değerini atamış bulunmaktayım. Yukarıda belirtmiş olduğum link içerisinde, 3 belirtirseniz ilgili alan kırmızı renk boyanıyor olacaktır.

Powershell içerisinden sorgulamalar yaparak Excel içerisine yazdırdık, belirtmiş olduğumuz kritelere göre renklendirmek yaptık. Bu işlemleri gerçekleştirip Excel dosyamızı kaydetmemek olmaz sanırım. Sırasıyla kaydetmek işlemi için yapmamız gereken, kullanmış olduğumuz "Workbooks" değişkeni içerisinden "SaveAs()" methodu içerisine kaydedilecek yolu göndererek bu işlemi gerçekleştirebiliriz. Kaydetme işlemi tamamlandıktan sonra, ComObjesi yaratırken kullanmış olduğumuz "Excel" değişkenin ise "Quit()" methodu ile Excel kapatabilirsiniz.

[Threading.Thread]::CurrentThread.CurrentCulture = 'en-US' $Excel = New-Object -Com Excel.Application $Excel.visible = $True $Workbooks = $Excel.Workbooks.Add() $Sheet1 = $Workbooks.Worksheets.Item(1) $Sheet1.Name = 'Disk Report Page' $Sheet1.Cells.Item(1,1) = 'Sürücü Harfi' $Sheet1.Cells.Item(1,2) = 'Disk Etiketi' $Sheet1.Cells.Item(1,3) = 'Toplam Boyut' $Sheet1.Cells.Item(1,4) = 'Kalan Boyut' $Sheet1.Cells.Item(1,5) = 'Makina Adı' #Counter Variable $satir = 2 $sutun = 1 Get-WmiObject -ClassName win32_logicaldisk | ForEach-Object { #SürücüHarfi $Sheet1.Cells.Item($satir,$sutun) = $PsItem.DeviceID $sutun++ #Disk Etiketi $Sheet1.Cells.Item($satir,$sutun) = $PsItem.VolumeName $sutun++ #Toplam Boyut $Sheet1.Cells.Item($satir,$sutun) = ($PsItem.Size /1GB) $sutun++ #Kalan Boyut if($PsItem.FreeSpace -le 10GB) { $Sheet1.Cells.Item($satir,$sutun).Interior.ColorIndex = 3 $Sheet1.Cells.Item($satir,$sutun) = ($PsItem.FreeSpace /1GB) $sutun++ } else { $Sheet1.Cells.Item($satir,$sutun) = ($PsItem.FreeSpace /1GB) $sutun++ } #Makina Adı $Sheet1.Cells.Item($satir,$sutun) = ($PsItem.PSComputerName) #Bir sonraki satir için satir değişkenine bir ekleyelim. $satir++ #Sutun değişkenini sıfırlayalım. $sutun = 1 } #Excel kaydedelim. $Workbooks.SaveAs('C:\Reports\DiskReport.xlsx') #Excel kapatalım. $Excel.Quit()

· 2 min read

Azure Management Portal üzerinden, Sanal Makinelerimize bağlanıp her birini yönetmek için Remote Desktop Connection dosyalarına ihtiyacımız bulunmaktadır. Azure üzerinde oldukça fazla sanal makine barındırıyorsanız bu süreçleri yönetmek sıkıntılı olabiliyor. Bu süreci hızlı bir şekilde çözmek için blog üzerinde daha öncelerde paylaştığım Powershell Script sayesinde, Azure üzerinde barındırdığınız tüm sanal makinelerinizin tek seferde tüm R.Desktop Connection dosyalarını indirebilirsiniz.

Bu yönetim sürecini hızlandırmak adına, Danışmanlık ve Eğitim dışında kalan zamanlarda, Azure üzerinde tutulan sanal makinelerin yönetim süreçlerini Powershell GUI üzerine aktardım. Azure VM Management Tool – BETA olarak Technet Script Center üzerinden indirilebilir durumdadır. Bu yazımızda BETA sürüm olarak yayınlamış olduğum Management Tool'un kullanımı hakkında bilgiler aktaracağım.

033115_1751_AzureVMMana1.png

Azure Virtual Machine Management Tool kendi içerisinde birçok kontroller yapmakta ve bizlere Powershell GUI üzerinden uyarılar vermektedir. Bu detayların hepsini "Status" kısmından görebilirsiniz. Yukarıdaki örnekte Azure Powershell modulü ve bununla beraber Azure Subscription bölümü bulunmaktadır. Blog üzerinde Azure Powershell Module kurulumunu daha önceden bahsetmiştim. Azure Powershell Modülünü kurduktan sonra, Powershell GUI üzerinde "Add Account" tıklayarak Azure hesabınızı ekleyebilirsiniz. Ekledikten sonra ilgili alanlar aktif hale gelecektir.

033115_1751_AzureVMMana2.png

Hesabımızı tanıttıktan sonra, Subscription Name kısmına ilgili hesap bilgilerimiz geldi. Azure Virtual Management Tool ile artık grafik arayüzü sayesinde sanal makinelerinize kolayca erişebilir veya Remote Desktop Connection dosyalarını tek tıklama ile kaydedebilirsiniz.

033115_1751_AzureVMMana3.png

  • Query Butonu ile tanımlı olan Azure hesabınız üzerindeki tüm sanal makineleriniz grid view içerisine listelenir ve size sadece bağlanmak istediğiniz sanal makine üzerinde çift tıklamanız yeterli olacaktır. Bağlanmak istediğiniz sanal makine bilgileri arka tarafta Remote Desktop Connection aracını kullanarak bağlantı ekranı karşımıza gelecektir.

033115_1751_AzureVMMana4.png

  • Save All RDP butonu ile Azure hesabınız üzerindeki tüm sanal makinelerinizin Remote Desktop Connection dosyalarını bilgisayarınıza kolayca indirebilir ve ilgili dosya içerisine yetkili kullanıcı hesabı ekleyebilirsiniz. Remote Desktop Connection dosyalarınızı "C:\AzureRDP" klasörü içerisine indirecektir.

033115_1751_AzureVMMana5.png

Dilerseniz kaydetme işlemi başlamadan önce, kullanıcı bilgilerinizi gönderebilir ve daha hızlı bir şekilde erişimi başlatabilirsiniz.

033115_1751_AzureVMMana6.png VM7

Download