Ana içeriğe atla

Kayıtlar

2017 tarihine ait yayınlar gösteriliyor

DevOps Yolculuğum - 1 - Continous Delivery

DevOps Yolculuğum 2018 yılıyla birlikte kariyerime DevOps Mühendisi olarak devam edeceğim. Bu zamana kadar IT altyapı ve operasyon ekiplerinde kazandığım, server operasyon ve yönetimi, veritabanı operasyon ve yönetimi, uygulama operasyon ve geliştirme deneyimlerimi DevOps için kullanacağım. Bu süreçte fırsat buldukça DevOps adına öğrendiklerimi blog yazılarımda toparlamayı hedefliyorum. Umarım hem yeni kariyer hedefimde hem de blog zinciri hedefimde başarılı olabilirim:) Bu zincirdeki ilk yazımda Continous Delivery mekanizmasından bahsetmeyi düşündüm. Umarım bana ve okuyan herkese faydası dokunur. Continous Delivery Nedir? Continous Delivery temelde software release sürecinin tamamını etkileyen yazılım mühendisliği yaklaşımıdır. Test otomasyonu, uygulama deploymentlarının otomasyonu ve development sırasında kullanılan süreçlerin otomasyonu Continous Delivery'nin önemli bileşenleridir. Continous Delivery'in temel hedefi büyük ölçekli dağıtık ortamlara, kompleks pr

Windows Feature Batch Deployment

Aşağıdaki function ile bir sunucu üzerinde oluışturduğumuz configuration file dosyası ile uzak lokasyondaki birden çok sunucuya yükleme yapabiliriz. Umarım faydalı olur, her türlü ek geliştirme için hakki.ogretmen@gmail.com adresine mail atabilirsiniz. function Invoke-WindowsFeatureBatchDeployment { param ( [parameter(mandatory)] [string[]] $ComputerNames, [parameter(mandatory)] [string] $ConfigurationFilePath ) # Deploy the features on multiple computers simultaneously. $jobs = @() foreach($ComputerName in $ComputerNames) { $jobs += Start-Job -Command { Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart } } Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult }

Check Computer Object is Alive On Domain

Powershell'in gücü system admin rolündeki kişiler için tartışılmaz. Zaman zaman üzerinde aging tanımı olmayan ortamlarda, düzgün yönetilemeyen domain ve dns ortamlarında aslında kapalı olan ve kapalı olmamasına rağmen domainden düşmüş computer objelerinin tespit edilebilmesi için aşağıdaki gibi bir script geliştirmiştim. Umarım faydası olur, her türlü ek geliştirme için hakkiogretmen@gmail.com adresine mail atabilirsiniz. Import-Module ActiveDirectory $myServers = @("servers") If (Test-Path "D:\Temp\PasswordLastSetResult.txt"){ Remove-Item "D:\Temp\PasswordLastSetResult.txt" } $Servers_OU =  "OU=ServersOU,OU=ABCServersOU,DC=mydomain,DC=dmn,DC=com" foreach ($myserver in $myServers)         {         $mycomp = Get-ADComputer –SearchBase $Servers_OU –SearchScope SubTree -Filter { OperatingSystem -like "Windows Server*"} -Properties PasswordLastSet,IPv4Address | Select * | Where-Object {$_.Name -eq $myserver} trap [Syste

Configure IIS Application pool to use gMSA

Daha önce yayınladığım  gMSA oluşturma  yazımda Active Directory'de nasıl gMSA oluşturacağımı paylaşmıştım. Bu yazıda ise bu gMSA 'i nasıl web application sunucusunda kullanıma alacağımızı aktarmaya çalışacağım. Web Application'ımız veritabanı bağlantısı kuracak ise SQL Server'da gMSA'i yetkilendirme yazımı inceleyebilirsiniz. Umarım faydalı olur. IIS Manager'ı (run-->inetmgr) açarak Application Pools listemizi açmalıyız. Application Pools Llist Değişiklik yapmak istediğimiz Application Pool seçilerek Advanced Settings ekranı açılır. Bu ekranda değiştireceğimiz alan Identity alanıdır. Advanced Settings --> Identity Application Pool'umuz gMSA kullanıcımız verilerek konfigüre edilir. Username kısmına domain\gMSA$ şeklinde gMSA eklenir. Password Active Directory tarafından yönetildiği için bu alanlar boş bırakılır. Configure Identity Credentials Uygulamamız içerisinde Windows Authentication kullanılmıyorsa connection string'imizi d

Configure gMSA as login on SQL Server Instance

Daha önce yayınladığım  gMSA oluşturma  yazımda Active Directory'de nasıl gMSA oluşturacağımı paylaşmıştım. Bu yazıda ise bu gMSA 'i nasıl SQL Server database'inde oluşturup, yetkilendireceğimizi aktarmaya çalışacağım. Umarım faydalı olur. test domaininde create edilmiş testIISAppPool1 isimli gMSA 'i SQL Server'da login olarak tanımlayacağım. SQL Server sunucumuzu gMSA için daha önce oluşturduğumuz security group üyeleri arasında eklediğimizden ve bu işlemi yaptıktan sonra policy refresh için suncuyu restart etmiş olduğumuzdan emin olmalıyız.  Ek olarak gMSA 'i yazdıktan sonra sonuna $ eklememiz gerektiğini de unutmamalıyız.  Configure gMSA on Sql Server

gMSA (group managed service account) and SQL Server

MSA (managed user account) teknolojisinin sorunlarından bir tanesi aynı MSA'i birden fazla computer objesinde kullanamamaktı. Bu nedenle de gMSA (group managed service account) duyuruldu. gMSA ile; Passwordler Active Directory tarafından yönetileceği için complex olurlar ve sık sık otomatik olarak değiştirilir (default 30 days). Passwordler 240 bytes uzunluğunda randomly şifrelenmiş olarak üretilir. Ek olarak interactive logon amaçlı kullanılamazlar, yanlış şifre girilmesi sonucunda meydana gelen lock-out olma durumuna yakalnmazlar. Şifre değişikliği sonrasında SQL Server Servisinin restart edilmesine gerek bulunmaz. Aşağıda belirtilen adımlar pre-reqlerin tamamlanmış olduğu varsayılarak step by step aktarılmıştır. Prerequisetlerle ilgili detaylı bilgilendirmeye  https://technet.microsoft.com/en-us/library/jj128431.aspx#BKMK_gMSA_Req  linkinden erişilebilir. 1-  Active Directory Users and Computers Altında Global Security Group Oluşturma gMSA 'i kullanacağımız sun

SPN Registration for SQL Server

SSRS altyapı olarak HTTP kullandığı için SPN bu şekilde register edilir (SSRS aslında Web Servistir) setspn -S HTTP/servername.domain.com:port domain\accountname SQL Server için SPN register MSSQLSvc kullanılarak yapılılr. Normal şartlarda SQL server her start sırasında SPN registration işlemi yenilenir. setspn -S MSSQLSvc/servername.domain.com:port domain\accountname Analysis Services için SPN register MSOLAPSvc.3 kullanılarak yapılır. setspsn -S MSOLAPSvc.3/servername.domain.com:instance domain\accountname Bu işlemleri yapmak için Domain Admin yetkileri gerekmektedir. SPN listesini görmek için ise -L parametresi kullanılır.  setspsn -L domain\accountname

Start SQL Server in Single-User Mode

Bu yazı SQL Server start sonrasında yaşanan problemlerin önüne geçmek için SQL Server'i single user mode'da açmak istenilmesi üzerine yazılmıştır. Bunun için SQL Server startup parametrelerinden -m kullanılmalıdır. Ancak SQL Server'i bu parametreyle açtığımızda aşağıdaki durumların oluşacağını unutmamalıyız. Sadece bir user sql'e connect olabilir Checkpoint processi execute edilemez. By default, otomatik olarak açılışta çalıştırılır. Bu mode'da master dışında bir db recover edilemez. Sonrasında SQLCMD ile veritabanına connect olarak işlemlerimizi yapabiliriz. Bizim yaşadığımız casede Mirror endpointleri aradığı için SQL Server Servisi açıldıktan bir süre sonra hizmet veremez hale geliyordu. Çözüm olarak SQL Server'i Single-User mode ile açarak aşağıdaki komut ile database mirroring session silinerek, database'den mirroring özelliği kaldırılır. ALTER DATABASE DBNAME SET PARTNER OFF Faydası olması dileğiyle,

PWDCOMPARE() ile SQL Server'da NonCompliant Password kontrolü

Bu yazı SQL Server 2008 ve sonrasi için geçerli bir yazıdır. SQL Server üzerinde tanımlı SQL loginlerin şifrelerinin bazı çok bilinen şifrelerle aynı olup olmadığı kontrolü yapılır. Faydalı oması dileğiyle. İlgili Transact-SQL'in kullanım şekli (syntax) aşağıdaki gibidir. PWDCOMPARE ( 'clear_text_password', password_hash [ , version ] ) Kullanılabilecek argümanların açıklaması aşağıdaki gibidir.  clear_text_password: Kontrol edeceğimiz şifrelenmemiş (unecnrypted) password.   password_hash: Logine ait password encrption hash bilgisi.  version: İsteğe bağlı olarak kullanılabilen bu parametre ile SQL Server 2000 öncesinden  taşınan ancak yeni versiyona convert edilmemiş loginlerin password_hashlerinin kontrol  edilmesi imkanı tanınır. Aşağıdaki T-SQL ile şifresi boş olan loginler getirilir. SELECT name FROM sys . sql_logins    WHERE PWDCOMPARE ( '' , password_hash ) = 1   Aşağıdaki T-SQL ile şifresi password olan loginler getirilir. SE

VbScript ile Local Kullanici Yönetimi (Change Local User Password)

Bu yazı Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 ve Windows Server 2016 işletim sistemleri üzerinde kullanılabilecek bilgiler içerir. Birden fazla sunucuda ya da bilgisayar üzerinde işlem yapmak otomasyon ve scripting gerektiren bir süreçtir. İhtiyaç dahilinde yazmış olduğum scriptle txt uzantılı bir dosyadan sunucu isimleri teker teker okunarak, loop döngüsü içerisinde sunuculara bağlantı kuruluyor ve şifresi değiştirilmek istenilen local kullanıcının sistemde tanımlı olup olmadığı kontrol ediliyor. Eğer local kullanıcı yok ise kullanıcı verilen şifre ile create edilerek administrators lokal grubuna dahil ediliyor, kullanıcı sistemde tanımlı ise şifresi yeni şifreyle değiştiriliyor. Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile("D:\computerlist.txt", 1) myUserName = "myUser" myPassword = "myNewP@$$w0rd" Do Until objTextFile.AtEndOfStream

Powershell Kullanarak Windows Features Yönetimi (Import And Export)

Bu yazı Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 ve Windows Server 2016 işletim sistemleri üzerinde kullanılabilecek bilgiler içerir. Yazıyı okumaya başlamadan önce yazı içerisinde kullanılacak Get-WindowsFeature ve Add-WindowsFeature cmdletleriyle ilgili detaylı bilgileri inceleyebilirsiniz. Kendi ortamınızda test yapmadan önce ServerManager modülünü import etmelisiniz, Import-Module cmdlet için de yine MSDN üzerindeki bilgilerden faydalanabilirsiniz. Umarım faydalı bir yazı olmuştur. Birden fazla sunucuya benzer kurulumları yapmak istediğimizde karşımıza operasyonel zorluklar çıkabiliyor. Bu işlemleri hızlandırmanın & standart bir hale getirmenin bir çok yolu var ancak bu yazıda bir sunucu üzerinde kurulu Windows Feature'ların powershell ile toplanarak, diğer bir sunucuda kurulması için en basit olduğunu düşündüğüm yöntemi paylaşacağım. İlk olarak servermanager modülünün Powershell sessionımıza import edilmesi gerekmekted