Bu bölümde, yazılım geliştirme ekiplerince kullanılabilecek bir "İdeal" Pardus iş istasyonu kurulumu ile ilgili uygulama örneği bulacaksınız. Benim tercihim Pardus 19.5 fakat siz güncelde hangi sürüm varsa onu kullanabilirsiniz.
Donanım önerisi: 16GB RAM (min 8GB), i5 ve üzeri işlemci, 500GB (min 256GB) disk alanı
OS Kurulumu
Kurulum için Pardus resmi sitesinden 19.5 XFCE ürününün ISO dosyasını indirip makinamıza kuralım. Daha güncel sürümler geldikçe elbette o sürümleri de kullanabiliriz. Ardından mevcut tüm güncellemeleri geçelim ve kurulum için hazır hale gelelim.
user@machine:~$ sudo apt-get update
user@machine:~$ sudo apt-get upgrade
user@machine:~$ sudo sync
user@machine:~$ sudo reboot
Eğer bir bir sanal makine olarak kurduysanız ilgili platformun misafir eklentilerini de yüklemeniz gerekecek. VirtualBox özelinde Virtualbox guest additions derleme için gerekli tüm paketler aşağıdaki şekilde yüklenir:
user@machine:~$ sudo apt-get install build-essential dkms linux-headers-$(uname -r)
Kernel modülünün derlenmesi, yerleşik sağlanan kurulumda bu kernel sürümü çin modül olmamasından kaynaklanmaktadır. Ardından VirtualBox Aygıtlar->Misafir Eklentileri CD Kalıbını Yerleştir seçeneği ile misafir eklentileri disk kalıbı bu sanal makineye bağlanır (not otomatik olarak bağlanmadıysa mnt /dev/cdrom /media komutuile bağlayabilirsiniz);
user@machine:~$ cd /media/cdrom
user@machine:~$ sudo sh ./VBoxLinuxAdditions.run
Önemli not:
Zaman içinde kernel güncellemeleri geldikçe kernel modülünün yeniden oluşturulması gerekir. Virtualbox içinde pano çift yönlü olarak aktive edilirse kopyalama ve yapıştırma da mümkün olacaktır.
Artık VirtualBox içinde neredeyse doğal bir Pardus kurulumu yapılmış olur.
Pardus içinde CTRL+ALT+Ok tuşu kombinasyonu ile konsollar içinde dolaşabilmek mümkündür. Konsollardan standart bir kurulumda sadece bir tanesi grafik arayüzü gösteriyor olacaktır.
Paket yöneticisi olarak snap, ihtiyaç duyulan birkaç bileşenin kurulumunu oldukça kolaylaştıracaktır. Bunun için hızlıdan kurulumunu yapalım;
user@machine:~$ sudo apt-get install snapd
user@machine:~$ sudo snap install core
Bu aşamada snap binary lerine erişebilmek için bir logout yapmak gerekecek.
XFCE oldukça basit ve temel pencere yönetimi özellikleri sunuyor. Bu nedenle KDE veya GNOME daha uygun bir pencere yöneticisi olacaktır. Özellikle çoklu ekran kullanımında XFCE saç baş yoldurabilir. KDE kurulumu için;
user@machine:~$ sudo apt install kde-full
Komutu ile kuralım. Ardından logout edip ilk login ekranında sağ üstteki üç çizgi menüsünden plasma yı seçerek KDE’ye geçiş yapabiliriz.
Temel Yapılandırma
Geliştirici Araçları
Bu aşamada geliştiriciler için rahat bir ortam oluşturacağız.
Pencil
Pencil çok güzel bir UIX aracı. Bu araç gerek mockup dizaynı ve gerekse akış tasarımı gibi pekçok konuda iyi bir çözüm sağlıyor. Kurmak için ise öncelikle https://pencil.evolus.vn/Downloads.html adresinden 64bit debian paketini indirip ardından;
user@machine:~$ cd ~/İndirilenler
user@machine:~$ sudo apt install ./pencil_3.1.0.ga_amd64.deb
ile kurulumunu yapmak mümkün. Artık geliştirme öncesi analizlerinizde kullanabileceğiniz harika bir aracınız oldu.
Edge Browser Kurulumu:
Bilindiği üzere MS EDGE, Chromium tabanlı bir browser ve sync özellikleri ile çoklu makinede kullananlar için gerekli olabilir.
user@machine:~$ sudo apt-get install curl
user@machine:~$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
user@machine:~$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
user@machine:~$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
user@machine:~$ sudo rm microsoft.gpg
user@machine:~$ sudo apt update && sudo apt install microsoft-edge-beta
Terminator
Ardından daha etkin bir terminal kullanımı için ayarlar yapacağız. Öncelikle Linux üzerinde shell için kullanabileceğimiz bir sürü terminal uygulaması mevcut. Bu makalede sizi Terminator ile tanıştırmak istiyorum. Kurulum için;
user@machine:~$ sudo apt-get install terminator fonts-powerline
komutunu kullanabilirsiniz. Ardından Andres Gongora tarafından hazırlanmış bir scripti bash için daha iyi bir görüntü için kullanacağız. https://github.com/ChrisTitusTech/scripts/blob/master/fancy-bash-promt.sh adresindeki dosyayı home dizine .fancy-bash-prompt.sh olarak kaydedip;
user@machine:~$ echo "source ~/.fancy-bash-promt.sh" >> ~/.bashrc
komutu ile rc dosyasının sonuna .alışacak şekilde edliyoruz.
GIT
GIT olmazsa olmazımız;
user@machine:~$ sudo apt-get install git
Bu aşamada genel yapılandırmayı oluşturalım;
user@machine:~$ git config --global user.name "<Adınız>"
user@machine:~$ git config --global user.email <Eposta Adresiniz>
VSCode
Edge için microsoft pardus depolarını ayarlamıştık, VSCode da bu depoda yer alıyor;
user@machine:~$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/microsoft-vscode.list'
user@machine:~$ sudo apt-get install code
yeterli olacaktır.
Python 3
Python 3 ü sistem için ön tanımlı hale getirelim;
user@machine:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Ardından pip kuralım;
user@machine:~$ sudo apt-get install python3-pip
user@machine:~$ sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
Python işi de tamam. Ben poetry kullanıyorum paket yönetimi için haydi onu da kuralım;
user@machine:~$ sudo pip install poetry
Flutter
Özellikle desktop ve frontend geliştirmede tek codebase kullanmak isteyenler için yakın zamanda popüler bir geliştirme aracı flutter. Bu araç ile Pardus üzerinde web, linux için desktop ve Android platformları için geliştirme yapabiliriz. iOS için bir MacOS çalıştıran makineye ihtiyacınız olacaktır. Yine snap paket yöneticisi ile hızlıdan kuralım;
user@machine:~$ sudo snap install flutter --classic
Bu aşamada reboot gerekiyor. Reboot sonrası;
user@machine:~$ flutter sdk-path
Web geliştirmesi için flutter chrome browser gerektiriyo;
user@machine:~$ sudo snap install chromium
user@machine:~$ sudo ln -s /snap/bin/chromium /usr/bin/google-chrome
Linux desktop geliştirmek için ise gerekli paketleri yükleyelim;
user@machine:~$ sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
Android geliştirme için android studio ya ihtiyacımız olacak;
user@machine:~$ sudo snap install android-studio --classic
SDK yüklemek için;
user@machine:~$ android-studio
Bu aşamada Android SDK larını yüklüyoruz. Dikkat edilecek husus Android SDK ayarları içinde SDK Araçları menüsünden komut satırı araçlarını yüklemiş olmak. Aksi takdirde lisans onayı vermek mümkün olmayacaktır. Artık lisans onayı da verip kurulumu tamamlayalım;
user@machine:~$ flutter doctor --android-licenses
Bu aşamadan sonra flutter için bakalım her şey yolunda mı;
user@machine:~$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.1, on Linux, locale tr_TR.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.57.1)
[✓] Connected device (1 available)
• No issues found!
NodeJS
Sırada NodeJS kurulumu var.
user@machine:~$ sudo apt install nodejs
user@machine:~$ sudo apt install npm
Hepsi bu. Eğer birden fazla sürümle çalışma ihtiyacınız varsa Node Version Manager ile bu soruna kolay bir çözüm de bulabilirsiniz. Yolculuğumuzun üçte birlik kısmına yaklaştık diyebiliriz. Bu aşamadan sonra zaten elle tutulmaz olan sistemimizde daha da sanal ortamlar oluşturacağız. Herşey mış gibi olacak bu bölümde.
Ekran Kaydı
Geliştirici olun ya da olmayın, ekran görüntüsü çekmek sıklıkla gerekli bir işlem. Uzun zamandır çoğumuzun kullandığı OBS Studio'yu da kuralım. Eminim çok gerekecek.
user@machine:~$ sudo apt install obs-studio
Artık acayip fonksiyonel bir kayıt aracımız oldu. Kim bilir belki yarın öbür gün Youtuber olarak bile görebiliriz sizi :-)
DevOps ve Backend Araçları
Bu aşamada backend geliştiriciler ve DevOps insanları için rahat bir ortam oluşturacağız. Herşey tamam görünüyor. Makinemize doğal olarak kuracağımız neredeyse herşeyi kurduk. Bu aşamadan sonra gerekli olacak tüm gereksinimlerimiz (backend, database vs) için;
- KVM içinde kuracağımız sanal makineler,
- KVM içinde oluşturacağımız kubernetes içindeki konteynerlar
- LXD konteynerları
kullanılabilir olacak. Bu sayede sanallaştırma ve konteynerizasyon için mevcut neredeyse tüm seçenekleri kullandığımız bu makineye yüklemiş olacağız. Bundan sonrası -mış- gibi adını verdiğim sanallaştırma ve konteyner platformunun oluşturulmasını içeriyor.
KVM
Bu sistem Pardus üzerinde doğala yakın bir performans ile sanal makineler çalıştırmamızı sağlayacak.
user@machine:~$ sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-daemon bridge-utils
user@machine:~$ sudo apt-get install virt-manager
user@machine:~$ sudo usermod -a -G libvirt <username>
KVM sanallaştırma artık kullanıma hazır.
LXD
LXD, Pardus içinde Pardus Kernel'ini kullanarak başka Linux ların konteyner halinde çalışmalarını sağlayan bir konteyner platformudur. Şimdi LXD kurulumunu da yapalım;
user@machine:~$ sudo snap install lxd
user@machine:~$ sudo lxd init
bu aşamada lxd yapılandırmasını yapıyoruz. Geldiği gibi devam edebilir ya da kendi ihtiyacınıza göre yapılandırabilirsiniz.
user@machine:~$ sudo usermod -a -G lxd <username>
kendi kullanıcınızın lxc komutu ile sistemi kontrol edebilmesi için gerekli ayarlamayı yapacak. Tabi yeniden login ettikten sonra.
Artık Pardus makinemiz hem VM, hem de Container olarak iki farklı tipte sanallaştırmayı destekler hale geldi.
Kubernetes
Makinemizde bir minik kubernetes olsa iyi olur zira developer dostların ihtiyacı olacak. Neden doğrudan Docker kurup onu kullanmadık sorusu akla gelebilir. Bu aşamada kubernetes konusunda kendimizi geliştirmek ve doğal olarak bulut uygulamalarını anlamak ve geliştirdiğimiz uygulamaları CN üzerinde yayınlamak buradaki temel motivasyonumuz.
user@machine:~$ wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O minikube
user@machine:~$ sudo mv minikube /usr/local/bin/
user@machine:~$ sudo chmod 755 /usr/local/bin/minikube
user@machine:~$ minikube start --cpus 2 --memory 4000
4GB ram ve 2 işlemcili bir kubernetes kullanıma hazır. kubectl olmazsa kubernetes’i yönetemeyiz. Bunun için;
user@machine:~$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
user@machine:~$ sudo mv kubectl /usr/local/bin
user@machine:~$ chmod +x /usr/local/bin/kubectl
Tamam gibiyiz.
Kubernetes üzerine iş yükü yüklemek için helm güzel bir paket yöneticisi olan HELM yükleyerek devam edelim.
user@machine:~$ sudo snap install helm --classic
user@machine:~$ helm repo add stable https://charts.helm.sh/stable
user@machine:~$ helm repo update
helm paket yöneticisi de hazır. Hem deneme, hem de yönetim için minikube kubernetes üzerine bir rancher deploy edelim;
user@machine:~$ helm repo add jetstack https://charts.jetstack.io
user@machine:~$ helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
user@machine:~$ helm repo update
user@machine:~$ kubectl create namespace cert-manager
user@machine:~$ kubectl create namespace cattle-system
user@machine:~$ kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.0.4/cert-manager.crds.yaml
user@machine:~$ helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.0.4
user@machine:~$ helm install rancher rancher-latest/rancher --namespace cattle-system --set hostname=rancher.<domain>
Burada önemli not
user@machine:~$ kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 1 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 2 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
user@machine:~$ kubectl -n cattle-system get deploy rancher
tüm replikalar çalıştığında tekrar komut satırına dönecektir. Rancher da hazır olduğuna göre PaaS hazır. (Aslında tüm yapıyı siz yönettiğiniz için kendiniz için bir IaaS olduğu da söylenebilir tabi)
Servisin cluster IP adresini almak için;
user@machine:~$ kubectl get svc -n cattle-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rancher ClusterIP 10.107.191.74 <none> 80/TCP,443/TCP 3m19s
rancher-webhook ClusterIP 10.101.188.215 <none> 443/TCP 15s
/etc/hosts içine;
10.107.191.74 rancher.<domain>
bilgisini girerek addan erişimi mümkün hale getirelim. Burada
user@machine:~$ minikube tunnel
komutunu kullanarak cluster için bir router oluşturup artık kubernetes içindeki servislere cluster ip leri üzerinden erişebiliriz.
Diğer
Video konferans sıkça kullanılan bir çalışma şekli. Bunun için iki uygulamayı yükleyelim. Birisi Zoom, Diğeri MS Teams.
Zoom
user@machine:~$ sudo snap install zoom-client
Teams
user@machine:~$ sudo snap install teams
Eğlence
Elbette bu makineyi kullanacak kişinin biraz da eğlenmeye hakkı var. Spotify üzerinden müzik dinlemek yerinde güzel bir fikir;
user@machine:~$ sudo snap install spotify
Tabiidir ki kimisi de google music sever;
user@machine:~$ sudo snap install youtube-music-desktop-app
Sonuç
Pardus makinemiz bir geliştirici ve/veya DevOps için giriş seviyesinde hazır hale geldi. Başka geliştirme araçları kullanan geliştiriciler de kendi ihtiyaçlarına göre araç gereç bunun üstüne yükleyebilirler. DevOps bu makine ile ne yapacak derseniz bir yerel registry, bir GIT surunucu ve bir image oluşturu hazırlayıp GIT üzerinden uygulama image leri hazırlayıp bunları yerel registry ye gönderip bu registry üzerinden delivery testleri yapabilir.