DevOps etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
DevOps etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2 Nisan 2023 Pazar

pyuic ile python (.py) Dosya Dönüştürme Hatası Çözümü

 PyQt5 ile hazırladığım bir formu MainWindows.ui dosyasını python dosyasına dönüştürmek istiyorum ancak dizinde .ui dosyasını görmüyor veya dönüştürme işlemi yapılsa bile dosyanın içeriğine bakıyorum herhangi bir kod gözükmüyor. Bunu çözmek için dönüştürmek istediğim .ui dosyasını shift tuşuna basılı turarak power shell ile açtım ve aşağıdaki kodu burada çalıştırarak kodların dönüştürülmesini sağladım. 

python -m PyQt5.uic.pyuic -x MainWindows.ui -o MainWindows.py


29 Mart 2023 Çarşamba

Docker İmajları Export Etme ve Sanal Sunucudan Dışarıya Yedekleme - Backup SCP Copy

İmajları yedek aldım ve VirtualBox üzerindeki yedek dosyasını test olması için önce windows makineme sonra tekrar geriye sunucuya aktarıp orada yükleme işlemini yani load işlemini gerçekleştirdim. Aşırı keyif aldım aşırı :)

Kullandığım bazı komutlar:

#Docker imajları dışarıya export ettirme
docker save alpine:3.12 -o /home/imajlar/alpine.tar
docker stop Deneme1 #Senaryo için konteyner durduruldu ve ardından silinecek
docker rmi -f $(docker images -aq)
#Konteyner import etme işlemi
docker load -i /home/imajlar/alpine.tar


#VirtualBox Linux to Windows File Transfer - Backup
scp root@192.168.1.200:/home/imajlar/alpine.tar c:\Users\hrapo\OneDrive\Masaüstü\DevOps\
scp c:\Users\hrapo\OneDrive\Masaüstü\DevOps\alpine2.tar root@192.168.1.200:/home/imajlar/



28 Mart 2023 Salı

Docker Hub İlk Push Komutumu Kullandım

 Docker gerçekten çok keyifli bir ortam. Test ortamında yeni şeyler denedikçe daha fazla şey öğreniyorum ve gelişimim çok hızlı bir şekilde ilerliyor. Umarım sıkılmadan devam edebilirim :)


Bugün kullandığım bazı komutlar:

#Docker login and images push
docker login
docker logout
docker images
docker info | grep Registry
docker image tag alpine:3.12 gundillias/alpine:3.12
docker image push gundillias/alpine:3.12
docker pull hello-world
docker rmi feb5d9fea6a5

#Docker tüm konteynerlari kalıcı olarak silme
docker rmi $(docker images -aq)
docker rmi -f $(docker images -aq)

21 Mart 2023 Salı

Docker Container Prune - Çok Hızlı Çalışıyor

 Bir süredir Docker eğitim videolarına bakıyorum ve teknolojiyi öğrenmeye çalışıyorum. Bir sonraki hedefimde kubernetes ve AWS gibi sistemler olacak. Bugün ilginç bulduğum bir komut öğrendim. Pasif olan tüm konteynerleri imha etmeye yarıyor. Dikkatli kullanmakta yarar var.

#docker container prune

Denemek için sanal sunucuda birkaç tane konteyner oluşturup ardından prune komutunu deneyebilirsiniz. Sonuç aşağıdaki gibi oluyor.

Docker


14 Mart 2023 Salı

Oracle VM VirtualBox - Entegrasyon Problemi | Pencereye Tıklayamamak ve Ekranın Sol Üstüne Sürekli İmleç Kaymasının Çözümü

 Bu sorun benim başımı çok büyük bir şekilde ağrıtmıştı ve sırf bu sorun nedeniyle bilgisayarımı formatlayıp çalışmalarıma sıfırdan başlama kararı bile aldığım oldu. Şimdi bunun çözümüne ulaştım ve buradan da herkesle paylaşmak istiyorum. Kendime de kısa bir not olsun. Benzer bir mouse imleç problemi yaşadığınızda lütfen aşağıda gördüğünüz seçenekleri kontrol edin ve güncelledikten sonra sanal makinelerinizi yeniden çalıştırın. Ben bu şekilde çözebildim ve çok rahatladım. Ctrl gibi herhangi bir tuşa basmadan sanal makine penceresine ve normal bilgisayarımdaki ekranlara direkt geçiş sağlayabiliyorum ve çok rahat bir şekilde her şeyi kullanıyorum. Bu şekilde daha da rahat oluyor.

14 Ocak 2023 Cumartesi

DevOps Yolunda Önce Docker mı yoksa Kubernetes mi Öğrenmeliyiz?

Docker, uygulamaların çalışmasını sağlamak için kullanılan bir container teknolojisidir. Kubernetes ise, container'ların yönetimi, dağıtımı ve skalasını sağlamak için kullanılan bir araçtır. Öncelikle Docker öğrenmeniz önerilir, çünkü Kubernetes container'ları yönetirken Docker kullanır. Ancak, uygulamalarınızı dağıtmak ve skalalamak istiyorsanız, Kubernetes öğrenmeniz daha yararlı olabilir.

4 Ocak 2023 Çarşamba

Ansible Varsayılan Yapılandırma ve Görevleri Farklı Playbooklara Dağıtma

 Ansible eğitiminde fena gitmiyoruz. En son yapıyı yeniden kurgulamaya ve her bir görevi farklı playbooklara dağıtmaya çalışıyoruz. Aşağıdaki resimde de görüldüğü gibi bir dizin kurgusuna gittik. Bu sanırım Ansible Docs'un istediği veya önerdiği bir yapı. Her bir görevin altında dikkat ederseniz bir main.yml dosyası var. Ayrıca tree isimli yeni bir komut öğrendim. Linux'ta dizin alt yapısını öğrenmek için bu komutu kullanabiliyorsunuz ancak yüklü olması gerekiyor. Yüklemesi birkaç saniyelik bir işlem. Denemenizi öneririm.

Ansible Dosya Yapısı


27 Aralık 2022 Salı

Ansible'da Değişkenler ve Inventory Dosyasında Sunucuları Gruplandırma

 Ansible'ın yeteneklerini gördükçe heyecanlanıyorum ve gerçekten ufkum genişliyor diyebilirim. Birçok şey yapmaya başladık. Bugün varsayılan yml dosyası oluşturup inventory dosyamızda sunuclarımızı gruplandırdık ve görevleri yine worker'lar üzerindeki sunucu tiplerine göre çalıştırmayı başardık. Yeni yml dosyamızda artık görev görev yapılacak işlemleri ekleyip sonucunun gerçekleşmesini bekliyoruz. Yml dosyasının son hali:

inventory:

[web_sunuculari]
192.168.1.64 

[veritabani_sunuculari]
192.168.1.65 

apache_varsayilan.yml:

apache_sunucusu: apache2
php_kutuphane: libapache2-mod-php

***

---
  - hosts: all
    become: true
    tasks:

    - name: Bu gorev, sunucu güncellemeleri için hazırlanmıştır.
      ansible.builtin.package:
        upgrade: dist
        update_cache: yes
      when: ansible_distribution == "Ubuntu"
    # worker'ların arasında Rocky olsaydı update_only: yes ve
    distirbution kısmı "Rocky" olarak ayrıca eklenecekti.
       

    # Bu görev Ubuntu için Apache ve Php kütüphanesini yükler.
  - hosts: web_sunuculari
    become: true
    tasks:

      - name: İşletim sistemlerini tespit et.
        debug: var=ansible_os_family

      - name: Dosyalardan değişkenleri oku
        include_vars: "{{ lookup('first_found', params) }}"
        vars:
          params:
            files:
            - "vars/apache_{{ ansible_os_family }}"
            - "vars/apache_varsayilan.yml"

      - name: Bu gorev, Ubuntu için apache ve php kütüphanesi ile
                birlikte paket index'ini gunceller.
        ansible.builtin.package:
            name:
              - "{{ apache_sunucusu }}"
              - "{{ php_kutuphane }}"
            state: latest

26 Aralık 2022 Pazartesi

gather_facts komutu

 Ansible otomasyonu eğitimi çok güzel gidiyor. Playbook'ları özelleştirmeye ve farklı yöntemler kullanmaya başladık. Örneğin değişkenleri kullanarak playbook'ları özelleştirdik. Listede yer alan farklı türdeki linux dağıtımları için parametrelerden yararlanarak görevi detaylandırabiliyorsunuz. Ansible ile ilgili yaptığımız çalışma hakkında daha sonra detaylı bilgi tekrar paylaşmaya çalışacağım. Bir de şöyle bir komut kullandık bu hoşuma gittiği için özellikle blog yazmak istedim. Bir worker hakkında dözet bilgi çekip detayına bakmanıza yardımcı oluyor, hangi Linux dağıtımı vs. gibi.

$ ansible all -m gather_facts --limit 192.168.1.64 | grep ansible_distribution

Ve dönen yanıt:

Ansible


24 Aralık 2022 Cumartesi

Ansible Playbook ile Apache Kurulumu Yaptım

 Playbook oluşturmak ve içerisine eklediğimiz görevleri tek bir komutla tüm sunuculara uygulamak gerçekten büyük bir kolaylık. Ufkum genişledi diyebilirim. Eğitim sürecinde şöyle bir şey yaptık, ansible-otomasyonu klasörümüzde bir yml dosyası oluşturduk ve içerisine yapmak istediğimiz görevleri ekleyip kaydettik. Komutlar sırasıyla apt index'ini güncelliyor, ardından apache ve php kurulumunu da yaparak görevi tamamlıyor.

apache_yukleme.yml dosyasının içeriği:

---
  - hosts: all
    become: true
    tasks:

    - name: Bu gorev, apt paket index'ini gunceller.
      apt:
        update_cache: yes

    - name: Bu gorev, apache2 yuklemesini gerceklestirir.
      apt:
       name: apache2
       state: latest

    - name: Bu gorev, apache icin php kutuphanesini yukler.
      apt:
       name: libapache2-mod-php
       state: latest


Playbook'u çalıştırdığımız komut:

ansible-playbook --ask-become-pass apache_yukleme.yml

Visual Studio Terminal ile Githup Commit

git config --global user.name "name"
git config --user.email "e-mail"

21 Aralık 2022 Çarşamba

Ansible Maratonuna Devam - ansible.cfg Dosyasını Oluşturdum

Yazdığımız konfigürasyonla birlikte tüm sunuculara tek bir komutla ve o komutu kısaltarak ping atmayı başardık. Ayrıca bunun dışında tüm sunucuları tek bir komut ile reboot edebildik. Gayet keyifli bir konuydu. Çok yavaş ilerlediğimin farkındayım ama en azından ilerliyorum diyelim :)



17 Aralık 2022 Cumartesi

SSH Remote Host Identification Has Changed - knowsn_hosts Dosyası

 Daha önce ssh bağlantısı kurulmuş ve belirli anahtarlarla bu parmak izleri dijital olarak bilgisayara tanıtılmış ancak sıfırdan yepyeni bir ssh atılmak isteniyorsa cmder veya kabuk aşağıdaki gibi bir hata verecektir. Bu aslında bir kimlik saldırısı olma ihtimaline karşı önlem amaçlı kullanıcıyı uyaran bir sistemdir. Hangi durumda karşılaştım: Daha önce kurduğum ve ssh bağlantısı oluşturduğum sanal sunucumu yeniden aynı konfigürasyonlarla kurduğumda ve ssh atmak istediğimde bu uyarıyla karşılaştım. Yani bilgisayar ssh atılacak yer için daha önce oluşturulmuş bir kayıtla verilerin uyuşmadığını dolayısıyla bunun bir tehdit olabileceğine karşı beni uyarıyor. Çözüm olarak knowsn_hosts dosyasının içerisindeki ilgili kayıtları temizledim ve bağlantıyı yeniden oluşturdum.

knowsn_hosts Dosyası


14 Aralık 2022 Çarşamba

İlk Shell Dosyamı Oluşturdum

 Ansible otomasyonu için kurulum aşamalarını shell ile yapmaya çalışıyorum.

nano ansible.sh
chmod +rx ansible.sh
bash ansible.sh

7 Aralık 2022 Çarşamba

Visual Studio Code ile SSH Yapmak

Bunun için Microsoft'un SSH araçlarını Visual Studio'ya yükledim. Yükleme işlemi için daha önceden oluşturduğum dosya üzerinden Ctrl+Shift+P kombinasyonunu kullandım. Kurulum sonrasında aynı kombinasyonu kullanarak SSH host'u tanımladım ve bunu yaparken ssh panel@192.169.1.63 komutunu girdim. Bağlantı sırasında tabii ki şifre soruyor. Birde bugünkü çalışmalarımın arasında Githup üzerinden yeni bir repostory oluşturarak master sunucum için kullanacağım Visual Studio ile eşleştirmek oldu. Böylece sunucu üzerinde yaptığım işlemleri, oluşturduğum klasörleri vs. Github'a rahatlıkla gönderebileceğim.


Bunu henüz çözemedim, şimdilik ansible otomasyonunda bu aşamadayım.


6 Aralık 2022 Salı

Ubuntu Sunucularına Kalıcı (Statik) DNS Ayarı Girmek

 /etc/resolv.conf dosyasını nano ile açarak DNS girebiliyorsunuz ancak bu o anki oturumunuz sırasında geçerli oluyor ve sunucuyu kapatıp açtığınızda veya yeniden başlattığınızda DNS ayarlarınız eski haline geri dönüyor. Bunu kalıcı olarak düzeltebilmek için öncelikle Resolv.conf dosyasını unutmanız gerekmekte. Öncelikle bu dosyayla bir işiniz yok. Daha statik bir işlem yaparak bunu düzeltmek mümkün.

sudo nano /etc/netplan/00-installer-config.yaml

Ardından ilgili tabloyu DNS dahil diğer IP bilgilerinizle birlikte sytax'a uygun doldurmanız gerekiyor. Bu tabloda yazım kurallarına dikkat etmelisiniz. Çünkü doğru yazılmadığında IP veya DNS bilgileriniz okunmayacaktır. Aşağıdaki resimde yer aldığı gibi doldurabilirsiniz.

Netplan Yaml

Dosyayı Ctrl+X ve Y tuşları ile birlikte kaydettikten sonra network değişikliklerini uygulamak için aşağıdaki komutu çalıştırabilirsiniz.

sudo netplan apply

Hepsi bu kadar. Geçmiş olsun.

28 Kasım 2022 Pazartesi

Cmder ile SSH Bağlantısı Kurmayı Öğrendim - Ayrıca SSH Key Oluşturup Sunuculara Kopyaladım

 Bugün çok verimli bir gündü. Öncelikle Cmder isimli bir uygulamayı keşfettim ve bilgisayarıma indirdim. SSH bağlantısı yapmak ve consol'a erişmek için büyük kolaylık. Birde daha kolay yoldan SSH bağlantısı yapmak için hazır görevler (tasks) ekleyebiliyorsunuz. SSH bağlantısı için bir görev ekledim ve bir tıkla erişim isteği atıp şifreyi girebiliyorum. Ardından sunucuda veya istediğim hostta login olmuş oluyorum. Gerçekten güzel bir teknoloji.



cmd /c "%ConEmuDir%\..\git-for-windows\usr\bin\ssh panel@192.168.1.63 -i E:\LifePlusSystem.pem" -new_console:d:%USERPROFILE% "-new_console:t:dev.lifeplus.tw"

Linux'ta kullandığım komutlar ise aşağıdaki gibi:

SSH Bağlantıları için key oluşturma:
ssh-keygen -t ed25519 -C "Ansible Anahtarı"
: /home/panel/.shh/ansible
ls /home/panel/.ssh/

Oluşturulan anahtar dosyasının diğer sunuculara kopyalanması:
ssh-copy-id -i /home/panel/.ssh/ansible.pub 192.168.1.64

Rocky Linux üzerinde panel kullanıcısı olmadığı için orada öncelikle root dışında hesap oluşturma işlemi
sudo useradd panel
sudo passwd panel

Ansible kurulumuna geçmeden önce ana sunucuda update işlemi:
sudo apt update