Powershell ile PowerBI kullanarak Real Time Dashboard yaratılması – Part 1

Powershell ile PowerBI kullanabilmemiz için PowerBIPS adında Modülüne ihtiyacımız bulunmaktadır. Bu Modül sayesinde, Powershell ile yaptığımız Monitoring için sorgulama sonuçlarını Microsoft PowerBI REST API kullanarak istediğimiz istekleri http üzerinden PowerBI içerisine gönderip anlık olarak verilerimizi takip edebiliriz.

Geçtiğimiz günlerde github üzerinden yayınlanan PowerBIPS Modulü içerisinde bulunan Cmdlet’ler sayesinde Powershell ile aldığınız sonuçları PowerBI üzerinde anlık olarak verilerini gönderebilir ve görüntüleyebilirsiniz. İlgili Powershell Modülüne ulaşmak için tıklayınız.

Powershell içerisine PowerBI Modülünün eklenmesi

Powershell Modülünü indirdikten sonra ilgili modül dosyalarının aktarılması gereken yeri “$Env:PSModulePath” değişkeni ile görebilirsiniz. Aşağıdaki örnekler ile işletim sistemindeki default olarak gelen Path adresleri listelenmiştir.

User bazında Powershell Modulü için;

  • %– USERPROFILE%DocumentsWindowsPowershellModulesPowerBIPS

Computer bazında Powershell Modülü için;

  • C:Windowssystem32WindowsPowerShellv1.0Modules

Computer bazında PowerBIPS ( PowerBI Powershell Module ) dosyalarını taşıdıktan sonra, Powershell Modülümüzün ulaşılabilir olup olmadığını hemen kontrol edelim.

PowerBIPS Modulü ile gelen komutları görmek için “Get-Command” cmdlet içerisine –Module parametresini gönderelim ve bu module ile gelen cmdlet listesine bakalım.

Yukarıdaki sonuçla PowerBIPS modulü ile kullanabileceğimiz cmdlet listesi karşımıza çıkmıştır. Şimdi bu cmdlet kısaca ne işe yarar ondan bahsedelim.

Cmdlet

Açıklaması

Add-PBITableRows Sonuçlarınızı veri kümeleri (datasets ) içerisine eklemenize yardımcı olur.
Clear-PBITableRows Veri Kümeleri ( Dataset) içerisindeki tüm satırları siler.
Get-PBIAuthToken PowerBI API’leri ile iletişim kurmak için gerekli olan kimlik bilgilerini alır.
Get-PBIDataSet Veri kümelerini çağrır ve içerisindeki tabloları görüntülemenize yardımcı olur.
New-PBIDataSet PowerBI içerisinde yeni bir veri kümesi oluşturulmasını sağlar
Out-PowerBI Powershell ile alınan sonuçları en kolay şekilde PowerBI içerisine aktarır
Test-PBIDataSet Gönderilen isme göre veri kümesi (dataset) olup olmadığını kontrol eder.
Update-PBITableSchema Veri kümeleri içerisndeki yapılandırmayı yeniyebilirsiniz.

Comparing Azure and Amazon EC2 Virtual Machines – Part 1

Uzun zamandır yazmak istediğim yazı ile karşınızdayım. Azure özelinde bir çok hizmeti müşterilerime ilgili hizmetlerin yapılandırmasını sağlayıp kullanmaları sağlıyorum. Fakat her zaman aklımın köşesinde bir yerde Azure Virtual Machine ile Amazon Virtual Machine (EC2 ) yapısını karşılaştırıp aradaki farkları yazmak gibi bir amaç içerisine girdim.

Azure Resource Manager Release olduğu zamandan beri bir yandan firmalar hızlı bir şekilde Classic Portal ( Service Manager) üzerindeki kaynakları Ibıza Portal ( Resource Manager ) alt yapısına geçişlerini yapmaktalar. Azure Virtual Machine ( Resource Manager) özelinde bir çok yeni kavram hayatımıza girdi ve bunların karşılaştırmasını Amazon Virtual Machine ( EC2) yapmak gerekiyor. Hemen yeri geldiği için açıklayalım, Alt yapısal değişikliği sebebi Classic Portal üzerinde çalışan VM’lerin hepsi Provisioning edildiği zaman bir Cloud Service yaratılıp daha sonra ilgili Cloud Service ile atanan IP adresleri ile erişim sağlanabiliyordu. Biraz daha geçmişe gidersek Microsoft Azure hizmetleri içerisinde Infrastructure as a Service (IaaS) vermeyi planlamıyordu. Gelen talepler üzerinde değişiklik yaptığı için bir takım eksiklikler göz ardı edilerek devam edildi. Bunun bir takım eksileri bulunmakta ve bu detaylar için şu yazıya göz gezdirebilirsiniz. Bu yazı serisi içerisinde mümkün oldukça bir Virtual Machine özelinde temel kaynaklar olan ( Compute, Storage ve Virtual Network) detaylandırıyor olacağız.

Yukarıda görüldüğü gibi temel olarak Azure Virtual Machine “VHD” formatını kullanır. Generation 1 VM’leri tam anlamıyla destekler. Yüksek disk hız gerektiren Azure VM Workload’ları ( SQL Server, Exchange Server, Dynamics Axapta vd.) için Azure Premium Storage hizmeti kullanılmalıdır.Amazon Virtual Machine (EC2) yapısında disk yapısının formatı “AMI” olarak gözlenmektedir. Yine Amazon alt yapısında ihtiyaca göre yüksek hız gerektiren sunucular için (IOPS) değerleri provisioning sürecinde sunularak baştan karar vermeniz sağlanır.Diğer bir fark ise, Azure tarafında seçtiğiniz Premium Storage seviyesine ( P10, P20, P30) göre faturalandırılır ve scale down gibi yöntemler ile yüksek IOPS ihtiyacınız bittiği zaman düşebilirsiniz. Azure Virtual Machine serilerinde ( A, D, F, G, N ) her sanal sunucu özelinde attach edilecek disk sayıları bulunmakta ve her Volume başına maksimum 1TB belirtebiliyoruz. Bu limit içerisine Operating System diskininde dahil olduğunu belirtelim. Varsayım üzerine konuşacak olur isek ihtiyaçlardan dolayı Azure VM içindeki herhangi bir Volume boyutu 4 TB olmak istediğinde Microsoft Storage Spaces özelliği ile eklenen disk’ler span disk haline getirilerek yapılabilir. Resim de görüldüğü gibi bir Azure üzerideki en güçlü sanal sunucuya maksimum 64 TB ( G5 Serisi ) disk eklenebilir. Fakat amazon üzerinde bu tarz limitler ile karşılaşmak pek mümkün değil.

Azure ve Amazon EC2 Virtual Machines serilerinin kullandıkları İşlemci,Disk ve Network detaylarının karşılaştırmasını aşağıdaki tabloda bulabilirsiniz.

Amazon EC2 Virtual Machines serisi ( T, M , C, R , G , D ) olarak anılmaktadır. Sanal sunucu farklılıklarına bakıldığı zaman dikkat edilmesi gerken noktalar içerisinde Azure ve Amazon içerisindeki her sanal sunucunun kendi serisi içerisinde CPU, RAM, Disk ve Network hızları değişiklik göstermektedir. Öncelikle her iki farklı Cloud Provider üzerinde sanal sunucu oluştururken karşımıza bir çok farklı yöntem çıkmakta ve hızlı bir şekilde bunlara göz gezdirelim.

Azure üzerinde Virtual Machine oluştururken, Ibıza Portal ( Azure Resource Manager) kavramı bizi karşılıyor olacak. Azure Ibıza Portal üzerinde sanal sunucu oluştururken aşağıdaki adımlar izlenebilir.

  • Azure Ibıza Portal ( Arayüz üzerinden )
  • Azure Resource Manager Powershell
  • Cross Platform Command Line Tools
  • Visual Studio – Azure SDK JSON Template
  • Azure Templates Deployment – Bkz

Azure Resource Manager içerisinden herhangi bir hizmeti Örneğin:”VMS, Virtual Network, Storage” Powershell, Visual Studio ile yönetildiği zaman her hizmetin kendine ait Provider bulunmakta ve bu detaylar Azure Resource Manager ( ARM) tarafından bilinmektedir. ARM tarafında en dikkat çekici özellik, Template Deployment tasarlanmasıdır. JSON formatında hazırladığınız ve ilgili Resource Provider yapısına göre yazdıktan sonra herhangi bir hizmeti saniyeler içerisinde provisioning sürecini başlatabiliyoruz.Bununla beraber Resource Manager kullanan Azure hesaplar isteğe bağlı olarak ADFS Server alt yapıları üzerinden Authentication süreçlerini tasarlayabilirler.

Amazon tarafında ise herhangi bir provisiong işlemi Azure Resource Manager ( ARM) yapısına oldukça benzemektedir. Cloud Formation olarak adlandırıdığımız bu dağıtım modeli Amazon da karşımıza çıkıyor. Azure Resource Manager özelinde gelen bir çok özellik var. Bunlar Resource Group, Tags, Lock, RBAC gibi yenilikler. Cloud Formation dağıtım modeli bu yapıya oldukça fazla benzemektedir. Amazon için JSON template hazırlandıktan sonra Command Line Interface kullanarak Cloud Formation dağıtım sürecini baştabiliriz. Azure Resource Manager ( ARM ) ve Cloud Formation kullanımı karşılaştırmasını aşağıdaki bulabilirsiniz. Pek fazla fark olmayan bu deployment yöntemlerini IT / DevOps ekipleri farklı bulut hizmeti sağlayıcılarını tercih ederken geçişlerde çok sıkıntı yaşamayacaklardır. Azure ( ARM) modelini kullanan bir kişi Cloud Formation tarafına çok kolay bir şekilde adaptasyon sağlayabilir.

Azure Resource Manager Nedir – Bölüm 1

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.

Resim

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

Resim

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.

Resim

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

Resim

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

Resim

Yukarı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.

Resim

Oluş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.

Resim

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.

Azure DNS Preview

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.

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.

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.

Switch-AzureMode AzureResourceManager

Register-AzureProvider -ProviderNamespace Microsoft.Network -Force

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

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. Yukarıdaki 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.

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 DNS Zone eklemek için kullanacağımız cmdlet “New-AzureDNSZone –Name domainname –ResourceGroup ResourceGroupName” şeklinde olmalıdır.

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.

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.

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.

Azuredns.hasangural.com adında bir Host(A) kayıt eklendi ve ip adresi olarak “4.5.6.7” olarak gösterdik. Şimdi ise bunun bir doğrulamasını yapalım. ( Powershell veya Nslookup ile )

Configuring Azure VNet-to-VNet VPN – Part 2

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.

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

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.

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.

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.

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.

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

#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

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.

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.

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

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.

Powershell v5.0 ile Class Kullanımı – Part 2

Yazımızın ikinci serisi ile devam ediyoruz. Class yapısını detaylı bir şekilde incelemeye devam edelim. Şimdi ise Class yapısı içerisin de Enum (Enumarator) kullanacağız fakat önce yapısından bahsedelim.

Enum (Enumaration) Nedir ?

Bu yapı yazılım dilinde enum, enumaration ya da enum sabitleri olarak adlandırılır. Değişkenlerin alabileceği değerlerin sabit (belli) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Programda birçok değişkene tek tek sayısal değer vermek yerine “Enum” kullanılabilir. Özet olarak “enum” yapısı sayıları anlamlı şekilde isimlendirerek kullanabilmeye izin verir.

Bu yapıya her yazılım eğitimin de verilen örnek ile kolayca ilerleyelim. SehirPlakalari isimli Enum yapısı içerisinde birkaç sehir ve bunlara atanan sayısal değerler (Plaka Numarası) tanımlanabilir. Ben Istanbul’u çağırdığım zaman karşıma ilgili Plaka Numarasının gelmesini isteyebilirim. Enum yapısının içindeki tanımlamaları yaptıktan sonra Class yapısı içerisin de kullanmayı göreceğiz. Ama şimdi hemen Enum ( Enumaration) tanımlamasını yapalım.

Hatırlarsanız, Class tanımlarken keyword olarak” Class” kullanıyorduk. Enum ( Enumaration) tanımlarken keyword olarak “Enum” ve daha sonra EnumName şeklinde kullanacağınız.

Yukarıdaki örnek içerisin de SehirPlakaları adında bir Enum oluşturdum ve içerisine üyelerimi tanıttım. Şimdi artık yapmam gereken bu Enum listesi içerisinden istediğim değeri çağırarak çıkan sonucu görmek.

Enum yapısını çağırmak için, ” [EnumAdı]::Name ” şeklinde kullanmanız gerekiyor. Fakat bu şekilde çağırdığınız zaman ilgili seçilen karşınısındaki değere ( Örnek : Ankara seçtiğimiz zaman 6 değerinin gelmesini istiyoruz.) sahip olmanız için aşağıdaki şekilde kullanmanız gerekiyor.

Yukarıdaki örnek içerisin de [SehirPlakalari]::Ankara içerisindeki değere ulaşmak için Enum yapısı içerisindeki değeri çağırdık. [SehirPlakalari]::Ankara.Value__ şeklinde değeri ekrana döndürdük. Şimdi Enum yapısını Class içerisinde kullanımına geçelim. Basit bir Araba adında Class oluşturacağım ve bunun için de Model, Manufacturer, Year ve Color gibi nesneler tanımlaması yapacağım. Daha sonrasında burada Color nesnesini sabit değer alabileceğini varsayıp Enum yapısına çevirelim.

Yukarıda görüldüğü gibi, Class tanımlamasını yaptık. Şimdi burada Color nesnesini Enum yapısına dahil edelim.

Class ve Enum detaylarını yukarıdaki gibi görebilirsiniz. Bu kısımda dikkatinizi çekmek istediğim bir nokta var, bir önceki resim de “Color” nesnesinin veri tipi “String” olarak tanımlanmış durumdaydı. Fakat ben bu nesneyi Enum yapısı içerisine alarak veri tipi kısmına tanımlamış olduğum Enum adını yazmış bulunuyoruz.

Şimdi kullanım şekline geçelim hemen, Aşağıdaki görüldüğü gibi Class yaratmak için New-Object Cmdlet kullanarak Class adını yazdım ve “A” isimli değişkene atamış durumdayım. “A” değişkenini çağırdığım zaman karşıma Class içerisindeki objeleri görmekteyim.

“A” değişkenini Color object içerisine değer atarken yukarıdaki dikkat ettiyseniz “1” yazmış bulunmaktayım. Bu rakam bana Enum içerisin de karşına tanımladığım değere denk gelmektedir. Enum içerisin de “1” değerinin karşına geldiği kısım “Red” değeri olduğu için, artık Class içerisindeki objeye içerisine “Red” ataması gerçekleşecektir.

Bununla beraber artık ilgili objeye Enum dışında tanımlanmış herhangi bir değer atama şansını bulunmuyor. Aşağıdaki örnekte Enum içerisinde olmayan bir değeri ilgili objeye atamaya çalıştığınız da aldığımız hatayı görebilirsiniz.

SCVMM 2012 R2 Kurulumu Bölüm 3

SCVMM 2012 R2 için gerekli olan bileşenlerin kurulumlarını daha önce Bölüm 1 ve Bölüm 2 kısımlarında tamamladık kurulum için her şey hazır kuruluma başlayabiliriz.

Kurulum Setup’ımızı çalıştırıyoruz.


Install seçeneği ile kurulum adımlarına başlıyoruz.


Sunucu üzerine kuracağımız VMM Management Server ve VMM console seçeneği otomatik gelmektedir. Varsayılan olarak bırakarak “Next” seçeneği ile devam ediyoruz.


Kuruluşumuza ait bilgilerimizi giriyoruz. Ürün anahtarını girmediğiniz durumlarda ürünü 180 gün boyunca tüm özellikleri ile beraber kullanabilirsiniz.


Kurulum sözleşmesini kabul ediyoruz.


Müşteri geliştirme programına katılıp katılmayacağımız sorulmaktadır. Bu seçeneği kişisel olarak istediğiniz gibi seçebilirsiniz.


Kurulumun yapılacağı lokasyonumuzu belirtiyoruz.


Database configuration bölümünde SQL sunucumuzun kurulu olduğu sunucumuzu belirtiyoruz. Yapımızda SQL sunucusu ile SCVMM2012 R2 yazılımı aynı sunucu üzerine olduğu için server name kısmı otomatik gelmektedir. SQL sunucumuza ait erişim bilgilerini de girdikten sonra “Next” seçeneği ile devam ediyoruz.


SCVMM 2012 R2 kurulumu için gerekli olan Local System account veya Domain account bilgilerini girmemiz gerekmektedir.Bu kısım önemli olduğu için bu kısıma deyinmekte fayda var.

  • SCVMM için atayacağınız Local System veya Domain Accountunu başka herhangi bir amaç için kullanmamalısınız.
  • SCVMM için atadığınız Account bilgileri sonradan değiştirilemez.Hesabı değiştirmek için SCVMM yazılımını kaldırıp tekrardan kurmanız gerekir.
  • SCVMM için Cluster yapısı düşünülüyor ise hizmet hesabı domain accountu olmalıdır.

Active Directory üzerinde “VMM” isimli bir hesap açarak bunu servis hesabı olarak atıyorum.


SCVMM 2012 R2 yazılımının çalışabilmesi için gerekli olan port listesi aşağıdaki gibidir. Varsayılan bir biçimde bırakarak “Next” seçeneği ile devam ediyoruz.


Library Configuration:

Kütüphane ayarlarımız için gerekli olan kütüphane ismini belirliyoruz “Next” seçeneği ile devam ediyoruz.


Install seçeneği ile kurulumu başlatıyoruz.


Kurulum için gerekli olan özellikler aşağıdaki gibi yüklenmektedir.


Kurulum başarıyla tamamlanmış bulunmaktadır.


Masaüstümüzden Microsoft System Center VMM ürünü çalıştırıyoruz. Connect seçeneği ile VMM sunucumuza login oluyoruz.

VMM ara yüzü bizi karşılamaktadır.

VMM 5 bölümden oluşmaktadır.

Powershell v5.0 ile Class Kullanımı – Part 1

Blog içerisinde Powershell v5.0 ile yeni gelen özellikleri paylaşmıştım. Eğer Windows 10 kullanıyorsanız, Powershell V5.0 sürümüne sahipsiniz demektir. Microsoft tarafından Powershell v5.0 için Windows Management Framework Production Preview sürümünü indirip, Windows 10 olmayan cihazlarınızda ilgili sürüme sahip olabilirsiniz.

Powershell v5.0 ile gelen hayatımıza, Desired State Configuration ciddi seviyede iyileştirmeler, Package Management ile deployment süreçlerinin inanılmaz sürelerde kısalması, Network Switch cmdlets ailesi sayesinde Microsoft sertifikalı switchleri yönetebilmek gibi birçok yenilik bizleri bekliyor. Bu yazımız da Powershell v5.0 ile gelen yeni özellik olan Nesne Yönelimli Programlama dillerin de Class yapılarını oluşturarak devam edeceğiz. Birçok PowerShell kullanıcıları bu kavramlara aşina olabilir. Class yapısının gelmesindeki en büyük avantaj Desired State Configuration tarafında olduğunu söylemekte fayda var.

Powershell’in artık Object Oriented Programming (Nesne Yönelimli Programlama) dil olduğunu üstüne basa basa söylemekte fayda var.
Object Oriented Programming (Nesne Yönelimli Programlama) 1960 yılların başlarında geliştirilen bir programlama tekniğidir. Bu programlama tekniği bizlere ne sağlıyor? Bu programlama tekniği programı geliştirirken daha hızlı, daha esnek olması, bakımının ve diğer geliştirme yöntemlerine daha fazla açık olmasını anlamına gelmektedir. OOP (Object Oriented Programming) bütün olaylara birer Object(Nesne) olarak bakmaktadır.

Object ( Nesne ) Nedir?

OPP(Object Oriented Programming) avantajlarından bahsettik. Şimdi ise Object kavramını açıklayalım. Normal fiziksel nesne ile karıştırmamız gerekiyor. Fiziksel bir nesne dediğimiz zaman, uzayda yer kaplayan hacmi olan kütlesi olan bir yapıdır. Kodlama tekniklerinde bir nesne dendiği zaman olayları olan, olaylara karşı reaksiyon gösterebilen ve işlevi olan yapılar anlamına gelmektedir.

Object(Nesne) içerisin de Properties (Özelliker ), Methods (Method) ve Events(Olaylar) barındırırlar. Bunları kısaca açıklayalım.

  • Properties : Bir nesne tarafından temsil edilen veri özellikleridir.
  • Method : Objenin davranışlarını temsil eder.
  • Event : Nesne ile arasındaki iletişimi kurarlar.

Class (Sınıf) Nedir?

Object kavramından sonra, Class yapısını cover etmemiz gerekiyor. Peki Class nedir?

Nesne Yönelimli Programlama ile geliştireceğimiz programlarda sadece objeler vardır. Bu objeler, veri alışverişi yaparak, birbirleriyle haberleşirler. Objeler OOP(Object Oriented Programming) de sınıf olarak ifade edilen şablonlardan yaratılır. Her Class içinde, o Class içerisinden üretilecek objelerin özelikleri, davranışları tespit edilir. Örneğin Araba isminde bir sınıf yaratabiliriz. Bu sınıftan üretilecek objelerin ortak yani, bir Marka, Model ve Renk gibi özellikleri olacaktır. Class yapısı obje üretmenin yanında Class yapıları arasında ilişki kurmak mümkündür.

Constructor ( Yapıcı Method ) Nedir?

Objelerin sınıflardan yapıldığını öğrendik. Objeler üretilirken, sahip oldukları değişkenlerin farklı değerlerde olması gerekir. Araba örneğinde olduğu gibi, Marka ve Model isimli iki objenin değişik değerlere sahip olmaları gerekir. Bu demek oluyor ki, objeler üretilirken, onlara değişik kimlikler verecek bir mekanizmaya ihtiyacımız var. Bu görevi sınıf içinde Constructor üstlenir. Objeler Constructor aracılığıyla üretilir. Constructor bir obje üretmeden önce, obje için gerekli değişken değerleri belirlenir ve bu değerler parametre olarak Constructor gönderilir. Constructor bu değerleri kullanarak, objeyi üretir. Her sınıf içinde, obje üretmek için bir Constructor vardir. Bu kullanım şekline örnek verecek olursa, “System.Net.Http.HttpClient” class içerisinde 3 farklı Constructor görebilirsiniz; Diğer 2 tanesi parametre farklı değerler alırken sizde MSDN sayfası üzerinden görebileceğiniz gibi bir tanesi hiçbir parametre almaz. Constructor “overloading” yapısını desteklemekte. Bu şekilde birçok Constructor yaratılabilmekteyiz.

Genel anlamlarıyla Class, Object, Properties, Method gibi kavramları açıkladık. Şimdi Powershell içerisinden Class oluşturmak için neler yapmamız gerekiyor onlardan bahsedelim. Yapmamız gereken bu kısımda aynı Powershell içerisin de function veya Workflow yazar gibi Class keyword ile başlayıp ClassName belirtmeniz gerekiyor.

Yukarıdaki örnekte görüldüğü gibi Powershell içerisin de herhangi bir Function, Workflow veya Configuration elementleri ile başladığımız gibi keyword olarak Class yazarak ve ClassName belirterek oluşturma işlemini gerçekleştiriyorum.

Şimdi ise Class içerisine “String”,”Int” ve “DateTime” tipinde objeler tanımladım. Artık bu Class çağırıldığı zaman bunlar benim için birer objedir. Class çağırmak için neler yapmam gerekiyor hemen ondan bahsedelim. Bu kısımda karşımıza “New-Object” adında bir cmdlet çıkıyor. Bu cmdlet içerisine Class Adını göndererek kullanabileceğim.

“A” adında bir değişken oluşturdum ve karşına New-Object ClassName şeklinde atayıp çalıştırdım. Daha sonra “A” değişkenine çağırdığım zaman karşımıza Class içerisin de tanımladığım objelerim gelmektedir. Şimdi Bu objeler içerisine değer atama işlemlerine bakalım.

Yukarıda görüldüğü gibi Class içerisinde tanımlamış olduğum objelerime değer atayıp çalıştırdıktan sonra, Class içerisindeki objelerin yeni değerlerini görebilir durumdayım. Bir sonraki yazımızda Class yapısını incelemeye devam edeceğiz.

SCVMM 2012 R2 Host Ekleme Bölüm 4

Bu bölümde HYPER-V Host veya Cluster’larımızı Virtual Machine Manager yazılımına nasıl entegre edeceğimizi göreceğiz.

Sol taraftan Fabric tab’ına geldikten sonra yukarıdan Add ResourcesHyper-V Hosts and Clusters seçeneğine basıyoruz.


– Windows Server computers in a trusted Active Directory Domain : SCVMM ile aynı domainde bulunan sunucuları eklemek için bu seçeneği kullanıyoruz.

– Windows computer in an untrusted Active Directory domain : SCVMM ile aynı domainde olmayan sunucular(farklı bir domain yapısında bulunan) için bu seçeneği kullanıyoruz.

– Windows Server computer in a perimeter network : Domainde olmayan sunucular “Workgroup” için bu seneği kullanıyoruz.

– Physical computers to be provisioned as virtual machine hosts : İşletim sistemi olmayan sunucular için bu seçenek kullanılır SCVMM ürünü ortam üzerinden bu sunuculara kurulum yapabilmektedir.

Ben domain yapımdaki Cluster’ı ortama dâhil edeceğim için ilk seçeneği seçerek “Next” seçeneği ile devam ediyorum.


Sunucuya erişeceğim yetkili bir Account bilgisini aşağıdaki gibi dolduruyorum ve “Next” seçeneği ile devam ediyoruz.


Specify an Active Directory query to search for Windows Server computers : Bu seçenek ile Active Directory içinde bulunan Computer nesneleri arasında arama yaparak VMM’e dahil edeceğim sunucuları belirtiyorum.



VMM otomatik olarak seçtiğim sunucuların Cluster’a dahil olduğunu algıladı ve aşağıda görüldüğü gibi Cluster’ı işaretledi “Next” seçeneği ile devam ediyoruz.


Host Group kısmında daha önceden oluşturduğumuz Host grup isimleri var ise bu VMM’e dahil edeceğimiz hostları gruplandırabiliriz. Biz daha önceden Host group oluşturmadığız için Varsayılan seçenekte bırakarak “Next” seçeneği ile devam ediyoruz.


Ayarları onayarak işlemleri tamamlıyoruz.


Jobs kısmından yapılan işlemlere ait log’ları takip edebiliriz.



Office 365 Shared Mailbox

Office 365 üzerinde bulunan bir kullanıcınız işten ayrıldığında aşağıdaki gibi arşivleyebilirsiniz.

Kullanıcının Mailboxının Shared Mailbox olarak Convert edilir ve istenildiği durumda herhang bir çalışanın mailinden görüntülenebilir.

Kullanıcının Mailinin Shared Mailbox’a Dönüştürülmesi ?

Örnek olarak işten ayrılan bir kullanıcının mailini Shared Mailbox’a dönüştürüp nasıl erişebileceğimizi göreceğiz.
İşten ayrılan kullanıcımızı yönetebilmemiz adına aşağıdaki adımları takip etmemiz gerekmektedir.

[email protected] adlı kullanıcı işten ayrıldığı için Shared Mailbox’a dönüştürelim (Mailbox’ı Shared Mailboxa dönüştürdüğünüzde ilgili kullanıcının lisansı boşa çıkmaktadır)


Shared Mailbox’a dönüştüğümüz kullanıcıyı aşağıdan kontrol edebiliriz.

İşten ayrılan kullanıcımızın maillerine lazım olduğunda erişebilmemiz adına ilgili Shared Mailbox’un özelliklerine girip hangi kullanıcının görmesini istiyorsak ilgili kullanıcıya yetki veriyoruz.

Yetki verdiğimiz kullanıcının Outlook’u üzerinden erişeceğimiz Shared Mailbox’ı görüntüleyebiliriz.

Yetki verdiğimiz kullanıcının OWA’sından veya Outlook’undan aşağıdak gibi ilgili Shared Mailboxtaki maillerine erişebilmekteyiz.