Posts by Emre Bozlak

System Center Orchestrator içerisinde farklı bir kullanıcıyla Run Program aktivitesi çalıştırmak

Orchestrator her ne kadar powershell ve basit .net kodlarını direk çalıştırmamızı sağlasa da  daha kompleks uygulamalar ve scriptler için “Run Program” isimli aktiviteyi kullanmak zorundayız. Bu aktivite ile çalıştırılan yazılım ve scriptler Orchestrator servis kullanıcısıyla çalıştırılmaktadırlar. Doğal olarak bazı durumlarda (Uzak bir sunucuya erişilmesi veya özel bir sevisin çalıştırılması gibi) mevcut servis kullanıcısının yetkileri yeterli olmamaktadır. Bu durumun çözümü için sadece bu aktivitenin başka bir kullanıcı tarafından çalıştırılmasını isteyebiliriz.Bunu yapmak için aşağıda ki adımları izleyebilirsiniz.

  • İlk yapmamız gereken “Run Program” aktivitesi üzerine gelip sağ tıklayıp “Properties” seçeneğini seçelim.
  • Gelen ekrandan “Advanced” sekmesine tıklayın
  • Aşağıda bulunan “Run as” kısmına istediğimiz domain\kullanıcıadi ve şifreyi yazalım.runas

Bu kadar.

Ben DB,Exchange,System ve Backup işlemleri için ayrı ayrı kullanıcılar yarattım ve runbook hangi işlemle ilgiliyse o kullanıcıda çalışmasını sağlıyorum. Böylelikle DB admininin yaptığı bir runbook kazayla Exchange sunucularına ulaşamıyor veya bir işlem yapamıyor.

Windows Sysprep yapmak ve klone işlemi

Aslında bu yazımda sysprep nedir ve nasıl kullanılır diye bahsetmek istemiyorum, hepimizin bildiğine ve kullandığına eminim. Başıma gelen bir anımı ve çözümü anlatarak sysprep’i nasıl kullandığımı göstermek istiyorum.

Bundan bir kaç gün önce var olan bir VM’in bire bir kopyasını almam gerekti. Doğal olarak yaptığım şey sıfırdan kurmak yerine VM’i klonlamak oldu ama unuttuğum bir şey vardı. Orijinal VM AD’e kayıtlıydı ve domain’de aynı CID’e sahip iki sunucu çakıştığı zaman her ikisi de çalışmadı. Bu durumdan kurtulmak için öncelikle sunuculardan birini kapatıp giriş yapabildiğim diğer sunucuda “sysprep” çalıştırdım. Bu hem CID hemde computer name’i değiştirdiği için sorunumu çözdü.

Siz siz olun benim yaptığım hatayı yapmayın 🙂

Orchestrator’da eş zamanlı çalışacak runbook sayısı

Normal koşullarda System Center Orchestrator’da eş zamanlı çalışacak runbook sayısı 50 adettir. Operasyonlarımız büyüdükçe veya self-service portalimize ek özelliler eklemek istedikçe runbook sayımızda artmaktadır; bu sebepten dolayıdır ki bu sayıyı artırmamız gerekiyor.Bunun için Orchestrator kurulumunda gelen throttling aracını kullanabiliriz.

Öncelikle komut satırından “C:\Program Files (x86)\Microsoft System Center 2012\Orchestrator\Management Server” girin.

Daha önce bahsetmiş olduğum throttling aracının kullanımı “aspt <RunbookSunucuAdı> <RunbookSayısı>” şeklindedir. Bir örnek vermem gerekirse

aspt.exe RunbookServer 100 komutu maksimum runbook sayısını 100 yapmaktadır. Eğer birden fazla runbook sunucunuz varsa

aspt.exe * 100 komutuyla tüm runbook sunucularının eş zamanlı çalışan runbook sayısını artırabilirsiniz.

ASPT kullanımı

 

Vmware VM Console Bağlantısını Limitleme

Kalabalık bir ekiple çalışıyorsanız, aynı anda birden fazla kişi aynı VM’in konsoluna ulaşıp işlem yapmaya çalışması veya yapılan işlemleri izlemesi olağan bir durumdur. Tabii bazı durumlarda sistem yöneticisi konsola yapılan bağlantı sayısını sınırlamak isteyebilir. Unutmayın açılan her konsol çok azda olsa Vmware üzerinde bir baskı yaratır. Aynı zaman da Vmware’in yayınladığı “Hardening Guide” içerisinde konsol sayısının limitlenmesi önerilir.

Not: Bu ayarın yapılabilmesi için VM’in kapalı olması gerekmektedir.

  • Vm’e sağ tıklayın ve “Edit Settings” seçeneğini seçin
  • Yukarıda ki tablardan “Options” seçeneğini seçin
  • Gelen listede “Advence” altında bulunan “General” seçeneğine tıkladığınızda sağ tarafta ki panelde “Configuration Parameters” belirecektir.makssnapshot-1
  • Buradan vmx değerlerini değiştirebilirsiniz. Değiştirmemiz gereken parametre ” RemoteDisplay.maxConnections “. Bu sayıyı bir veya istediğiniz sayı yapabilirsiniz.

Invoke-Command ile Parametre Kullanımı

En iyi sistem yöneticisi gündelik operasyonel görevlerini scripte eden sistem yöneticisidir.Doğal olarak güncelik işlerimizi scripte döküp mümkün olduğunca elle yapmaktan kaçınırız. Powershell sayesinde uzaktaki bir sunucuya bağlanıp istediğimiz komut veya scriptleri çalıştırabiliriz. Ben genelde yazmış olduğum scriptler veya runbook’lar içerisinde mümkün olduğu kadar “invoke-command”  kullanıyorum. Bu fonksiyon sayesinde uzak bir sunucuda tek bir komut veya birden fazla komutu çalıştırabilir ve çıktılarını daha sonra kullanmak için bir değişken içerisinde tutabilirim.

Bazı arkadaşlarım bana neden “Enter-Pssession” kullanmadığımı soruyor. Öncelikle Enter-PSSession kalıcı bir ihtiyaç duyuyorsanız ideal bir çözümdür. Bir kere uzak sunucuya bağlandığınızda session hep açık kalır. Bu hem iyi hem de kötüdür. Uzaktaki sunucuya hiç “remote desktop” yapmadan powershell ile bağlanıp yönetmenizi ve scriptler çalıştırabilirsiniz. Bir taraftan da kötüdür. Düşünsenize bir monitoring aracınız sürekli olarak sunucularda ki servislerinizi izliyor ve bir servis durduğu zaman ip adresini powershell scriptinize yollayıp otomatik bağlanmasını ve servisi başlatmasını istiyorsanız kalıbı bir bağlantı sağlanması veya her işlemden sonra bağlantıyı sonlandırmak için ek fonksiyonları çağırmak(Remove-PSSession) külfetli geliyor.

Invoke-Command ise bağlantıyı kurup çalışıp çıkış yaptığından dolayı benim daha çok tercih ettiğim bir fonksiyondur. Peki nasıl kullanılır?Mesela uzaktaki bir sunucuya bağlanıp registery kaydına bir şey ekleyen bir script hazırlayalım.

Başka bir yazımda bahsettiğim gibi “stored credential” kullanarak yeni bir session yaratabilirsiniz.Ya da aşağıda ki komutu kullanarak bir popup içerisinde username ve şifrenizi girebilirsiniz.

$cred = Get-Credential -Credential  <domain\username>

#Session yaratmak için önce credential’ları almamız gerekiyor. Stored credential veya yukarıda ki yöntemi kullanabilirsiniz.

[string]$reg1 = “Test”       
$session = New-Pssession –ComputerName <remoteServer> -Credential $cred
Invoke-Command –Session $session –ScriptBlock { New-ItemProperty -Path HKLM:\SOFTWARE\Test -Name Kritiklik -PropertyType String -Value args[0] } -Args $reg1

Burada önemli olan nokta –Args ile listelediğimiz değişkenleri uzaktaki sunucuda çağırmak istersek değişkenleri verdiğimiz sırayla numaralandırmalıyız. Örnek olarak

-Args $reg1 $reg2 $reg3
ScriptBlock içerisinde şu şekilde kullanılmalıdır
$args[0] $args[1] $args[2]

Invoke-command’u runbooklarınız içerisinde de kullanabilirsiniz.