Windows Server 2019 Nasıl Kurulur

Windows Server 2019 Insider Preview 20 Mart 2018 itibari ile yayınlandı. https://insider.windows.com/en-us/for-business-getting-started-server/ adresinden kısa bir üyelik prosedürü sonrasında yükleyebilirsiniz.

Windows Server 2019 ile pek çok yenilik hayatımıza girecek. Öncelikle GUI siz bir hayata iyiden iyiye alışmak için hala çok geç değil. 🙂 Next Click’ci admin tarih oluyor.

Alışma sürecinde hayatı kolaylaştırmak için Project Honolulu iyi bir araç. Windows Server 2019 u kurduktan sonra yükleyerek işlemlerinizi web based arayüz üzerinden yapabilirsiniz.

Windows Server 2019 kurulumu Windows Server 2016 kurulumundan çok da farklı değil. Bu sebeple adım adım Windows Server 2019 kurulumu yapmayacağım. Ancak command-line a alışık olmayan pek çok system yöneticisi arkadaşım için kısa yoldan Project Honolulu kurulumunu adım adım yazmanın faydalı olacağını düşündüm.

 

Windows Server 2019
Project Honolulu

Kurulum oldukça basit, Project Honolulu kurulum dosyasını Windows Server 2019 diskine kopyalayın. Tüm işlemler için benim izlediğim yöntem aşağıda mevcut.

  1. Windows Server 2019 Firewall u disable edelim. NetSh Advfirewall set allprofiles state off
  2. Sunucumuzun c$ paylaşımına bağlanalım ve dosyamızı bir klasöre kopyalayalım.
  3. Sunucumuz üzerinde Honolulu yu kuralım. msiexec /i HonoluluTechnicalPreview1803.msi /qn /L*v SetupLog.txt SME_PORT=443 SSL_CERTIFICATE_OPTION=generate
  4. https://<ipadresiniz/ ile browser’ınız üzerinden Honolulu ile sunucunuzu yönetebilirsiniz.

Eğer Azure Portal alışkanlığınız varsa Honolulu size çok benzer bir deneyim sunuyor.

Project Honolulu – Windows Server 2019

Project Honolulu hakkında daha detaylı bilgi için https://docs.microsoft.com/tr-tr/windows-server/manage/honolulu/honolulu adresini ziyaret edebilirsiniz.

mscorsvw.exe yüksek cpu kullanımı

.net framework yüklemesi sonrasında mscorsvw.exe %100 e yakın cpu kaynağı tüketmeye başlayabilir.

Bu işlem normal olmakla birlikte etkilerinden hızlıca kurtulmak için sunucu üzerindeki 2 ve 4 versiyon frameworklerde aşağıdaki işlemleri yaparak hızlıca normal cpu kullanımına dönebilirsiniz.

.net framework 2.0 için:

  1. Bir komut satırı açın ve C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 folder ına geçin.
  2. ngen.exe executequeueditems komutunu girin.

.net framework 4.0 için:

  1. Bir komut satırı açın ve C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 klasörüne geçin.
  2. ngen.exe executequeueditems komutunu girin.

birkaç dakika içinde cpu değerleriniz normale dönecektir.

 

 

Ansible ile değişken kullanımı group_vars

Efendim biraz içeriye doğru bir giriş yapalım ve ansible ile daha once tanımladığımız bir değişkeni kullanıcı adı olarak kullanarak bir windows sunucu üzerinde local kullanıcı oluşturalım. Windows üzerinde ansible ile nasıl kullanıcı oluşturulur sorusunun da cevabını vermiş olacağız.

Öncelikle dizin yapımı göstermek istiyorum;

.
├── ansible.cfg
├── group_vars
│   └── all
├── hosts
├── inventory.yml
└── roles

group_vars adında bir klasör altına nano all komutu ile bir dosya oluşturuyorum. Bu dosya bir yaml dosya olduğu için “—” unutmadan değişkenimi tanımlıyorum. Son durumda dosyamız aşağıdaki şekilde içeriğe sahip olacak;

Şimdi bu değişkeni kullanarak bir windows kullanıcı oluşturalım. Bunun için Windows inventory’mde bulunan tüm windowslarda çalışmak üzere aşağıdaki komutu gönderiyorum.

ansible windows -i inventory.yml -m win_user -a "name={{username}} password=Ae123456"

Windows grubumda sadece myansiblewin.ae.local sunucusu tanımlı olduğu için sadece bu sunucuda kullanıcım oluşturuldu.

Gördüğünüz gibi username değişkenimize atadığımız şekilde (my_localuser) kullanıcımız oluştu. Bunu unutmayın daha sonraki örneklerimizde daha anlamlı senaryolarda kullanacağız.

 

Sevgi ile kalın.

 

Ansible – Windows Sunucuları Yönetin

Ansible ile windows sunucularımızı yönetmek için bir başlangıç yapalım istedim,

Öncelikle tamamlamamız gereken bazı adımlar var

  1. Kerberos yapılandıralım
  2. Windows Sunucumuzda WinRM servisini ayaklandırmak
  3. Windows sunucularımızı ansible inventory’mize tanımlamak
  4. Örnek birkaç çalışma

1.  Kerberos yapılandıralım

Örnek yapılandırmalar için kullandığım işletim sistemimi CentOS dan Redhat 7.4 olarak değiştirdim. Tüm yapılandırmalar bu system üzerinden örneklendiriliyor.

a. Kerberos yüklememizi yapalım;

sudo yum -y install python-devel krb5-devel krb5-libs krb5-workstation

b. gcc kütüphanelerine ihtiyacımız olacak;

sudo yum install gcc

c. Winrm bağlantılarımız için Kerberos desteği gerekecek;

sudo pip install "pywinrm[kerberos]"

d. Kerberos konfigurasyonumuzu yapacağız. Bunun için  /etc/krb5.conf dosyasını düzenleyeceğiz. Benim laboratuarımda aşağıdaki bilgiler mevcut, buna göre siz kendi ortamınıza uyarlarsınız.

Active Directory Domain’im: ae.local
Domain Controller sunucum: mydc01.ae.local
Service Kullanıcım: myadmin@ae.local

Bu bilgilere göre benim konfigurasyon dosyam aşağıdaki şekilde,

nano /etc/krb5.conf  komutu ile dosyamızı düzenleyelim. Konfigurasyonun küçük büyük harf duyarlı olduğunu hatırlatmak isterim.

Screen Capture: /etc/krb5.cnf

Eğer her şey yolunda ise kinit myadmin@AE.LOCAL komutunu verdiğimizde aşağıdaki gibi bir mesaj bizi karşılamalı, klist komutu ile de ticket durumumuzu gözlemleyebilmeliyiz. (Benim myadmin in şifresi yakında expire olacakmış :))

Screen Capture: kinit klist

2. Windows Sunucumuzda WinRM Servisini ayaklandıralım:

https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 adresinde bulunan script bize bu konuda hayli faydalı olacaktır. Bu script’i çalıştırırken faydalı olabileceğini düşündüğüm parametrelerini aşağıya yazıyorum. Siz kendi ortamınız için gerekli seçimleri yapabilirsiniz. Script’in içinde hangi parametrenin ne yaptığı ile ilgili detaylı bilgi mevcut. Script’i çalıştırmadan once powershell içinde aşağıdaki kodu verin.

Set-ExecutionPolicy Unrestricted

Script http listener’ı da açtığı için bir güvenlik zaafiyeti yaşamamak adına test ortamımda dahi Basic Authentication’ı disable ediyorum.

ConfigureRemotingForAnsible.ps1 -DisableBasicAuth

Bu komut sizin için Windows üzerinde WinRM I yapılandırdı. Test ortamı için firewall’u disable edebiliriz.

3. Windows Sunucularımızı Ansible Inventory’mize ekleyelim.

nano /etc/ansible/inventory.yml

Inventory dosyamızın içeriği aşağıdaki gibi olacak,

[windows]
SunucuAdımız

[windows:vars]
ansible_ssh_user=myadmin@AE.LOCAL
ansible_ssh_pass=Sifreniz
ansible_ssh_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

#AE.LOCAL benim test ortamımdaki active directory domainim

Ansible ile windows arasındaki iletişimin https üzerinden olmasını istediğim için ssh_port olarak 5986 seçtim, eğer default winrm http portunu kullanacaksanız 5985 kullanabilirsiniz.

Sertifika oluşturmak ile uğraşmadım, sertifika kontrolünü şimdlik pass geçmek için ignore dedim. Bu konuda istek gelirse nasıl Enterprise Sertifika altyapınızdan sertifika oluşturup kullanabileceğinizi de anlatırım. Eğer bu tip bir isteğiniz varsa yorum bölümünden yazabilirsiniz.

Aman efendim sepet efendim. Her şeyimiz hazır. Hadi örnek bir komut çalıştıralım.

ansible windows -i inventory.yml -m win_ping 

Bu sunucu üzerinde Print Spooler servisine ihtiyacım yok, hadi bu servisi de disable edelim;

ansible windows -i inventory.yml -m win_service -a "name=spooler state=stopped start_mode=disabled"

WinRM konusunda daha geniş bilgi istek olursa ileri de ekleyeceğim.

Sevgi ile kalın.

 

CentOS Network Ayarlari Nasıl Yapılır?

CentOS üzerinde network konfigurasyonunuzu yapmak için öncelikle,

ifconfigkomutunu verelim. Elde edeceğimiz sonuç aşağıdaki gibi olmalı.

Bu sayede ethernetimizin ismini öğreniyoruz. Benim sistemimde ens32

nano /etc/sysconfig/network-scripts/ifcfg-ens32

komutu ile ethernetimize ait konfigurasyonu düzenleyelim. Son durumda aşağıdaki gibi bir metnimiz olacak,

TYPE=”Ethernet”
NAME=”ens32″
UUID=”769f8ab9-c861-4e1e-afb3-b95bc863dd7c”
DEVICE=”ens32″
ONBOOT=”yes”
IPADDR=”192.168.192.51″
PREFIX=”24″
GATEWAY=”192.168.192.11″
DNS1=”192.168.192.21″
DOMAIN=”ae.local”

dosyamızı kaydedip network bağlantımızı yenilememiz yeterli. Bunun için,

ifdown ens32
ifup ens32

komutlarını vermeniz yeterli.

Eğer ben Windows’tan geldim, dosyalarla bu kadar uğraşamam bir GUI yok mu bu ayarları yapabilmem için diyorsanız;

nmtui komutunu kullanarak ekranda gelen seçeneklerle ayarlarınızı yapabilirsiniz.

TAB tuşu ile aşağıya kadar gidip tamam’a tıklayın.

 

Adım Adım Ansible Kurulumu – CentOS

Ansible ile çalışmaya ilk başladığımda pek çok örnek Vagrant üzerinden kurulumu anlatıyordu. Ben gerçek ortamlarıma daha yakın sonuçlar elde edebilmek ve gerektiğinde başka çalışmalarımda da kullanabilmek için gerçek bir Linux VM kullanmayı tercih ettim. VMWare workstation üzerine CentOS kurulumu ile başlayalım. VMWare Workstation’ı Sanal Ortam Kullanımı sayfamızdaki linkten edinebilirsiniz.

Bu yazının daha çok Linux’a aşina olmayan Windows Admin’leri için olduğunu söyleyerek başlayayım ki sonradan “GURU” linux adminlerimiz “eh peh” demesinler.  Ansible’ı CentOS ve Ubuntu üzerine ayrı ayrı kuracağım. Ben CentOS’u tercih ediyorum ancak Ubuntu üzerine kurulumu da bir ara eklerim.

VMWare Workstation veya Oracle VirtualBox üzerinde nasıl sanal makine oluşturabileceğinizi bilmiyorsanı Sanal Ortam Kullanımı sayfama bir gözatmanızı önerebilirim.

CentOS’umuzu kurduğumuzu varsayarak kuruluma geçiyorum,

Eğer linux işletim sistemine hakim değilseniz Linux konfigurasyonu için (sadece ansible kurulumunda ihtiyacımız olacak temel bilgiler) kısa kısa notlar eklediğim yazıları kullanabilirsiniz.

Öncelikle IP yapılandırmamızı yapalım. <Buraya CentOS network yapılandırma yazısı eklenecek>

Daha sonra başlayalım kuruluma;

sudo yum -y install epel-release

komutu ile indirmelerimizi yapacağımız repository’mizi ekleyelim. “-y” ile kurulum sırasında emin misin, yüklüyorum bak sorularına baştan YES demiş oluyoruz. Dilerseniz “-y” kullanmadan da komutu verebilirsiniz. 🙂

Daha sonra ansible’ı kurmak için uzun yolumuz başlıyor,

sudo yum -y install ansible

komutunu veriyoruz ve internet hızımıza bağlı olarak kurulumumuz tamamlanıyor. Çok zor oldu değil mi? 🙂

Kurulumumuz tamamlandı. Bundan sonra yapacağımız basit konfigurasyonlar olacak. Detaylarını ekstra olarak ekleyeceğim ilerleyen günlerde ancak madem kurduk bu ansible denen zıkkımı bari hemencecik bir sonuç görelim.

Eğer linux sistemlere aşina değilseniz vi veya favori editorüm vim kullanırken sıkılmanız olasılığı var. Bu yüzden gelmiş geçmiş en kolay kullanımı olan editör “nano” yu sistemimize yükleyerek işe başlayalım.

sudo yum -y install nano

Editörümüzde yüklendiğine göre

sudo nano /etc/ansible/hosts  komutu ile ansible ile yönetmek istediğimiz hostlarımızı tanımlamaya başlayalım. Elinizde fazladan bir Linux sanal makine olmadığını düşünerek ansible kurulumu yaptığımız (şu an üzerinde çalışıyorsunuz) sunucuyu ekleyerek başlayalım.

Örnek dosyamız aşağıdaki gibi olacak. myansible benim sistemimime verdiğim isim, ip adresi de bu sisteme verdeğim ip adresi. Örnekte bu sistemi yönetmek için root kullanıcısını kullandığımı göreceksiniz, bu ortam tamamen izole bir test ortamı ve hızlıca sonuç görmek için yapılandırıyoruz. Aksi durumda root kullanmanızı önermek. İlerleyen örneklerde root olmadan da yapılandırma konusu olacak.

[servers]
myansible ansible_ssh_host=192.168.192.51 ansible_ssh_user=root ansible_ssh_pass=<sifreniz>

Bu aşamada öncelikle aşağıdaki komutu vererek ssh host key check’i kapatalım. Yine test ortamı olduğu için bunu kolaylıkla yapabiliyoruz. İlerleyen yazılarımda düzgün sertifika yapılandırmasını da anlatacağım. Şimdilik,

export ANSIBLE_HOST_KEY_CHECKING=False

komutunu girin.

Evet, herşey hazır gibi, şimdi ansible ile birkaç örnek çalıştıralım;

ansible -m ping all komutunu verdiğimizde elde edeceğimiz sonuç aşağıdaki gibi olmalı. Eğer SUCCESS yerine farklı bir hata görüyorsak bir şeyleri hatalı yaptık demektir.

Bir örnek daha yapalım. Bu örnekte Ansible host dosyamızda tanımladığımız tüm hostlarda echo komutunu çalıştıracak ve sonucu dönecek.

ansible all -a "/bin/echo hello"

Yep, aldığımız sonuç aşağıdaki gibi olmalı;

Ansible’ı kurduk, birkaç basit komutu hosts dosyamızda tanımladığımız sunucularımızda ansible yardımı ile çalıştırıp sonuçları gördük. Bundan sonraki yazılarımda konfigurasyon konusunda biraz daha detaya yavaş yavaş girmeye başlayacağım.

 

Ansible nedir?

Konfigürasyon yönetimi sistemleri, çok sayıda sunucuyu yöneticilere ve operasyon ekiplerine kolaylıkla kontrol edebilmek için tasarlanmıştır. Bir merkezi konumdan birçok farklı sistemi otomatik olarak kontrol etmenize izin verir. Cheff ve Puppet gibi Linux sistemlerinde kullanılabilen pek çok popüler yapılandırma yönetimi sistemi olmasına rağmen, bunlar çoğu insanın istediği veya ihtiyaç duyduğu karmaşıklıktan daha karmaşıktır. Ansible, bu seçeneklere mükemmel bir alternatiftir çünkü başlamak için çok daha az masrafa sahiptir.

Ansible, Ansible bileşenleri kurulu ve yapılandırılmış bir bilgisayardan istemci makinelerini yapılandırarak çalışır. Uzak makinelerden bilgi almak, komutlar vermek ve dosyaları kopyalamak için normal SSH kanalları veya Windows istemciler için WINRM üzerinden iletişim kurar. Bu nedenle Ansible istemci bilgisayarlara herhangi bir ek yazılım yüklenmesini gerektirmez. Bu, Ansible’ın sunucuların yönetimini basitleştiren özelliğidir. Bir SSH bağlantısına sahip olan herhangi bir sunucu, Ansible’ın yapılandırma şemsiyesine, yaşam döngüsünde hangi aşamada olursa olsun getirilebilir.

Ansible modüler bir yaklaşımı benimser, ana sistemin işlevlerini belirli senaryolara göre genişletmeyi kolaylaştırır. Modüller herhangi bir dilde yazılabilir ve standart JSON’da iletişim kurabilir. Konfigürasyon dosyaları esas olarak YAML veri serileştirme biçiminde yazılmıştır; çünkü ifade niteliği ve popüler biçimlendirme dillerine olan benzerliği nedeniyle. Ansible, istemcilerle komut satırı araçlarıyla veya Playbooks adlı yapılandırma komut dosyaları aracılığıyla etkileşimde bulunabilir.

Bundan sonraki yazılarımda Ansible için ortam hazırlanması, kurulumu ve konfigurasyonu gibi konularda paylaşmak istediğim pek çok konu var. Özellikle windows istemcilerin yönetiminde konfigurasyon ve örnek playbook’lara yer vermek istiyorum. Ansible’ın windows sunucular üzerine kurulumundan ziyade windows işletim sistemine sahip sunucularımızın yönetiminde örnek senaryoları sıfırdan sonuna kadar aktarmaya çalışacağım.

Sevdiğim Şarkılar – MyWay

 

My Way
Frank Sinatra
And now, the end is near
And so I face the final curtain
My friend, I’ll say it clear
I’ll state my case, of which I’m certain
I’ve lived a life that’s full
I’ve traveled each and every highway
But more, much more than this
I did it my way
Regrets, I’ve had a few
But then again, too few to mention
I did what I had to do
And saw it through without exemption
I planned each charted course
Each careful step along the byway
And more, much more than this
I did it my way
Yes, there were times, I’m sure you knew
When I bit off more than I could chew
But through it all, when there was doubt
I ate it up and spit it out
I faced it all and I stood tall
And did it my way
I’ve loved, I’ve laughed and cried
I’ve had my fill my share of losing
And now, as tears subside
I find it all so amusing
To think I did all that
And may I say – not in a shy way
Oh no, oh no, not me
I did it my way
For what is a man, what has he got
If not himself, then he has naught
To say the things he truly feels
And not the words of one who kneels
The record shows I took the blows
And did it my way
Yes, it was my way