Creating Peering from different Azure Active Directory tenants with Powershell

There are several ways to connect Azure Subscriptions. Before, we were using VPN gateway for connecting different subscriptions Virtual Network to Virtual Network. We can use VNet Peering to connect virtual networks in the same Azure region or different Azure regions. The virtual networks can be in the same Azure subscription or in different subscriptions, as long as they share the same Azure AD tenant. Also now, we can use VNet Peering to connect different Azure AD Tenants. VNet Peering also allows you to connect two virtual networks created by using different deployment models. In this article, I’m going to explain how can we implement VNet Peering across different Azure Active Directory Tenants.

Before we start this article, what exactly we need to implement for this feature. We can configure VNet Peering by using the Azure portal, Azure PowerShell, Azure CLI and also Azure Resource Manager templates.



Packer kullanarak ile Azure üzerinde VM Image Yönetimi – Bölüm 1

Packer, HashiCorp tarafından sunulan tek bir kaynak konfigürasyonı ile birden fazla farklı platformlar için Virtual Machine veya konteyner imajları oluşturmak için kullanılan bir araçtır. Bu yazı serisinde Azure özelinde custom image’lerin nasıl oluşturulacağını açıklayacağım ancak önce Packer nedir kendisi tanıyalım. Kısacası Packer, Microsoft Azure’da spesific image oluşturmak, tanımlamak için kullanılabilen açık kaynaklı bir araçtır. HashiCorp tarafından bizlere sunulan bu araç ile Ansible, Powershell DSC etc. İle birlikte kullandığınız zaman Infrastructure as code yönetimini başka bir boyuta taşıyor olacaksınız. MsHowto üzerinde bulabileceğiniz, Mustafa Kara tarafından yazılan Ansible yazı serisi okumanızı tavsiye ederim. Packer, birden fazla platformda çalışır, Bu yazı serisinde Microsoft Azure üzerinde custom image’ler oluşturmak ve saklamak için örnekler gerçekleştirip, Packer’in Azure Resource Manager (ARM) bütünleşip, Azure Managed Image ile harika ve sorunsuz bir uyum içinde çalıştığına şahit olacaksınız.



Packer kullanarak ile Azure üzerinde VM Image Yönetimi – Bölüm 2

Packer ile Azure üzerinde VM image yönetimine devam ediyoruz. Bir önceki yazımızda Service Principal ve Packer tanımlaması için JSON dosya oluşturup Variable tanımlarını yaptık fakat karşılarına değerler girmedik. Şimdi dilerseniz bizden istenilen tanıımlamaları tek tek girelim. Aşağıdaki resim içerisinde göreceğiniz gibi Variables olarak adlandırılan bölümde, Azure Subscription detayları, Service Principal bilgileri ve son olarak oluşturulacak olan image için saklanacak resource group ve image name bilgileri yer almaktadır. Bu bilgileri doldurduktan sonra, daha sonra onları ilerki tanımlamalarda kullanıyor olacağız. Adından anlaşılacağı gibi, bunlar sadece bizim abonelik ve packer için kullanılacak bilgileri içermektedir.



Packer kullanarak ile Azure üzerinde VM Image Yönetimi – Bölüm 3

Packer serimize Provisioners’ ile devam ediyoruz. Packer Image Template’leri içerisinde, ‘Provisioners’ bölümü en çok dikkat çeken kısım olarak karşımıza çıktığını daha önce belirtmiştim. Packer ile oluşturmak istediğiniz imaj için öncesinde içerisinde olmasını istediğiniz yazılımı yüklemek veya işletim sistemini yapılandırmak için kullanması gereken bir özelliktir. Basit olarak bunu kullanmanızda birçok aşama var. Öncelikle bildiğiniz gibi bir imaj alırken, Sysprep önem arz eder, bunun dışında belki o imaj içerisinde belirli bir yazılım olsun, Registry içerisinde şu şekilde bir kayıt olsun, bunu değeri bu olsun, hatta Package Management üzerinden bir yazılım yüklensin gibi her türlü detayı belirtebiliryorsunuz. Öncelikle ‘Provisioners’ isteğe bağlıdır. Bir şablon içinde hiçbir hazırlayıcı tanımlanmamışsa, sonuçta ortaya çıkan makine görüntülerine varsayılanlardan başka hiçbir yazılım yüklenmeyecektir. Bununla birlikte, bu tipik değildir, çünkü Packer’ın değerinin çoğu önceden yapılandırılmış yazılımın çoklu özdeş resimlerini üretmektir. Provisioners genellikle bir Powershell Script, bash script vb. nitelikler ile tanımlanır.



Powershell Scriptlerinizi Test Edin –Pester Modülüne Giriş – Bölüm 2

Yazımızın ilk serisinde neden Powershell – Pester Modülünü kullanmamız gerektiğinden bahsettik. Şimdi ise nasıl kullanmalıyız ve ne tür bir kullanım modeli olduğunu inceleyelim. Basit bir Powershell function geliştirdik ve bunun içerisinde bir takım kod bloklarımız olsun. Aşağıdaki detaylara ufak bir göz gezdirme ile neler yaptığını anlayalım.



Powershell Scriptlerinizi Test Edin – Pester Modülüne Giriş – Bölüm 1

Bildiğiniz gibi, herkes altyapılarını otomatik bir hale getirmek için birçok powershell scriptler yazmakta ve daha sonra bunları bir şekilde otomatik çalışacak hale getirip, devamlı çalışarak birçok iş yükünü azaltmaktadır. Fakat yine herkesin bildiği diğer bir konu ise geliştirilen tüm kodların test edilmesi gerektiğinin önemi. Tüm altyapınızı otomatize ettiniz, fakat test süreçlerinizide otomatize etmeniz gerekiyor. İşte bu yazı serisinde Powershell Modülü olan Pester incelemesini gerçekleştireceğiz.

Günümüzde artık Automation özellikle burayı altını çizerek söylemek istiyorum, Altyapı yönetiminin bel kemiği haline gelmiş durumdadır. DevOps kültürüde bizlere bu kültürün bir parçası olan iyi bir automation stratejisi gerektiğiniden bahseder ve anlatır. PowerShell’in gücünü göz önüne aldığınızda, çalışan bir arkadaşınız veya proje yöneticinizin veya benzer otoritede olan bazı kişiler sizlere temel sorularla size geldiğini hayal edin. Çok basit birkaç soru ile bunları toparlayalım.



Visual Studio Code ile Azure Resource Manager şablonları oluşturma

Bir süredir zamanımın çoğunu Azure Resource Manager Template’leri geliştirerek gelişmiş ve çok karmaşık deploymentlar yapmaktayım. Bu kısımda ilgili Azure Resource Manager Template’lerini geliştirirken benim için ilgili IDE üzerinde konfor ve esneklik sağlaması çok önemli. Azure Resource Manager daha önce nasıl kullanıldığını ve yönetildiğini açıklayan yazıya şu adresten ulaşabilirsiniz. Yazının tarihine baktığım zaman üç yıl önce yazdığımı farkettim fakat yinede güncel başlıklar için Microsoft sayfasından göz gezdirmenizde fayda var.



Create Docker Host on Azure using Docker Machine CLI

Before reading the article, you have to know that I’m not going to explain what are Docker and Container etc. On the internet, you may be able to find a lot of article series to understand Container and Docker structure. Basically, in this one, we will comprehend how can we create docker host on Azure via Docker Machine CLI. I could say, One brief (and incomplete) description is that Docker creates something similar to Virtual Machines, only that Docker containers run on the host machine’s OS, rather than on a VM. Each Docker container should ideally contain one service and an application can comprise multiple containers.



Powershell tab completion for Docker CLI

Bir süredir zamanımın büyük bir bölümünü docker ile container yönetimine harcamaktayım. Gün içerisinde zamanımın çoğunu docker-compose, docker image yazarak ve bunları VSTS ile buluşturmama rağmen yine bir şekilde “Docker command line” ihtiyaç duymaktan alı koyamıyorsunuz. Tüm süreçlerin sonunda kendinizde test edip görmek istiyorsunuz. Fakat bu Docker command line benim gibi Powershell üzerinden erişip ve tab completion yapmak isterseniz, yardımımıza tam bu noktada GitHub üzerinden keşfettiğim güzel bir Powershell Module koşmaktadır. Eğer sizde çok fazla DockerCLI üzerinden, Network, Container, Image yönetimi yapıyorsanız ve bunların tab completion özelliğini kullanmak isterseniz, bu module tam size göre.

Posh-Docker Module GitHub üzerinde kullanıma açılmış yaklaşık en son iki yıl önce güncelleme yapılmış, fakat gayet yeterli bir şekilde işinizi göreceğine eminim. Client tarafında ön gereksinimleri aşağıda gibidir.

  1. Docker CLI 1.3 veya daha üst versiyonu
  2. Powershell 5.0 veya daha üst versiyonu

Bildiğiniz gibi Powershell ile Powershell Modüllerini PS Gallery sayesinde daha doğrusu Powershell One Get aracılığı ile repository üzerinden indirebiliyoruz, Posh-Docker bu şekilde sahip olma şansınız var. Bunların en basit yöntemi Install-Module komutuna kurmak istediğiniz Powershell Module adını göndermeniz yeterli olacak. Posh-Docker isimli Powershell Module kurmak istediğimiz için çalıştırmamız gereken komut sadece “Install-Module -Name Posh-Docker”



YAML kullanarak Azure Resource Manager Template Deployment Nasıl Yapılır? – Bölüm 2

Yazımızın ilk serisinde Azure Resource Manager Template dağıtım modelini ( JSON Template ) kullanırken yaşadığımız zorlukları ve JSON formatının göz yoran zorluklarından bahsetmiştim. Şimdi ise, YAML formatını kullanarak geliştireceğimiz Azure Resource Manager Template arasında farklılıklara bakıp daha sonra geliştirdiğimiz YAML template dosyasını tekrar nasıl JSON formatına kolay bir şekilde nasıl dönüştüreceğimizden bahsedeceğim.

Öncelikle YAML-CLI aracını github üzerinden indirelim ve ne tür parametreler göndererek kullanıldığına bakalım. Bunun için aşağıdaki Powershell Script çalıştırabilirsiniz, Script belirli parametreler almaktadır.