Azure Storage Services – Part 8:PowerShell ile Storage Service Kullanımı

Diğer yazılarımızda farklı platformlar üzerinden (GUI dahil) Azure Storage hizmetlerinin nasıl yönetileceğini deyaylı inceledik. Bu makalemizde ise sistem yöneticilerinin vazgeçilmez araçlarından olan PowerShell ile Storage hizmeti üzerinde yönetim aksiyonlarını inceliyor olacağız.

Azure subscription üzerinde PowerShell ile aksiyonlar almak için ilk yapılması gereken işlem Azure PowerShell modullerinin yüklenmesidir. Azure PowerShell modullerini Microsoft Web Platform Installer ile indirebilir ve kurabilirsiniz. Son dönemde Microsoft bu tarz eklenti ve paketleri WPI üzerinden sunmaya başladı. En güncel sürümleri indirmesi ve kolay şekilde yapılandırması sebebi ile WPI işlemlerimizi önemli ölçüde arttırdı.

image

Kurulumu hızlıca aşağıdaki şekilde gerçekleştirebiliriz.

image

image

Kurulum tamamlandıktan sonra artık kurulumu gerçekleştirdiğiniz bilgisayar üzerinde Azure PowerShell modülüne sahip oluyorsunuz. Azure komutlarını çalıştırmak için isterseniz özelleştirilmiş Azure PowerShell konsolunu açabilir yada varsayılan PowerShell konsolunda Azure modülünü yükleyerek devam edebilirsiniz.

Aşağıda kurulum ile birlikte gelen Azure PowerShell konsolunu görebilirsiniz.

image

Makale gereği PowerShell ile Storage hizmeti üzerinde aksiyonlar alacağız. Ancak PowerShell ile Azure üzerinde bu tarz işlemlere geçmeden önce var olan Azure üyeliğinize PowerShell içerisinden bağlanmanız gerekmektedir. Bu noktada iki seçeneğiniz bulunuyor.

  • Azure AD yöntemi ile ilgili credential bilgileri bir değişkene atanır ve bağlantı gerçekleştirilir.
  • Sertifika yönteminde ise Azure yönetim panelinden yönetim sertifikası kullanılarak otantikasyon gerçekleştirilir. Bu otantikasyon ancak sertifika geçerli olduğu sürece aktif olacaktır.

Azure AD yöntemi ile hızlıca Azure üyeliğimize bağlantı gerçekleştirelim. Öncelikle Get-Credential komutu ile kimlik bilgilerimi $kimlik değişkenine atıyorum.

image

Görüldüğü gibi kullanıcı adı ve secure.string şeklinde parola değişkene atanmış.

image

Ardından Add-AzureAccount komutu ile bağlantımızı gerçekleştiririz.

image

Ancak görüldüğü gibi hata aldık. Bu hatanın temel sebebi –credential parametresinin yalnızca okul veya iş hesapları ile kullanılabilmesidir. Eğer yukarıdaki gibi bir Microsoft hesabı ile Azure üyeliğinize bağlanmaya çalışırsanız hata mesajı ile karşılaşırsınız. Bunun çözümü için Azure paneli üzerinden bir organizasyon hesabı oluşturulabilir ya da sertifika bazlı yönetim yöntemi kullanılabilir.

Sertifika yönteminde yapılması gereken ilk önce üyeliğin içerisinde yer alan PublishSettings dosyasının indirilmesidir. Bunun için aşağıdaki komut kullanılır.

image

Bu komut bizi Azure kimlik doğrulama sayfasına yönlendirir. Kimlik doğrulama işleminden sonra istenilen hesap seçilir ve PublishSettings dosyası yüklenir.

image

Dosya indirildikten sonra bir sonraki adımda PowerShell konsolu içerisinde bu dosyayı import edeceğiz.

image

Ardından başarılı olduğunu test etmek için hızlıca var olan sanal makinelerimizi listeleyebiliriz.

image

Görüldüğü gibi var olan Azure sanal makinelerimi listeleyebiliyorum. Artık storage hesabı üzerinde PowerShell ile aksiyon alabiliriz.

Azure PowerShell Storage komutlarında PowerShell’in klasik fiil-isim yapısı kullanılmaya devam ediliyor. Storage yönetimi için kullanılan sık fiiler aşağıdaki gibidir.

  • Get
  • New
  • Remove
  • Set
  • Start
  • Stop

Bu fiiller ile http://msdn.microsoft.com/en-us/library/azure/dn806401.aspx adresinde bulunan komutların tamamını çalıştırabiliriz.

Öncelikle var olan storage hesaplarımızı listeleyelim.

image

İstersek yeni bir storage hesabını yine komut satırı ile oluşturabiliriz.

image

Görüldüğü gibi New-AzureStorageAccount komutuna location veya affinitygrup parametreleri tanımlayarak yeni bir depolama hesabı oluşturulabilir.

image

Bu noktada dikkat edilmesi gereken konulardan birisi depolama hesabı isminin tamamının küçük harflerden oluşması ve boşluk karakteri içermemesidir. Bu tarz bir isimlendirmede panel üzerinde bu tarz bir isim verdiğiniz aldığınız hatanın benzerini PowerShell üzerinde de alırsınız.

Oluşturulan hesabın detaylarını da yukarıdaki çıktıda görebiliyoruz. En önemli çıktılardan birisi endpointlerdir. Daha önceki makalelerde bahsettiğimiz gibi depolama hesabı içerisinde 3 farklı hizmet için (table, blob, queue””) enpoint bilgileri bize sunulmuştur.

Bu endpointler üzerinde aksiyon almak da PowerShell ile oldukça basit. Örneğin Blob ile başlangıcı yapalım.

Blob üzerinde işlem yapmak için Storage hesabı için size sunulan erişim anahtarına sahip olmanız gerekir. Bu bilgileri PowerShell ile aşağıdaki değişkenlere atayalım.

$storageAccount = “aniltest123”

$storageKey = “zPW1k7C6iAoL2sg97xeIFe2Y5noX5tVllfS4sHBhbfuOiW7d7DsCa7VxX7t6Gwxb9wyjnT+Qjg6zJtcxB3iPbg==”

Ardından bu iki değeri kullanarak yeni bir storage context oluşturulur.

$NewContext = New-AzureStorageContext  –StorageAccountName $storageAccount -StorageAccountKey $storageKey

image

Blob storage yapısında bloblarımızı barındırmak için Container yapısını kullandığımızdan daha önce bahsetmiştik. Bu sebeple bu yeni hesabımız üzerinde bir adet container oluşturmamız gerekmektedir. Bunun için de aşağıdaki komut yeterli olacaktır.

image

Bu işlemleri yaparken otantikasyon bilgimiz NewContext değişkeni içerisinde yer almaktadır. Yukarıdaki komut ile birlikte blob storage içerisinde public erişime kapalı bir adet container oluşturmuş olduk.

Artık bir blobumuz olduğuna göre bu blob içerisine kopyalama işlemini başlatabiliriz.

image

Görüldüğü gibi Set komutu ile blob içeriğini buluta upload edebildik.

image

Aslında report.csv dosyasımı text ismi ile upload ettim. Artık bana sunulan endpoint üzerinden erişim yetkilerine göre bu dosyaya erişim sağlayabiliriz.

PowerShell yetenekleri sayesinde bu işi otomatize edebilir, çoklu dosyaları upload edebilir, upload status bilgilerini görebilir, alınan hatalara göre exceptionlar belirlenebilir.

Oluşturulan bu dosyaya erişmek istediğimizde, henüz public access olmadığı için aşağıdaki hata alınacaktır.

image

Bu izin atamasını da Set-AzureStorageContainerAcl komutu ile gerçekleştirebiliriz. Bu konutun –Permission isimli bir parametresi bulunur ve aşağıdaki değerleri alabilir.

  • Container: Belirtilen container ve içerisindeki tüm bloblara full read erişimi verilir.
  • Blob: Container yerine sadece blob’a full read erişimi verilir.
  • Off: Yalnızca storage owner içeriğe erişebilir.

Biz aşağıdaki komut ile Container bazında erişim yetkisi verelim.

image

Aynı dosyaya tekrardan erişmek istediğimde dosya otomatik olarak download edilir.

image

image

Benzer aksiyonları New-AzureStorageTable ve New-AzureStorageQueue komutları ile Table ve Queue hizmetleri için de gerçekleştirebiliriz.

Örneğin çok basit bir tablo oluşturalım.

image

Bu tablonun içerisine veri girebilmek için de Storage Client Library (Microsoft.WindowsAzure.Storage.dll) kullanılabilir. Bunun için öncelikle Table içerisine satır ekleyebilecek bir fonksiyon hazırlamamız gerekiyor. Örneğin aşağıdaki fonksiyon işimizi görebilir.

image

Ardından öncelikle account ve key bilgileri aynı şekilde tanımlanır. Sonrasında ise Cloud Storage nesnesi için instancelar oluşturulur.

image

Şimdi çok basit bir döngü ile satırları fonksiyonumuzu kullanarak ekleyelim.

image

Datanın çıktısını görmek için ise aşağıdaki komut satırı işimizi görecektir.

image

Görüldüğü gibi loop ile insert edilen tüm değerler aşağıdaki çıktıda görülmüştür.

image

Bu makalede aslında PowerShell ile Azure Storage servislerini en ince ayrıntısına kadar yönetilebileceğine dair fikir vermeye çalıştık. Default komutlar yetmediği noktada Azure Storage Client Library erişimini gerçekleştirip aksiyon alabildik.

Bu şekilde Azure Storage hizmetleri üzerindeki aksiyonların tamamını PowerShell ile gerçekleştirebilir ve otomatize edebiliriz.

2 thoughts on “Azure Storage Services – Part 8:PowerShell ile Storage Service Kullanımı

Leave a Reply

Your email address will not be published. Required fields are marked *

+ 15 = 25