mirror of
https://github.com/MichaelCade/90DaysOfDevOps.git
synced 2025-01-05 13:07:58 +07:00
Merge pull request #429 from kolaynurdan/add-tr
This commit is contained in:
commit
c9c3b159e5
BIN
2022/.DS_Store
vendored
BIN
2022/.DS_Store
vendored
Binary file not shown.
BIN
2022/es/.DS_Store
vendored
Normal file
BIN
2022/es/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
2022/tr/.DS_Store
vendored
BIN
2022/tr/.DS_Store
vendored
Binary file not shown.
279
2022/tr/Days/day18.md
Normal file
279
2022/tr/Days/day18.md
Normal file
@ -0,0 +1,279 @@
|
||||
## SSH & Web Server
|
||||
|
||||
Bu makale boyunca belirtildiği gibi, muhtemelen birçok uzaktaki Linux sunucusunu yönetiyorsunuz. Bu nedenle, uzak sunuculara olan bağlantınızın mümkün olduğunca güvenli olduğundan emin olmanız gerekecektir. Bu bölümde, herkesin bilmesi gereken SSH'nin temellerini ve uzak sistemlere güvenli bir tünel oluşturmanıza yardımcı olacak bazı konuları ele alacağız.
|
||||
|
||||
- SSH ile bağlantı kurma.
|
||||
- Dosya transferi.
|
||||
- Özel anahtarınızı oluşturma.
|
||||
|
||||
### SSH'a Giriş
|
||||
|
||||
- Shell.
|
||||
- Bir Network protokolü.
|
||||
- Güvenli iletişim sağlar.
|
||||
- Herhangi bir Network hizmetini güvence altına alabilir.
|
||||
- Genellikle komut satırına uzaktan erişim için kullanılır.
|
||||
|
||||
Önceki günleri takip ettiyseniz, SSH'yi zaten kullandığımızı hatırlarsınız. Ancak, bu Vagrant aracılığıyla yapılandırılmış ve otomatikleştirilmiş olduğundan, sadece `vagrant ssh` komutunu çalıştırdık ve uzak sanal makineye erişim elde ettik.
|
||||
|
||||
Eğer uzaktaki makine sistemimizde değil de, örneğin bulutta veya yalnızca İnternet üzerinden erişilebilen bir veri merkezinde çalışıyorsa, sistemini yönetmek için güvenli bir erişim yöntemine ihtiyacımız olur.
|
||||
|
||||
Bu nedenle, kötü niyetli kişiler tarafından herhangi bir şeyin ele geçirilemeyeceği bir güvenli bir tünel sağlayan SSH protokolünden yararlanacağız.
|
||||
|
||||
![](Images/Day18_Linux1.png)
|
||||
|
||||
Sunucu, her zaman çalışan ve belirli bir TCP portunda (22) dinleyen bir SSH sunucu servisine sahiptir.
|
||||
|
||||
Doğru kimlik bilgileri veya SSH anahtarıyla istemcimizi kullanarak sunucuya bağlanırsak, o sunuca erişim elde ederiz.
|
||||
|
||||
### Sistemimize bir Bridge Network Adaptoru ekliyoruz.
|
||||
|
||||
VirtualBox üzerindeki sanal makinemizle bunu simüle edebilmek için sanal makineye bir Bridge Network Adaptoru eklememiz gerekmektedir.
|
||||
|
||||
Sanal makinenin kapalı olduğundan emin olun, VirtualBox içindeki makineye sağ tıklayın ve "Settings" seçeneğini seçin. Açılan yeni pencerede, "Network" seçeneğini seçin.
|
||||
|
||||
![](Images/Day18_Linux2.png)
|
||||
|
||||
|
||||
Şimdi makinenizi tekrar açın ve yerel makinenizde bir IP adresine sahip olacaksınız. Bununla ilgili olarak `IP addr` komutunu kullanarak doğrulama yapabilirsiniz.
|
||||
|
||||
### SSH sunucusunun çalıştığını doğrulama
|
||||
|
||||
SSH'nin zaten makinenize yapılandırıldığını biliyoruz çünkü vagrant ile kullanıyorduk, ancak bunu doğrulayabiliriz.
|
||||
|
||||
```shell
|
||||
sudo systemctl status ssh
|
||||
```
|
||||
|
||||
![](Images/Day18_Linux3.png)
|
||||
|
||||
Eğer sisteminizde SSH sunucusu yoksa, aşağıdaki komutu kullanarak yükleyebilirsiniz.
|
||||
|
||||
```shell
|
||||
sudo apt install OpenSSH-server
|
||||
```
|
||||
|
||||
Ardından, eğer bir güvenlik duvarı çalışıyorsa, SSH'nin güvenlik duvarı tarafından izin verildiğinden emin olmanız gerekmektedir. Örneğin, ufw adlı bir güvenlik duvarı kullanıyorsanız, aşağıdaki komutla protokolü etkinleştirmeniz gerekmektedir.
|
||||
|
||||
```shell
|
||||
sudo ufw allow ssh
|
||||
```
|
||||
Sanal makinede, Vagrant ile otomatik olarak yapılandırdığımız için bu adıma gerek yok.
|
||||
|
||||
### Remote Access(Uzak Erisim) - SSH Parolası
|
||||
|
||||
Şimdi SSH sunucumuzun gelen bağlantı istekleri için 22 numaralı portu dinlemesini sağladık ve köprü ağını ekledik. Windows'ta, putty veya başka bir SSH istemcisi kullanarak ana makinede, SSH'ye bağlanmak için sistemimize bağlanabiliriz.
|
||||
|
||||
![](Images/Day18_Linux4.png)
|
||||
|
||||
Ardından, "Open" düğmesine tıklayın. Eğer bu IP adresi üzerinden ilk kez bu sisteme bağlanıyorsanız, aşağıdaki uyarıyı göreceksiniz. Bu sistemin bizim olduğunu biliyoruz, bu yüzden "Evet" seçeneğini seçebilirsiniz.
|
||||
|
||||
![](Images/Day18_Linux5.png)
|
||||
|
||||
Şimdi kullanıcı adımızı (vagrant) ve şifremizi (default şifre - vagrant) girmemiz istenir. Sonra SSH istemcimizin (Putty) sanal makineye bağlandığını göreceksiniz.
|
||||
|
||||
![](Images/Day18_Linux6.png)
|
||||
|
||||
Harika! Artık uzaktan istemcimizden sanal makinemize bağlandık ve sistemimizde komutlarımızı çalıştırabiliriz.
|
||||
|
||||
Başka bir Linux'tan ise doğrudan "ssh" komutunu kullanarak shelle erişebilirsiniz. Komut satırı aşağıdaki gibidir: "
|
||||
|
||||
```shell
|
||||
ssh <nombre-usuario>@<IP-equipo-remoto>
|
||||
```
|
||||
|
||||
Eğer sanal makinenin IP adresi 192.168.169.135 ise, aşağıdaki komutu kullanmamız gerekecektir:
|
||||
|
||||
```shell
|
||||
ssh vagrant@192.168.169.135
|
||||
```
|
||||
|
||||
Bize şifre soracak ve ardından SSH'nin otomatik sertifikasını kabul etmemizi isteyecektir.
|
||||
|
||||
### Acceso remoto - SSH Anahtarı
|
||||
|
||||
Gördüğümüz yöntem, sistemlere hızlı ve kolay erişim sağlamanın bir yoludur, ancak hala kullanıcı adı ve şifre üzerine dayanmaktadır. Bu durumda, kötü niyetli bir aktör bu bilgilere ve sistemizin genel adresine veya IP'sine erişebilirse, güvenliğimiz tehlikeye girebilir. Bu zayıf noktayı azaltmak için SSH anahtarlarını kullanabiliriz.
|
||||
|
||||
SSH anahtarları, güvenilir bir cihaz olduğundan emin olmak için hem istemciye hem de sunucuya ait bir çift anahtar sağlar.
|
||||
|
||||
Bir anahtar oluşturmak kolaydır. Yerel makinenizde (Windows veya Linux'ta) aşağıdaki komutu kullanarak sertifikaları oluşturabilirsiniz.
|
||||
|
||||
```shell
|
||||
ssh-keygen -t ed25519
|
||||
```
|
||||
|
||||
Daha fazla `ed25519` hakkında bilgi edinmek isterseniz arastırabilirsiniz [kriptografi](https://en.wikipedia.org/wiki/EdDSA#Ed25519). Heyecan verici bir konu.
|
||||
|
||||
![](Images/Day18_Linux7.png)
|
||||
|
||||
Bu noktada, SSH anahtarımızı Windows için `C:\sers\micha/.ssh/` veya Linux için `$HOME/.ssh` dizininde oluşturduk ve sakladık.
|
||||
|
||||
Ancak bu anahtarı Linux sanal makineyle ilişkilendirmek için kopyalamamız gerekiyor. Bunun için kabukta `ssh-copy-id vagrant@192.168.169.135` komutunu kullanabiliriz.
|
||||
|
||||
Windows'da Powershell'i kullanarak anahtarları oluşturabilirsiniz, ancak burada ssh-copy-id mevcut değildir. Windows'ta bunu yapmanın yolları vardır ve çevrimiçi küçük bir arama size alternatifleri gösterecektir, ancak biz Windows için kopyalamayı yapmak için [git bash](https://gitforwindows.org/) kullanacağız.
|
||||
|
||||
![](Images/Day18_Linux8.png)
|
||||
|
||||
Şimdi, SSH anahtarlarımızla şifre gerektirmeyen bir bağlantı kurup kurmadığımızı test etmek için Powershell'e dönebiliriz. Bu, daha önce bahsettiğimiz komutu Linux istemcisinde kullanarak yapabilirsiniz.
|
||||
|
||||
```shell
|
||||
ssh vagrant@192.168.169.135
|
||||
```
|
||||
|
||||
![](Images/Day18_Linux9.png)
|
||||
|
||||
Gerektiğinde bunu daha da güvenli hale getirebiliriz. Bir parola ifadesi kullanarak bunu sağlayabiliriz. Ayrıca, hiçbir şifre kullanılmamasını ve yalnızca SSH üzerinden anahtar çiftlerinin kabul edilmesini sağlayabiliriz. Bu, sanal makinenin aşağıdaki yapılandırma dosyasında yapılabilir.
|
||||
|
||||
```shell
|
||||
sudo nano /etc/ssh/sshd_config
|
||||
```
|
||||
|
||||
Yapılandırma dosyasında `PasswordAuthentication yes` şeklinde bir satır bulacaksınız. Bu satırın başında `#` işareti olacak şekilde yorumlanmış olacak. Yorum işaretini kaldırın ve yes ifadesini no ile değiştirin. Ardından SSH hizmetini yeniden yüklemek için aşağıdaki komutu kullanmanız gerekecek:
|
||||
|
||||
|
||||
```shell
|
||||
sudo systemctl reload sshd
|
||||
```
|
||||
|
||||
Ve güvenliği artırdık. KonsKonfıgurasyon seviyelerine kadar daha da iyileştirilebilir, ancak başlamak için yeterli olanları yaptık.
|
||||
|
||||
## Web Sunucu Yapılandırması
|
||||
|
||||
Linux oyun alanımız için Linux sanal makineye daha fazla özellik ekleyelim. Bir Apache web sunucusu ekleyerek yerel ağda görüntülenebilecek basit bir web sayfası barındırabiliriz. Unutmayın, bu web sayfası İnternet üzerinden erişilebilir olmayacak. Bu önerilmez, ancak yapılabilir. Ancak, burada bunu görmeyeceğiz. [Ipucu](https://www.noip.com/).
|
||||
|
||||
Ayrıca bunu LAMP stack olarak da düşünebilirsiniz.
|
||||
|
||||
- **L**inux Ilsetim Sistemi
|
||||
- **A**pache Web Server
|
||||
- **M**ySQL Veritabanı
|
||||
- **P**HP
|
||||
|
||||
### Apache2
|
||||
|
||||
Apache2, açık kaynaklı bir HTTP sunucusudur. Apache2'yi aşağıdaki komutu kullanarak kurabiliriz.
|
||||
|
||||
```shell
|
||||
sudo apt-get install apache2
|
||||
```
|
||||
|
||||
Apache2'nin başarıyla yüklendiğini doğrulamak için şu komutu çalıştırabilirsiniz:
|
||||
|
||||
```shell
|
||||
sudo service apache2 restart
|
||||
```
|
||||
|
||||
Ardından, SSH bölümünde gördüğümüz uzak makinenin ağ adresini kullanacağız. Bir tarayıcı açın ve adresi kontrol edin. Örnek olarak, adresimiz `http://192.168.169.135/`.
|
||||
|
||||
![](Images/Day18_Linux10.png)
|
||||
|
||||
### mySQL
|
||||
|
||||
MySQL, basit web sitemiz için verilerimizi depolayacağımız bir veritabanıdır. MySQL'i yüklemek için aşağıdaki komutu kullanmalıyız.
|
||||
|
||||
```shell
|
||||
sudo apt-get install mysql-server
|
||||
```
|
||||
|
||||
### PHP
|
||||
|
||||
PHP, sunucu tarafında çalışan bir programlama dilidir. MySQL veritabanıyla etkileşimde bulunmak için PHP'yi kullanacağız. Son kurulum adımı, PHP ve bağımlılıklarını aşağıdaki komutu kullanarak yüklemektir.
|
||||
|
||||
```shell
|
||||
sudo apt-get install php libapache2-mod-php php-mysql
|
||||
```
|
||||
|
||||
Yapmak istediğimiz ilk yapılandırma değişikliği, Apache'nin `index.html` yerine `index.php` kullanmasını sağlamaktır.
|
||||
|
||||
Aşağıdaki komutu kullanacağız.
|
||||
|
||||
```shell
|
||||
sudo nano /etc/apache2/mods-enabled/dir.conf
|
||||
```
|
||||
Ve listelemede `index.php`'yi listenin ilk öğesine taşıyacağız.
|
||||
|
||||
![](Images/Day18_Linux11.png)
|
||||
|
||||
Apache2 hizmetini yeniden başlatıyoruz.
|
||||
|
||||
```shell
|
||||
sudo systemctl restart apache2
|
||||
```
|
||||
|
||||
Şimdi sistemimizin PHP için doğru şekilde yapılandırıldığını doğrulayalım. Aşağıdaki komutu kullanarak aşağıdaki dosyayı oluşturun, bu nano ile boş bir dosya açacaktır.
|
||||
|
||||
```shell
|
||||
sudo nano /var/www/html/90Days.php
|
||||
```
|
||||
|
||||
Daha sonra aşağıdaki metni belgeye kopyalayın ve öğrendiğimiz gibi, ctrl + x kullanarak çıkın ve dosyayı kaydedin.
|
||||
|
||||
```php
|
||||
<?php
|
||||
phpinfo();
|
||||
?>
|
||||
```
|
||||
|
||||
Şimdi tekrar Linux MV'nin IP adresine, URL'nin sonuna eklenen 90Days.php ile gezin: `http://192.168.169.135/90Days.php`. PHP doğru şekilde yapılandırılmışsa aşağıdakine benzer bir şey görmelisiniz.
|
||||
|
||||
![](Images/Day18_Linux12.png)
|
||||
|
||||
### WordPress'in Kurulumu
|
||||
|
||||
Ardından, LAMP stack'imize WordPress kurulumu için bu rehberi takip ettim.
|
||||
|
||||
```shell
|
||||
sudo mysql -u root -p
|
||||
```
|
||||
|
||||
```mysql
|
||||
CREATE DATABASE wordpressdb;
|
||||
|
||||
CREATE USER 'admin-user'@'localhost' IDENTIFIED BY 'password';
|
||||
|
||||
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'admin-user'@'localhost';
|
||||
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
EXIT;
|
||||
```
|
||||
|
||||
```shell
|
||||
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
|
||||
```
|
||||
```shell
|
||||
sudo systemctl restart apache2
|
||||
```
|
||||
|
||||
```shell
|
||||
cd /var/www
|
||||
```
|
||||
|
||||
```shell
|
||||
sudo curl -O https://wordpress.org/latest.tar.gz
|
||||
```
|
||||
|
||||
```shell
|
||||
sudo tar -xvf latest.tar.gz
|
||||
```
|
||||
|
||||
```shell
|
||||
sudo rm latest.tar.gz
|
||||
```
|
||||
Bu noktada, "["Ubuntu üzerinde LAMP ile WordPress nasıl kurulur"](https://blog.ssdnodes.com/blog/how-to-install-wordpress-on-ubuntu-18-04-with-lamp-tutorial/)" adlı makalenin 4. adımındasınız ve WordPress dizini için doğru izinlerin yerinde olduğundan emin olmak için adımları izlemeniz gerekecektir.
|
||||
|
||||
Bu içsel bir kurulum olduğu için bu adımda "güvenlik anahtarları oluşturmak" gerekli değildir. Adım 5'e gidin, bu adımda Apache yapılandırmasını WordPress'e değiştirmeniz gerekmektedir.
|
||||
|
||||
Eğer her şey düzgün şekilde yapılandırılmışsa, dahili ağ adresiniz üzerinden WordPress kurulumunu çalıştırabilirsiniz.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [SSH GUI Client - Remmina](https://remmina.org/)
|
||||
- [The Beginner's guide to SSH](https://www.youtube.com/watch?v=2QXkrLVsRmk)
|
||||
- [Vim in 100 Seconds](https://www.youtube.com/watch?v=-txKSRn0qeA)
|
||||
- [Vim tutorial](https://www.youtube.com/watch?v=IiwGbcd8S7I)
|
||||
- [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70)
|
||||
- [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE)
|
||||
- [Webminal](https://www.webminal.org/)
|
||||
- [Vim Temel Rehberi](https://gitea.vergaracarmona.es/man-linux/Guia-VIM)
|
||||
|
||||
Gorusmek Uzere [Gun 19](day19.md).
|
404
2022/tr/Days/day19.md
Normal file
404
2022/tr/Days/day19.md
Normal file
@ -0,0 +1,404 @@
|
||||
## Bash ile Scriptlerle Görevleri(Jobları) Otomatikleştirme
|
||||
|
||||
Bugün, bash kabuğu kullanarak görevleri otomatikleştirme konusunu ele alacağız.
|
||||
|
||||
BASH - **B**ourne **A**gain **Sh**ell
|
||||
|
||||
Bash betiklerini, programlama dillerinde olduğu gibi, görevlerin gerçekleştirilmesi için kullanabiliriz. Birçok insan, karmaşık bash betikleri oluşturarak işlerini otomatikleştirmiştir. İş dünyasında, önemli görevler genellikle betiklere dayanır. Bu konuda tam bir uzman olmak zorunda olmasak da, temel bash betikleme becerilerini öğrenerek otomatizasyon araçlarıyla birlikte çalışabilir ve acil görevleri yerine getirebiliriz.
|
||||
|
||||
Örneğin, sanal makine oluşturmak için kullandığımız VAGRANTFILE'ı içeren bir bash betiği oluşturabiliriz. Bu betik, her pazartesi sabahı sanal makineyi yeniden oluşturarak taze bir kopya elde etmemizi sağlayabilir. Ayrıca, Linux makinesinde ihtiyaç duyduğumuz yazılım yığınını bu betik aracılığıyla otomatik olarak kurabiliriz.
|
||||
|
||||
Ayrıca, sistem yönetimi, bulut ortamları ve DevOps gibi alanlarda iş mülakatlarında pratik bash betik soruları da sıkça karşılaşılan konulardır.
|
||||
|
||||
Bugün çok fazla çalışacağız çünkü önümüzde birçok konu var.
|
||||
|
||||
### Baslayalım
|
||||
|
||||
Bu 90 günlük süreçte ele aldığımız diğer konular gibi, gerçek öğrenmenin tek yolu pratik yapmaktır. Sadece bu satırları okuyup bölümü tamamlanmış olarak işaretlemeyin. Pratik deneyim, her şeyi kas hafızanıza yerleştirmenize yardımcı olacaktır. Birkaç gün daha sürebilir, ancak yapabildiğiniz kadar çok pratik yapmak kesinlikle değerlidir.
|
||||
|
||||
Başlamak için bir metin düzenleyiciye ihtiyacımız olacak. [Gun 17](day17.md)'de en yaygın iki metin düzenleyiciyi ve onları nasıl kullanacağımız hakkında biraz bilgi vermiştik. (Umarım kendi başınıza daha fazlasını incelediniz ;)
|
||||
|
||||
Şimdi işe koyulup ilk shell betiğimizi oluşturacağız. Böylece bir dosya oluşturuyoruz.
|
||||
|
||||
```shell
|
||||
touch 90DaysOfDevOps.sh
|
||||
```
|
||||
|
||||
Ve onu nano düzenleyiciyle açıyoruz.
|
||||
|
||||
```shell
|
||||
nano 90DaysOfDevOps.sh
|
||||
```
|
||||
|
||||
Bu, yeni bir shell scriptimizi nano'da boş olarak açacak. Yine de, tercih ettiğiniz metin düzenleyiciyi seçebilirsiniz.
|
||||
|
||||
Tüm bash scriptlerinin ilk satırı şuna benzer olmalıdır:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/bash
|
||||
```
|
||||
|
||||
Bu, bash binary'nizin yolunu belirtir. Bu satır, `SHEBANG`, `HASHBANG` veya `SHARPBANG` olarak bilinir ve bu scriptin hangi komut yorumlayıcısının veya sistem konsolunun çalıştırılacağını veya yorumlanacağını belirtmek için kullanılır.
|
||||
|
||||
Ancak, bunu terminalde aşağıdaki komutu çalıştırarak doğrulamanız önerilir:
|
||||
|
||||
```shell
|
||||
which bash
|
||||
```
|
||||
|
||||
Bu komut, binari dosyanın konumunu görüntülemenizi sağlar.
|
||||
|
||||
Eğer Ubuntu kullanmıyorsanız ve özel işletim sistemleriyle vakit kaybetmeye devam ediyorsanız, aşağıdaki komutu deneyebilirsiniz.
|
||||
|
||||
```shell
|
||||
whereis bash
|
||||
```
|
||||
|
||||
Ancak, mevcut olan bazı shell scriptlerinde aşağıdaki gibi başka yol gösterimleri de bulunabilir:
|
||||
|
||||
- `#!/bin/bash`
|
||||
- `#!/usr/bin/env bash`
|
||||
|
||||
Bir sonraki satırda, betiğimizin amacını açıklayan veya en azından arkasından gelenler için bilgi sağlayan bir açıklama eklemek idealdir. Birkaç hafta sonra bile kendiniz olabileceğinizi düşünerek kendinize anlatın. Scriptlerdeki yorumlar almohadilla `#` işaretiyle yapılır. Bu bize kodu etkilemeyen belirli satırlara yorum eklememizi sağlar. Yorumlar, komutların açıklamalarını, kod akışını, yazar bilgilerini, kaynak referanslarını vb. sağlamak için kullanılır. Daha önce bahsettiğim gibi, bunu paylaşıyorsanız vazgeçilmezdir.
|
||||
|
||||
Daha önceki günlerde yüklediğimiz figlet programı, sanat eserleri oluşturmak için kullanılır ve scriptleri başlatmak için oldukça görseldir.
|
||||
|
||||
![](Images/Day19_Linux1.png)
|
||||
|
||||
Tüm komutlar [Día 15](día15.md)’de gözden geçirildi ve bu komutlar scriptlerde basit bir komut olarak kullanılabilir. Şimdi betiğimize basit bir kod bloğu ekleyelim.
|
||||
|
||||
```bash
|
||||
mkdir 90DaysOfDevOps
|
||||
cd 90DaysOfDevOps
|
||||
touch Day19
|
||||
ls
|
||||
```
|
||||
|
||||
Sonra bunu kaydedebilir ve metin düzenleyiciden çıkabilirsiniz. Scripti aşağıdaki komutla çalıştırırsanız:
|
||||
|
||||
```shell
|
||||
./90DaysOfDevOps.sh
|
||||
```
|
||||
|
||||
Aşağıdaki komutla dosyanın izinlerini kontrol edebilirsiniz.
|
||||
|
||||
```shell
|
||||
ls -al
|
||||
```
|
||||
dosyaya çalıştırma izinlerini eklemek için aşağıdaki komutu kullanabilirsiniz.
|
||||
|
||||
![](Images/Day19_Linux2.png)
|
||||
|
||||
Bu durumu `chmod +x 90DaysOfDevOps.sh` komutunu kullanarak değiştirebilirsiniz ve ardından artık komut dosyasını çalıştırabileceğimizi gösteren `x` işaretini göreceksiniz.
|
||||
|
||||
![](Images/Day19_Linux3.png)
|
||||
|
||||
Bu komutu kullanarak scripte çalıştırma izni veriyoruz.
|
||||
|
||||
```shell
|
||||
chmod +x 90DaysOfDevOps.sh
|
||||
```
|
||||
|
||||
Ve sonra `x` işaretini göreceksin, bu da artık betiğimizi çalıştırabileceğimiz anlamına gelir.
|
||||
|
||||
![](Images/Day19_Linux4.png)
|
||||
|
||||
Oldukça temel, ancak bunu kullanarak hayatınızı kolaylaştırmak ve işleri otomatikleştirmek için diğer araçları çağırmak için nasıl kullanabileceğinizi görmeye başlayabilirsiniz.
|
||||
|
||||
### Degiskenler, Kosullar
|
||||
|
||||
Bu bölümün büyük bir kısmı, [Golang](day11.md) öğrenirken gördüğümüz şeylerin tekrarıdır, ancak bilgileri pekiştirmek için tekrar gözden geçirmekte fayda vardır.
|
||||
|
||||
#### Degiskenler
|
||||
|
||||
Değişkenler, bir script boyunca birden çok kez kullanılan belirli bir terimi tanımlamamıza olanak sağlar. Potansiyel olarak karmaşık olabilen kodu basitleştirmek için kullanılır.
|
||||
|
||||
Bir değişkeni tanımlamak çok basittir, scripte temiz bir satır ekleyin.
|
||||
|
||||
```bash
|
||||
challenge="90DaysOfDevOps"
|
||||
```
|
||||
|
||||
Bu şekilde, `$challenge` kullanıldığı her yerde değişkenin değerini vermiş oluruz ve değişkenin değerini değiştirirsek, kullandığımız tüm yerlerde yansıtılır.
|
||||
|
||||
![](Images/Day19_Linux5.png)
|
||||
|
||||
Şimdi `sh` komutunu kullanarak betiğimizi çalıştırırsak, betiğimize eklediğimiz çıktıyı göreceğiz.
|
||||
|
||||
![](Images/Day19_Linux5.png)
|
||||
|
||||
Ayrıca, kullanıcıdan girdi alarak değişkenin değerini ayarlamasını isteyebiliriz. Bunun için aşağıdaki yöntemi kullanabiliriz:
|
||||
|
||||
```bash
|
||||
echo "Enter your name"
|
||||
read name
|
||||
```
|
||||
|
||||
Bu, `$name` değişkenini tanımlar. Daha sonra bu değeri kullanabiliriz.
|
||||
|
||||
#### Kosullar
|
||||
|
||||
Repomuzda kimin oldugunu ve kac gunun tamamlandıgını ogrenmek için, kosullu ifadelerden yararlanabiliriz.
|
||||
- `if`
|
||||
- `if-else`
|
||||
- `else-if`,
|
||||
|
||||
Aşağıdaki kodu dikkatlice inceleyin.
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# ___ ___ ____ ___ __ ____ ___
|
||||
# / _ \ / _ \| _ \ __ _ _ _ ___ / _ \ / _| _ \ _____ __/ _ \ _ __ ___
|
||||
# | (_) | | | | | | |/ _` | | | / __| | | | |_| | | |/ _ \ \ / / | | | '_ \/ __|
|
||||
# \__, | |_| | |_| | (_| | |_| \__ \ |_| | _| |_| | __/\ V /| |_| | |_) \__ \
|
||||
# /_/ \___/|____/ \__,_|\__, |___/\___/|_| |____/ \___| \_/ \___/| .__/|___/
|
||||
# |___/ |_|
|
||||
#
|
||||
# This script is to demonstrate bash scripting!
|
||||
#
|
||||
# Variables to be defined
|
||||
|
||||
ChallengeName=#90DaysOfDevOps
|
||||
TotalDays=90
|
||||
|
||||
# User Input
|
||||
|
||||
echo "Enter Your Name"
|
||||
read name
|
||||
echo "Welcome $name to $ChallengeName"
|
||||
echo "How Many Days of the $ChallengeName challenge have you completed?"
|
||||
read DaysCompleted
|
||||
|
||||
if [ $DaysCompleted -eq 90 ]
|
||||
then
|
||||
echo "You have finished, well done"
|
||||
elif [ $DaysCompleted -lt 90 ]
|
||||
then
|
||||
echo "Keep going you are doing great"
|
||||
else
|
||||
echo "You have entered the wrong amount of days"
|
||||
fi
|
||||
```
|
||||
|
||||
Bu komutları kullanarak birbirleriyle karşılaştırma yapabilir veya değerleri kontrol edebiliriz. İşte vurgulanmaya değer farklı seçenekler:
|
||||
|
||||
- `eq` - İki değer birbirine eşitse TRUE döndürür.
|
||||
- `ne` - İki değer birbirine eşit değilse TRUE döndürür.
|
||||
- `gt` - İlk değer ikinci değerden büyükse TRUE döndürür.
|
||||
- `ge` - İlk değer ikinci değerden büyük veya eşitse TRUE döndürür.
|
||||
- `lt` - İlk değer ikinci değerden küçükse TRUE döndürür.
|
||||
- `le` - İlk değer ikinci değerden küçük veya eşitse TRUE döndürür.
|
||||
|
||||
Ayrıca bash scriptlerini kullanarak dosya ve klasörler hakkında bilgi edinebiliriz, bu dosya koşulları olarak bilinir.
|
||||
|
||||
- `-d file` Dosya bir dizin ise TRUE döndürür.
|
||||
- `-e file` Dosya mevcut ise TRUE döndürür.
|
||||
- `-f file` Sağlanan dize bir dosya ise TRUE döndürür.
|
||||
- `-g file` Dosyada grup kimliği ayarlı ise TRUE döndürür.
|
||||
- `-r file` Dosya okunabilir ise TRUE döndürür.
|
||||
- `-s file` Dosya çalıştırılabilir ise TRUE döndürür.
|
||||
|
||||
Bu, bash scriptlerinde kontrol yapıları gibi şartlara dayalı kararlar almak için bu kontrollerin sonuçlarına dayanarak kullanılabilir.
|
||||
|
||||
```bash
|
||||
FILE="90DaysOfDevOps.txt"
|
||||
if [ -f "$FILE" ]
|
||||
then
|
||||
echo "$FILE is a file"
|
||||
else
|
||||
echo "$FILE is not a file"
|
||||
fi
|
||||
```
|
||||
|
||||
![](Images/Day19_Linux7.png)
|
||||
|
||||
Görsellerde gösterilen örneklerde, bir dosya varsa birinci echo komutunu alacağımız, ancak o dosyayı silersek ikinci echo komutunu alacağımız bir script görülmektedir.
|
||||
|
||||
![](Images/Day19_Linux8.png)
|
||||
|
||||
Bu tür kontroller, belirli öğeleri sistemde ararken önemli ölçüde zaman kazandırmak için kullanılabilir.
|
||||
|
||||
Bu depoda, deneyebileceğiniz görünüşe göre sonsuz miktarda betik bulunmaktadır: [DevOps Bash Aracları](https://github.com/HariSekhon/DevOps-Bash-tools/blob/master/README.md)
|
||||
|
||||
#### Ornek
|
||||
|
||||
*Seneryo*:
|
||||
|
||||
"90DaysOfDevOps" adında bir şirketimiz var ve bir süredir faaliyet gösteriyoruz. Şimdi tek bir kişilik ekibimizi daha da genişletmek istiyoruz. Şu ana kadar, katılım sürecini bilen tek kişi benim, bu yüzden bazı görevleri otomatikleştirerek bu darboğazı azaltmak istiyoruz.
|
||||
|
||||
*Gereksinimler*:
|
||||
|
||||
- Bir kullanıcı komut satırı argümanı olarak iletilmelidir.
|
||||
- Argüman olarak bir şifre geçilebilmelidir.
|
||||
- Belirtilen kullanıcı adıyla bir kullanıcı oluşturulmalıdır.
|
||||
- Kullanıcı için belirtilen şifre ayarlanmalıdır.
|
||||
- Hesap oluşturulduğunda bir başarı mesajı görüntülenmelidir.
|
||||
|
||||
İşte shell scriptimizi oluşturmaya başlayalım:
|
||||
|
||||
```shell
|
||||
touch create_user.sh
|
||||
```
|
||||
|
||||
Devam etmeden önce kabuk scriptini çalıştırılabilir hale getirelim. Bunu yapmak için aşağıdaki komutu kullanabilirsiniz.
|
||||
|
||||
```shell
|
||||
chmod +x create_user.sh
|
||||
```
|
||||
|
||||
Senaryo için scriptimizi düzenlemeye başlamak için aşağıdaki gibi bir metin düzenleyici kullanabiliriz.
|
||||
|
||||
```shell
|
||||
nano create_user.sh
|
||||
```
|
||||
|
||||
Evet, elbette. Eğer tercih ettiğiniz bir metin düzenleyici Vim ise, aşağıdaki komutu kullanarak scripti Vim ile düzenleyebilirsiniz.
|
||||
|
||||
```shell
|
||||
vim create_user.sh
|
||||
```
|
||||
|
||||
Tabii, ilk gereksinim olan "Bir kullanıcı komut satırı argümanı olarak iletilmelidir" için aşağıdaki gibi bir kontrol yapısı kullanabiliriz.
|
||||
|
||||
```bash
|
||||
#! /usr/bin/bash
|
||||
|
||||
# Bir kullanıcı komut satırı argümanı olarak iletilmiş olmalıdır
|
||||
echo "$1"
|
||||
```
|
||||
|
||||
![](Images/Day19_Linux9.png)
|
||||
|
||||
Bu scripti kullanmak için aşağıdaki komutu kullanabilirsiniz
|
||||
|
||||
```shell
|
||||
./create_user.sh Michael
|
||||
```
|
||||
|
||||
`echo` komutuyla yazdırılan değişkenin değerini, ona verdiğimiz argümanla değiştirerek nasıl çalıştığını göreceğiz.
|
||||
|
||||
![](Images/Day19_Linux10.png)
|
||||
|
||||
Devam edelim ve ikinci gereksinim olan "Kullanıcı, argüman olarak verilen isimle oluşturulmalıdır" kısmını ele alalım. Bu işlemi `useradd` komutunu kullanarak gerçekleştirebiliriz. `-m` seçeneği ise kullanıcının home dizinini /home/kullanici_adi şeklinde oluşturur.
|
||||
|
||||
```bash
|
||||
#! /usr/bin/bash
|
||||
|
||||
# Bir kullanıcı komut satırı argümanı olarak iletilmiş olmalıdır
|
||||
echo "$1 user account being created."
|
||||
|
||||
# Kullanıcı Olusturma
|
||||
sudo useradd -m "$1"
|
||||
```
|
||||
|
||||
⚠️ *Dikkat: Kullanıcı hesabı adını sağlamazsanız, `$1` değişkeni değer içermeyeceğinden hata alırsınız.*
|
||||
|
||||
Bu hesabın başarıyla oluşturulup oluşturulmadığını kontrol etmek için aşağıdaki komutları kullanabilirsiniz.
|
||||
|
||||
```shell
|
||||
awk -F: '{ print $1}' /etc/passwd
|
||||
```
|
||||
|
||||
![](Images/Day19_Linux11.png)
|
||||
|
||||
Sonraki gereksinimlerimiz şunlardır: 'Bir şifre komut satırı argümanı olarak geçilebilir' ve 'Kullanıcı için şifre ayarlanır'.
|
||||
|
||||
⚠️ *Dikkat: Asla bunu üretim ortamında yapmayacağız, şifreler asla komut satırı veya bir script üzerinden geçmemeli çünkü açığa çıkarlar ve bir saldırı vektörü olabilirler. Her zaman önce bir kodlama ve şifreleme sürecinden geçeceklerdir. Bu sadece değişkenlerle scripti yöneten argümanları eklemek için bir pratik yapıyoruz.*
|
||||
|
||||
|
||||
```bash
|
||||
#! /usr/bin/bash
|
||||
|
||||
# Bir kullanıcı komut satırı argümanı olarak iletilmiş olmalıdır.
|
||||
echo "$1 user account being created."
|
||||
|
||||
# Kullanıcı olusturma.
|
||||
sudo useradd -m "$1"
|
||||
|
||||
# Şifre komut satırı argümanı olarak geçilebilir.
|
||||
# Kullanıcı için şifre ayarlanır.
|
||||
sudo chpasswd <<< "$1":"$2"
|
||||
```
|
||||
|
||||
Eğer bu scripti iki parametreyle çalıştırırsak..
|
||||
|
||||
```shell
|
||||
./create_user.sh 90DaysOfDevOps password
|
||||
```
|
||||
|
||||
Aşağıdaki resimde oluşturulan kullanıcı adı ve şifreyi görebilirsiniz. Ardından bu kullanıcıya giriş yapıp `whoami` komutunu kullanarak etkin kullanıcıyı doğruladık.
|
||||
|
||||
![](Images/Day19_Linux12.png)
|
||||
|
||||
Son gereksinim ise 'Hesap oluşturma başarılı bir mesajının gösterilmesi' ve bunu zaten kodun üst satırında gerçekleştirdik. Önceki ekran görüntüsünde `90DaysOfDevOps user account being created` mesajını görebilirsiniz. Bu, `$1` parametresiyle yapılan testlerden kalmıştır.
|
||||
|
||||
Şimdi, bu betik hızlı bir şekilde yeni kullanıcıları entegre edip yapılandırmak için kullanılabilir. Ancak daha kullanışlı hale getirmek ve herkesin kullanabilmesini sağlamak için önceki bölümde gördüğümüz kullanıcı ve şifre girişini ekleyebiliriz. İşte güzelce düzenlenmiş kodun nasıl göründüğü.
|
||||
|
||||
```bash
|
||||
#! /usr/bin/bash
|
||||
|
||||
echo "What is your intended username?"
|
||||
read username
|
||||
echo "What is your password"
|
||||
read password
|
||||
|
||||
# Bir kullanıcı komut satırı argümanı olarak geçilebilir
|
||||
echo "$1 user account being created."
|
||||
|
||||
# Argüman adıyla bir kullanıcı oluşturulur.
|
||||
sudo useradd -m "$1"
|
||||
|
||||
# Bir şifre komut satırı argümanı olarak geçilebilir.
|
||||
# Kullanıcı için şifre ayarlanır.
|
||||
sudo chpasswd <<< "$1":"$2"
|
||||
|
||||
# Hesap oluşturma başarılı bir mesajı gösterilir.
|
||||
echo "The Account for $username has successfully been created"
|
||||
|
||||
```
|
||||
|
||||
Bu şekilde adımlar daha etkileşimli hale gelir,
|
||||
|
||||
![](Images/Day19_Linux14.png)
|
||||
|
||||
Son olarak, yeni kullanıcı hesabının başarıyla oluşturulduğunu doğrulamak için bir başarı çıktısı verebiliriz.
|
||||
|
||||
![](Images/Day19_Linux15.png)
|
||||
|
||||
Bir ayrıntı daha, şifre girişini `-s` bayrağıyla gizlemek olabilir.
|
||||
|
||||
```bash
|
||||
read -s password
|
||||
```
|
||||
|
||||
![](Images/Day19_Linux16.png)
|
||||
|
||||
Ayrıca, oluşturulan kullanıcıyı şu şekilde silebiliriz
|
||||
|
||||
```bash
|
||||
sudo userdel test_user
|
||||
```
|
||||
|
||||
|
||||
İşte yorumlar ve ekran çıktıları Turkce'ye çevrilen [Script](Linux/create-user.sh) görebilirsiniz.
|
||||
|
||||
Tekrar belirtmek gerekirse, bunu günlük kullanımınızda kullanmayacaksınız, ancak ihtiyaç duyduğunuzda kullanabileceğiniz temel bir parçasıdır. Ayrıca, kabuk betiklemesinin sağladığı esnekliği gösterir.
|
||||
|
||||
Her gün yaptığınız tekrarlayan görevleri düşünün ve bunları nasıl otomatik hale getirebileceğinizi düşünün, ilk seçenek genellikle bir bash betiği kullanmaktır, ancak karmaşık alanlar da vardır, bu yüzden pratik yapmak önemlidir.
|
||||
|
||||
Son bir örnek olarak, yerel bir makinede minikube kullanarak bir Kubernetes kümesi oluşturmayı ve veri hizmetlerini ve Kasten K10'u kullanarak veri yönetimi gereksinimlerini ve ihtiyaçlarını göstermeye yardımcı olan basit bir bash betiğine göz atabilirsiniz: [Project Pace](https://github.com/MichaelCade/project_pace/blob/main/singlecluster_demo.sh) Henüz Kubernetes'i görmedik, ancak betiklemenin olasılıklarını göstermek için yardımcı olabilir.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Bash in 100 seconds](https://www.youtube.com/watch?v=I4EWvMFj37g)
|
||||
- [Bash script with practical examples - Full Course](https://www.youtube.com/watch?v=TPRSJbtfK4M)
|
||||
- [Client SSH GUI - Remmina](https://remmina.org/)
|
||||
- [The Beginner's guide to SSH](https://www.youtube.com/watch?v=2QXkrLVsRmk)
|
||||
- [Vim in 100 Seconds](https://www.youtube.com/watch?v=-txKSRn0qeA)
|
||||
- [Vim tutorial](https://www.youtube.com/watch?v=IiwGbcd8S7I)
|
||||
- [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70)
|
||||
- [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE)
|
||||
- [Webminal](https://www.webminal.org/)
|
||||
- [Vim Temel Rehberi](https://gitea.vergaracarmona.es/man-linux/Guia-VIM)
|
||||
|
||||
Gorusmek Uzere [Gun 20](day20.md).
|
204
2022/tr/Days/day20.md
Normal file
204
2022/tr/Days/day20.md
Normal file
@ -0,0 +1,204 @@
|
||||
## Dev Workstation Yapılandırması - Tüm güzel şeyler
|
||||
|
||||
Linux sunucu yapılandırmasını masaüstü yapılandırmayla karıştırmamalıyız, ancak Linux masaüstünde sahip olabileceğimiz seçenekleri ve esnekliği göstermek önemlidir.
|
||||
|
||||
Yazar, neredeyse bir yıl boyunca Linux masaüstü kullanmış ve yapılandırması, SysAdmin çalışmaları için özel bir görünüm perspektifini yansıtmaktadır. Bu özelleştirmeleri görebilmek için Ubuntu sanal makinesinde Virtual Box kullanabiliriz. Çevirmen ise Linux ortamlarında 10 yılı aşkın deneyime sahip olduğundan, İspanyolca sürümde bazı katkılar bulacaksınız.
|
||||
|
||||
YouTube üzerinden takip etmek isteyenler için bir video (Resme tıklayın):
|
||||
|
||||
[![YouTube Video Erişimi için Tıklayın](Images/Day20_YouTube.png)](https://youtu.be/jeEslAtHfKc)
|
||||
|
||||
Hatırlayalım, Ubuntu 20.04 sanal makinesimiz Virtual Box'ta şu şekilde görünecektir:
|
||||
|
||||
![](Images/Day20_Linux1.png)
|
||||
|
||||
Ayrıca, aşağıda varsayılan bash kabuğunu görebilirsiniz.
|
||||
|
||||
![](Images/Day20_Linux2.png)
|
||||
|
||||
Bunların çoğu, dot dosyalarına indirgenir ve 90DaysOfDevOps yolculuğumuzun son Linux oturumunda ele alacağımız dot dosyalarıyla ilgilidir.
|
||||
|
||||
### Dot Dosyaları(dotfiles)
|
||||
|
||||
Öncelikle dot dosyalarına daha detaylı bir şekilde bakalım. Linux, sistem ve uygulama yapılandırma dosyalarından oluşur, bu dosyalara dot dosyaları denir.
|
||||
|
||||
Dot dosyaları, masaüstünüzü özelleştirmek ve daha güzel görünmesini sağlamak için kullanılmaz, aynı zamanda üretkenlikle ilgili değişiklikler ve yapılandırmalar yapmanıza yardımcı olur, işlevsellik ekler veya minimalist bir yaklaşımı tercih ederseniz kaldırır.
|
||||
|
||||
Linux için bulabileceğiniz çoğu yazılım, yapılandırmalarını bu dot dosyalarında saklar. Her dot dosyası, gizli kalması ve hata yapmaması için bir nokta `.` ile başlar.
|
||||
|
||||
Şimdiye kadar shell olarak bash'i kullandık. Peki, bash, `$HOME` klasörümüzde bazı yapılandırma dosyalarına sahiptir: .bashrc ve .bash_profile. Aşağıda, yeni kurulu sistemimizdeki bazı dot dosyalarını görebilirsiniz.
|
||||
|
||||
![](Images/Day20_Linux3.png)
|
||||
|
||||
Shell'imizi zsh olarak değiştireceğiz, bu yüzden ileride `.zshrc` adlı yeni bir yapılandırma dot dosyasını göreceğiz.
|
||||
|
||||
Şimdi dot dosyalarından bahsettiğimizde, yapılandırma dosyalarından bahsediyoruz. Örneğin, kabuk (shell) dot dosyalarını, sistem simgenize takma adlar eklemek veya farklı konumlara yol eklemek için kullanabiliriz. Bazı insanlar dot dosyalarını herkese açık olarak paylaşırlar. Yazar, Michael Cade, özelleştirilmiş `.zshrc` dosyasıyla birlikte [MichaelCade/dotfiles](https://github.com/MichaelCade/dotfiles) adresinde dot dosyasını bulabilirsiniz. Seçilen terminal olan Terminator, klasörde bazı yapılandırma dosyalarına ve bazı arka plan seçeneklerine sahiptir.
|
||||
|
||||
Ayrıca, çevirmen de kabuk yapılandırmasını [shorttutorials/man-linux/zsh-shell](https://www.shorttutorials.com/apt-get-commands/man-zsh.html) adresinde paylaşmıştır. Burada farklı özelleştirme yöntemleri bulacaksınız, herkes kendi konforunu aramalıdır. Bu durumda, Oh my zsh ile zsh ve [Tilix](https://github.com/gnunn1/tilix) terminali kullanılmaktadır.
|
||||
|
||||
### ZSH
|
||||
|
||||
Bahsettiğimiz gibi, Ubuntu ile birlikte gelen varsayılan kabuk olan bash'i kullanıyorduk. ZSH, bash'e göre bazı avantajlara sahip benzer bir kabuktur.
|
||||
|
||||
Zsh'nin şu gibi özellikleri vardır:
|
||||
|
||||
- İnteraktif tamamlama (Tab) özelliği.
|
||||
- Otomatik dosya arama.
|
||||
- Regex entegrasyonu.
|
||||
- Komutların kapsamını tanımlamak için gelişmiş kısaltmalar.
|
||||
- Kapsamlı bir tema motoru.
|
||||
- vb.
|
||||
|
||||
Zsh'yi `apt` paket yöneticisi ile kurabiliriz. Şunu çalıştıracağız:
|
||||
|
||||
```shell
|
||||
sudo apt install zsh
|
||||
```
|
||||
Resimde, SSH üzerinden bağlantı yerine sanal makine konsolu kullanıldığı görülecektir. İstediğiniz gibi yapabilirsiniz, grafik arayüze ihtiyacınız yoktur.
|
||||
|
||||
Kurulum komutu tamamlandığında `zsh` komutunu çalıştırabilirsiniz. İlk kez çalıştırıldığında, yeni kabuk için bir yapılandırma komut dosyası başlatacaktır.
|
||||
|
||||
![](Images/Day20_Linux4.png)
|
||||
|
||||
Temel olarak, herhangi bir eklenti veya eklenti olmaksızın bile çok yapılandırılabilir. Bir önceki soruya `1` seçeneğiyle yanıt vererek daha fazla seçenek görebiliriz.
|
||||
|
||||
![](Images/Day20_Linux5.png)
|
||||
|
||||
ZSH'yi kendi tercihlerinize veya ihtiyaçlarınıza göre yapılandırmak için bazı değişiklikler yapabilirsiniz.
|
||||
|
||||
Eğer bir `0` ile yardımcı programı kapatıp ardından
|
||||
|
||||
```shell
|
||||
ls -al | grep .zshrc
|
||||
```
|
||||
|
||||
Bu komut, mevcut kullanıcı için zsh kabuğunu varsayılan kabuk olarak ayarlar.
|
||||
|
||||
Komutu çalıştırdıktan sonra parolanızı girmeniz istenebilir. Parolanızı girdikten sonra artık her yeni terminal oturumunda zsh kabuğu kullanılacaktır.
|
||||
|
||||
```shell
|
||||
chsh -s $(which zsh)
|
||||
```
|
||||
|
||||
Bu komut, mevcut terminal oturumunda anında zsh kabuğuna geçiş yapmanızı sağlar. Böylece oturumu kapatıp yeniden giriş yapmadan zsh kabuğuna geçiş yapabilirsiniz.
|
||||
|
||||
```shell
|
||||
exec zsh
|
||||
```
|
||||
|
||||
Bu komut `which $SHELL` mevcut kullanılan kabugun yolunu(path) görüntüler. Eğer zsh kabuğuna başarıyla geçiş yapmışsanız, çıktı olarak /usr/bin/zsh veya benzer bir yol gösterilecektir.
|
||||
|
||||
![](Images/Day20_Linux6.png)
|
||||
|
||||
Michael Cade, yazar, genellikle her Ubuntu masaüstü başlatıldığında bu adımı atar çünkü zsh kabuğunun bash'ten biraz daha hızlı olduğunu düşünmektedir.
|
||||
|
||||
Çevirmen ise genellikle kullandığı sistemlere yalnızca zsh'yı yükler. Bash, zsh'nin içinde, aynı şekilde sh de dahil olmak üzere, ve çevirmen, hız açısından en hafif olanın her zaman üstünlük sağlayacağını düşünür. Bu üç seçenek arasında sh kabuğu yer almaktadır. Ancak zsh'nin kişiselleştirme yetenekleri büyüktür, bu yüzden onunla çalışmak daha üretken olabilir. Bu, betikler oluştururken dikkate alınması gereken önemli bir noktadır; sh her zaman yüklü olacak ve en hızlısı olacak, ancak Ubuntu gibi birçok temel betik ve programın bulunmadığı dağıtımlarla karşılaşabilirsiniz.
|
||||
|
||||
### OhMyZSH
|
||||
|
||||
Şeyleri biraz daha iyi göstermek ve bazı işlevselliği eklemek için ücretsiz ve açık kaynaklı bir çatı olan OhMyZSH'yi kullanacağız.
|
||||
|
||||
Bu frmaework ile zsh'nin yapılandırmasını ve özelleştirmesini astronomik seviyelere kadar yönetebileceğiz. Birçok eklenti, tema ve diğer kaynaklar sayesinde zsh kabuğuyla etkileşim yapmak daha keyifli ve verimli hale geliyor. Bu, projeyle ilgilenen büyük bir topluluk sayesinde gerçekleşiyor.
|
||||
|
||||
Tüm potansiyelini incelemek için zaman ayırmanızı şiddetle tavsiye ederim, hem [web](https://ohmyz.sh/) sitesinde hem de [repository](https://github.com/ohmyzsh/ohmyzsh/)de mevcut.
|
||||
|
||||
OhMyZSH'yı kurmaya başlayalım. Belgelendirmesine baktığımızda farklı seçeneklerimiz olduğunu göreceğiz: `curl`, `wget` veya `fetch`. İlk ikisi Ubuntu'da varsayılan olarak mevcuttur. `curl` ile kurmak için aşağıdaki gibi yapabilirsiniz.
|
||||
|
||||
```shell
|
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
```
|
||||
|
||||
Önceki komutu çalıştırdıktan sonra aşağıdaki ekran görüntüsünde gösterilen gibi bir çıktı görmelisiniz.
|
||||
|
||||
![](Images/Day20_Linux7.png)
|
||||
|
||||
Şimdi bir tema kullanmaya başlayabiliriz, OhMyZSH ile birlikte 100'den fazla tema bulunmaktadır. Michael Cade'nin favori teması Dracula temasıdır.
|
||||
|
||||
Oh My ZSH için iki vazgeçilmez eklenti aşağıdaki gibi yüklenir:
|
||||
|
||||
```shell
|
||||
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
|
||||
```
|
||||
|
||||
```shell
|
||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
|
||||
```
|
||||
Ardından tercih ettiğimiz metin düzenleyiciyle dotfile'ı düzenlememiz gerekecek (önceki günlerde gördüğümüz gibi nano veya vim olabilir) `~/.zshrc`
|
||||
|
||||
Eklentileri eklemek için şunları yapmalısınız,
|
||||
|
||||
```sh
|
||||
plugins=(
|
||||
git
|
||||
zsh-autosuggestions
|
||||
zsh-syntax-highlighting
|
||||
)
|
||||
```
|
||||
|
||||
## Gnome Eklentileri(Extensions)
|
||||
|
||||
Ayrıca Gnome uzantılarını da kullanabilirsiniz. Özellikle Michael Cade, aşağıdaki listeyle ilgilenmenizi önerir.
|
||||
|
||||
[Gnome Eklentileri](https://extensions.gnome.org)
|
||||
|
||||
- Caffeine
|
||||
- CPU Power Manager
|
||||
- Dash to Dock
|
||||
- Desktop Icons
|
||||
- User Themes
|
||||
|
||||
## Yazılım Kurulumu
|
||||
|
||||
Yazarın `apt` kullanarak yüklediği programların kısa bir listesi.
|
||||
|
||||
- VSCode
|
||||
- azure-cli
|
||||
- containerd.io
|
||||
- docker
|
||||
- docker-ce
|
||||
- google-cloud-sdk
|
||||
- insomnia
|
||||
- packer
|
||||
- terminator
|
||||
- terraform
|
||||
- vagrant
|
||||
|
||||
### Dracula Teması
|
||||
|
||||
Bu, yazar Michael Cade'in kullandığı tema. Tema açık, temiz ve her şey çok güzel görünüyor. [Dracula Teması](https://draculatheme.com/) birçok farklı programınız olduğunda da uyumlu bir görünüm sağlar.
|
||||
|
||||
Yukarıdaki bağlantıdan sitede zsh arayabilir ve en az iki seçenek bulabilirsiniz.
|
||||
|
||||
Kılavuzdaki talimatları takip ederek ya manuel olarak ya da git kullanarak kurulum yapabilirsiniz. Ardından `.zshrc` yapılandırma dosyanızı aşağıdaki gibi düzenlemeniz gerekecektir.
|
||||
|
||||
![](Images/Day20_Linux8.png)
|
||||
|
||||
Ayrıca [Gnome Terminal Dracula Tema](https://draculatheme.com/gnome-terminal)nı seçebilirsiniz. Her adımı belgelemek oldukça zaman alacağından, işlemi gösteren bir video izleyebilirsiniz. (Resme tıklayın)
|
||||
|
||||
[![](Images/Day20_YouTube.png)](https://youtu.be/jeEslAtHfKc)
|
||||
|
||||
Daha önce bahsettiğim gibi, çevirmenin başka bir kişiselleştirmesini [zsh-shell](https://linuxconfig.org/zsh-shell-installation-and-configuration-on-linux) görebilirsiniz.
|
||||
|
||||
Sonucu aşağıdaki ekran görüntüsünde görebilirsiniz.
|
||||
|
||||
![](Images/Day20_Linux9.png)
|
||||
|
||||
Buraya kadar geldiysen tebrik etmeliyim, #90DaysOfDevOps'un Linux günlerini tamamladık. Kendi başınıza araştırma yapmayı ve çok fazla pratik yapmayı unutmayın. Öğrenilen bilgiler genellikle kendi kendine kazanılan bilgilerdir ve unutulmazlar.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Bash in 100 seconds](https://www.youtube.com/watch?v=I4EWvMFj37g)
|
||||
- [Bash script with practical examples - Full Course](https://www.youtube.com/watch?v=TPRSJbtfK4M)
|
||||
- [Client SSH GUI - Remmina](https://remmina.org/)
|
||||
- [The Beginner's guide to SSH](https://www.youtube.com/watch?v=2QXkrLVsRmk)
|
||||
- [Vim in 100 Seconds](https://www.youtube.com/watch?v=-txKSRn0qeA)
|
||||
- [Vim tutorial](https://www.youtube.com/watch?v=IiwGbcd8S7I)
|
||||
- [Guía básica de Vim](https://gitea.vergaracarmona.es/man-linux/Guia-VIM)
|
||||
- [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70)
|
||||
- [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE)
|
||||
- [Webminal](https://www.webminal.org/)
|
||||
- [Personal shell configuration with zsh](https://gitea.vergaracarmona.es/man-linux/zsh-shell)
|
||||
|
||||
Yarın, 7 günlük network dalışımıza başlıyoruz. Temel network bilgilerini ve DevOps çerçevesinde network anlayışını gözden geçireceğiz. Kemerlerinizi bağlayın ve hazır olun...
|
||||
|
||||
Gorusmek Uzere [Gun 21](day21.md) 🦾
|
116
2022/tr/Days/day21.md
Normal file
116
2022/tr/Days/day21.md
Normal file
@ -0,0 +1,116 @@
|
||||
## DevOps & Networking
|
||||
|
||||
Tüm bölümlerde olduğu gibi, burada da açık ve ücretsiz eğitim materyalleri kullanılıyor. Gösterilen içeriğin büyük bir kısmı [Networking Uygulamalı](https://www.practicalnetworking.net/) ve [Networking Temelleri Serisi](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi) gibi kaynaklara atfedilebilir. Kaynaklar ve bağlantılarla birlikte belirtilmiştir, ancak topluluk perspektifinden bunu vurgulamak uygun olur. Bu kurs, benim belirli teknoloji alanları hakkında daha fazla anlamamı sağlamak için kullanılmıştır. Bu depo, notlarımı almak ve topluluğun bu notlar ve listelenen kaynaklardan faydalanmasını sağlamak için bir yer olarak hizmet eder.
|
||||
|
||||
21. güne hoş geldiniz! Önümüzdeki 7 gün boyunca ağları keşfedeceğiz. DevOps'ta, platform mühendisi pozisyonunda kendimizi savunabilmek için network(ag) oluşturma hakkında temel bilgilere sahip olmak önemlidir.
|
||||
|
||||
Sonuç olarak, daha önce de söylediğimiz gibi, DevOps, organizasyonlardaki bir kültür ve süreç değişikliğidir; sanal makineler, konteynerler veya Kubernetes ile olabilir. Ağ da bu değişime dahil olabilir. Altyapımız için DevOps prensiplerini kullanıyorsak, ağı da DevOps perspektifiyle ele almalıyız. Ayrıca, farklı topolojiler, ağ araçları ve mevcut olabilecek yığınlar gibi ağ hakkında bilgi sahibi olmanız gerekmektedir.
|
||||
|
||||
Tavsiye edilen yaklaşım, ağ cihazlarımızı altyapıyı kod olarak yapılandırarak ([IaC](https://es.wikipedia.org/wiki/Infraestructura_como_c%C3%B3digo)) sahip olmaktır. Bu konuyu daha önce de bahsetmiştik. Ayrıca, sanal makinelerimizi nasıl otomatikleştiriyorsak ağımızı da aynı şekilde otomatikleştirmeliyiz, ancak bunu yapmak için otomatikleştirdiğimiz şeyin iyi bir anlayışını edinmemiz gerekmektedir.
|
||||
|
||||
Hadi Başlayalım!
|
||||
|
||||
### NetDevOps | Network DevOps Nedir?
|
||||
|
||||
Bulut kültürü içinde Network DevOps veya NetDevOps gibi terimleri duyacaksınız. Belki de zaten bir ağ mühendisisiniz ve altyapıdaki ağ bileşenlerini çok iyi biliyorsunuz, bu durumda DHCP, DNS, NAT vb. gibi network ile ilgili unsurları ve bu unsurların önemini anlayacaksınız. Ayrıca, donanım veya yazılım tarafından tanımlanan ağ seçeneklerini, switch'leri, yönlendiricileri vb. iyi bir şekilde bileceksiniz.
|
||||
|
||||
Eğer bir Network mühendisi değilseniz, muhtemelen Network DevOps'un hedefini anlamak için bu alanda temel bir bilgiye ihtiyaç duyabilirsiniz.
|
||||
|
||||
NetDevOps veya Network DevOps terimlerini DevOps prensiplerinin ve uygulamalarının ağa uygulanması olarak düşünebiliriz. Bu, ağın oluşturulması, test edilmesi, izlenmesi ve dağıtılması süreçlerine sürüm kontrolü ve otomasyon araçlarının uygulanması anlamına gelir.
|
||||
|
||||
Network'un otomasyon gerektirmesi nedeniyle, DevOps'un takım arasındaki sınırları kaldıran bir yapı olduğunu söylediğimizde geriye dönmeliyiz. Eğer network ekipleri benzer bir model ve sürece geçmezse, genel başarısızlık noktasına veya hatta engelleyici bir faktöre dönüşebilirler.
|
||||
|
||||
Yeniden aprovision, yapılandırma, test, sürüm kontrolü ve dağıtım gibi alanlarda otomasyon prensiplerini kullanmak iyi bir başlangıçtır. Genel olarak, otomasyon, dağıtımlarda hız ve esnekliği artırmaya yardımcı olurken, ağ altyapısının istikrarını ve buna bağlı olarak paylaşılan bir süreci birden fazla ortamda test edildikten sonra elde etmeyi sağlar. Örneğin, bir ortamda tamamen test edilmiş bir ağ politikası, bir kod olduğu için hızla başka bir konumda kullanılabilir.
|
||||
|
||||
Bu düşüncenin iyi bir bakış açısı ve özeti şurada bulunabilir: [Network DevOps](https://www.thousandeyes.com/learning/techtorials/network-devops).
|
||||
|
||||
## Network'un Temelleri
|
||||
|
||||
Bir süreliğine DevOps perspektifini bir kenara bırakıp, ağın bazı temel kavramlarına kısaca göz atalım.
|
||||
|
||||
*Bu içeriği video formatında tercih ederseniz, Practical Networking'in bu videolarına göz atabilirsiniz:*
|
||||
|
||||
* [*Network Cihazları - Hosts, IP Addresses, Networks - Networking Temelleri - Ders 1a*](https://www.youtube.com/watch?v=bj-Yfakjllc&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=1)
|
||||
* [*Network Cihazları - Hub, Bridge, Switch, Router - Networking Temelleri - Ders 1b*](https://www.youtube.com/watch?v=H7-NR3Q3BeI&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=2)
|
||||
|
||||
### Network Cihazları
|
||||
|
||||
**Host** - Trafik gönderen veya alan tüm cihazlardır.
|
||||
|
||||
![](Images/Day21_Networking1.png)
|
||||
|
||||
**IP Adresi** - Her bir ana bilgisayarın kimliğidir.
|
||||
|
||||
![](Images/Day21_Networking2.png)
|
||||
|
||||
**Network** - Hostlar arasında trafiği taşıyan yapıdır. Ağ olmasaydı, verilerin manuel olarak taşınması gerekecekti!
|
||||
|
||||
Benzer bir bağlantı gerektiren mantıksal bir host grubu.
|
||||
|
||||
![](Images/Day21_Networking3.png)
|
||||
|
||||
**Switches** - Bir ağ içinde iletişimi kolaylaştırır. Veri paketlerini ana bilgisayarlar arasında ileterek ve doğrudan ana bilgisayarlara göndererek işlev görür.
|
||||
|
||||
- Network: Benzer bir bağlantı gerektiren ana hostların gruplandığı yapıdır.
|
||||
- Bir ağdaki hostlar aynı IP adresi alanını paylaşırlar.
|
||||
|
||||
> *Daha gelişmiş olanlar, bir yönlendirici gibi davranabilir. Benzer özelliklere sahip cihazlar arasında yönlendirme yapabilir, ancak bir yönlendiricinin sağlayabileceği tüm yönlendirme protokollerine sahip olmayabilirler.*
|
||||
|
||||
![](Images/Day21_Networking4.png)
|
||||
1
|
||||
**Router(Yonlendirici)** - Ağlar arasındaki iletişimi kolaylaştırır. Bir switch ağ içinde iletişimi sağlarken, router bu ağları birleştirmemize veya izin verildiği durumlarda aralarında erişim sağlamamıza olanak tanır.
|
||||
|
||||
> *Evlerimizde bildiğimiz yönlendiriciden bahsetmiyoruz. Sadece yönlendirme işlevini yerine getiren cihazdan bahsediyoruz. Şu anda [ISP](https://es.wikipedia.org/wiki/Proveedor_de_servicios_de_internet)'lerden aldığımız, benim görüşüme göre hatalı olan şeyler olarak adlandırdığımız cihazlar aslında 4 bileşenden oluşur: Router, switch, erişim noktası ve modem. Bu cihazlar arasındaki farkı anlamak için bu cihaz farkını göz önünde bulundurmalıyız.*
|
||||
|
||||
Bir yönlendirici trafiği kontrol etmek için bir nokta sağlayabilir (güvenlik, filtreleme, yönlendirme). Günümüzde birçok switch de bu işlevlerin bazılarını sağlamaktadır.
|
||||
|
||||
Yönlendiriciler hangi ağlara bağlı olduklarını öğrenir. Bir yönlendirme tablosu, bir yönlendiricinin bildiği ağların kümesini içerir.
|
||||
|
||||
Bir yönlendiricinin bağlı olduğu ağlarda bir IP adresi bulunur. Bu IP aynı zamanda her bir ana bilgisayarın yerel ağından çıkış noktası olarak da kullanılır, bu aynı zamanda bir ağ geçidi (gateway) olarak da bilinir.
|
||||
|
||||
Yönlendiriciler ayrıca yukarıda bahsettiğimiz ağ hiyerarşisini oluştururlar.
|
||||
|
||||
> *Daha gelişmiş olanlar, bir switch ile aynı özelliklere sahip olabilir.*
|
||||
|
||||
![](Images/Day21_Networking5.png)
|
||||
|
||||
## Switches vs. Routers
|
||||
|
||||
**Routing** verileri ağlar arasında taşıma işlemidir.
|
||||
|
||||
- Bir router, temel amacı yönlendirme olan bir cihazdır.
|
||||
|
||||
**Switching** verileri bir ağ içinde taşıma işlemidir.
|
||||
|
||||
- Bir switch, ana işlevi anahtarlama olan bir cihazdır.
|
||||
|
||||
Bazı cihazlara genel bir bakış verdik, ancak Network'te başka işlevlere sahip birçok daha fazla cihazın olduğunu bilmeliyiz, Örneğin:
|
||||
|
||||
- Access pointler
|
||||
- Firewall'lar (fiziksel, donanım tabanlı).
|
||||
- Load Balancerlar (fiziksel, donanım tabanlı).
|
||||
- 3. Katman Switchler.
|
||||
- IDS / IPS.
|
||||
- Proxyler.
|
||||
- Sanal Switchler(mantıksal, yazılım tabanlı).
|
||||
- Sanal Routerlar(mantıksal, yazılım tabanlı).
|
||||
|
||||
Önceki cihazların hepsi, yönlendirme (routing) ve/veya anahtarlamayı (switching) bir şekilde gerçekleştirecektir.
|
||||
|
||||
Gelecek günlerde aşağıdaki konuları daha detaylı bir şekilde öğreneceğiz:
|
||||
|
||||
- OSI Modeli
|
||||
- Network Protokolleri
|
||||
- DNS (Domain Name System)
|
||||
- NAT
|
||||
- DHCP
|
||||
- Subnetler(Alt aglar)
|
||||
|
||||
Bu kavramlar, ağları anlamak için temel oluşturacak çok önemli konulardır. Eğer bu terimlere aşina değilseniz, ağın ileriki günlerine devam etmeniz en iyisi olacaktır. Eğer bu terimleri biliyorsanız, gözden geçirebilir veya doğrudan bir sonraki konuya geçebilirsiniz: [Cloud Provider(Bulut Saglayıcı)](day28.md)
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
* [Networking Temelleri](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi)
|
||||
* [Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
|
||||
Gorusmek Uzere [Gun 22](day22.md).
|
107
2022/tr/Days/day22.md
Normal file
107
2022/tr/Days/day22.md
Normal file
@ -0,0 +1,107 @@
|
||||
Aşağıdaki içerik büyük ölçüde Uygulamalı Networking'in [Networking Fundamentals Serisi](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi)nden alınmıştır. Eğer bu içeriği video formatında tercih edersen, şu iki videoya göz atabilirsin:
|
||||
|
||||
* [The OSI Model: A Practical Perspective - Layers 1 / 2 / 3](https://www.youtube.com/watch?v=LkolbURrtTs&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=3)
|
||||
* [The OSI Model: A Practical Perspective - Layers 4 / 5+](https://www.youtube.com/watch?v=0aGqGKrRE0g&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=4)
|
||||
|
||||
## OSI Modeli - 7 Katman
|
||||
|
||||
Ağlarla ilgili genel amaç, iki ana bilgisayar arasında veri paylaşımını mümkün kılmaktır. Ağ bağlantısı öncesi, bir ana bilgisayardan diğerine veri taşımak için bir şeyleri birleştirmemiz, ilk ana bilgisayara bir şeyler bağlamamız, ardından onu diğer ana bilgisayara götürüp orada da bağlamamız gerekiyordu. Ağ bağlantısı sayesinde, veri paylaşımı otomatik hale gelir ve bu bağlantı üzerinden kablolu veya kablosuz ağlar aracılığıyla gerçekleştirilebilir. Ancak, bu işlemi gerçekleştirebilmek için bu ana bilgisayarların ortak bir dizi kurala uyması gerekmektedir.
|
||||
|
||||
Bu, herhangi bir dilin kurallarından farklı değildir. İngilizce, iki İngilizce konuşmacının takip etmesi gereken belirli kurallara sahiptir. İspanyolca kendi kurallarına sahiptir. Fransızca kendi kurallarına sahiptir ve network çalışması da kendi kurallarına sahiptir.
|
||||
|
||||
Şu anda en yaygın olarak kullanılan network kuralları yedi farklı katmana ayrılır ve bu katmanlar OSI modeli olarak bilinir. Diğer modeller olsa da, bu en yaygın olanıdır ve bir standart oluşturmuştur.
|
||||
|
||||
### OSI Modeline Giriş
|
||||
|
||||
OSI (Açık Sistemler Arabirim Modeli) modeli, bir network sisteminin işlevlerini tanımlamak için kullanılan bir çerçevedir. OSI modeli, bilgisayar işlevlerini, farklı ürünler ve yazılımlar arasında etkileşimliğe olanak sağlamak için evrensel bir dizi kurallar ve gereksinimlerle karakterize eder. OSI referans modelinde, bir bilgisayar sistemi arasındaki iletişim, yedi farklı soyutlama katmanına ayrılır:
|
||||
|
||||
- **Fiziksel Katman (Physical Layer)**
|
||||
- **Veri Bağlantı Katmanı (Data Link Layer)**
|
||||
- **Ağ Katmanı (Network Layer)**
|
||||
- **Taşıma Katmanı (Transport Layer)**
|
||||
- **Oturum Katmanı (Session Layer)**
|
||||
- **Sunum Katmanı (Presentation Layer)**
|
||||
- **Uygulama Katmanı (Application Layer)**.
|
||||
|
||||
Bu katmanlara biraz daha yakından bakalım.
|
||||
|
||||
### Fiziksel Katman (Physical Layer)
|
||||
|
||||
OSI modelindeki 1. katman olan fiziksel katman, verilerin bir ana bilgisayardan diğerine iletilmesini sağlama amacını taşır. Bu katmanda veriler, fiziksel kablolar gibi fiziksel ortam aracılığıyla veya kablosuz ortamlar gibi kablosuz bağlantılar aracılığıyla taşınabilir. Bu katmana ait diğer donanımlar arasında hub'lar ve tekrarlayıcılar da bulunur, bunlar verileri bir ana bilgisayardan diğerine iletmek için kullanılır.
|
||||
|
||||
![](Images/Day22_Networking2.png)
|
||||
|
||||
### Veri Bağlantı Katmanı
|
||||
|
||||
2.katman olan veri bağlantı katmanı, verilerin düğümden düğüme aktarılmasını sağlar ve veriler paketlere yerleştirilir. Ayrıca, fiziksel katmanda meydana gelebilecek hataların düzeltilmesi için bir hata düzeltme seviyesi bulunur. Bu katmanda, MAC adreslerini ilk kez tanıtır veya görürüz.
|
||||
|
||||
[Gun 21](day21.md) içerisinde tanımladığımız switch'ler çoğunlukla bu katmanda çalışır.
|
||||
|
||||
![](Images/Day22_Networking3.png)
|
||||
|
||||
### Ag Katmanı
|
||||
|
||||
3. katman olan ağ katmanı, uçtan uca iletişimi hedefler. Bu katmanda IP adreslerini de gördüğümüzü hatırlayabilirsiniz. [Gun 21](day21.md)
|
||||
|
||||
Router'lar ve ana bilgisayarlar (host'lar) 3. katmanda yer alır. Router, birden fazla ağ arasında yönlendirme yapabilme yeteneğine sahiptir. IP'ye sahip olan herhangi bir cihaz, 3. katmana ait kabul edilebilir.
|
||||
|
||||
![](Images/Day22_Networking4.png)
|
||||
|
||||
Eeki, neden 2. ve 3. katmanlarda adresleme şemalarına ihtiyaç duyuyoruz? (MAC Adresleri vs. IP Adresleri)
|
||||
|
||||
Bir ana bilgisayardan diğerine veri aktarımını düşündüğümüzde, her bir ana bilgisayarın bir IP adresi vardır, ancak aralarında birçok switch ve router bulunmaktadır. Her bir cihazın 2. katman MAC adresi vardır.
|
||||
|
||||
katman MAC adresi sadece ana bilgisayardan switch'e/router'a gidecektir, zıplamalar üzerinde odaklanırken, 3. katman IP adresleri veri paketi ana bilgisayara kadar gelene kadar paketle birlikte kalır. (Uçtan uca)
|
||||
IP Adresleri - 3. Katman = Uçtan uca iletişim sağlar.
|
||||
|
||||
MAC Adresleri - 2. Katman = Zıplama üzerinden iletişim sağlar.
|
||||
|
||||
Göreceğimiz bir ağ protokolü, ancak bugün değil, ARP (Adres Çözümleme Protokolü), 3. ve 2. katman adreslerimizi bağlar.
|
||||
|
||||
|
||||
> IP Adresleri - 3. Katman = Uçtan uca iletişim sağlar.
|
||||
|
||||
> MAC Adresleri - 2. Katman = Zıplama üzerinden iletişim sağlar.
|
||||
|
||||
Göreceğimiz bir ağ protokolü, ancak bugün değil, ARP (Adres Çözümleme Protokolü), 3. ve 2. katman adreslerimizi bağlar.
|
||||
|
||||
### Tasıma Katmanı
|
||||
|
||||
4.katman olan taşıma katmanı, Hizmetten Hizmete teslimat için orada bulunur ve veri akışlarını ayırt etmek için kullanılır. 3. katman ve 2. katmanın adresleme şemalarına sahip olduğu gibi, 4. katmanda portlar bulunur.
|
||||
|
||||
![](Images/Day22_Networking5.png)
|
||||
|
||||
### Oturum, Sunum, Uygulama Katmanları
|
||||
|
||||
5., 6. ve 7. katmanlar arasındaki ayrım biraz belirsiz olabilir veya belirsiz hale gelmiş olabilir.
|
||||
|
||||
Daha güncel bir anlayış için [TCP IP Model](https://www.geeksforgeeks.org/tcp-ip-model/)e başvurmak faydalı olabilir.
|
||||
|
||||
OSI modelini kullanarak hostların birbirleriyle iletişim kurduğu durumu anlamaya çalışalım. İlk host, başka bir ana bilgisayara gönderilmek üzere tasarlanmış verileri üretecek bir uygulamaya sahiptir.
|
||||
|
||||
Kaynak host, kapsülleme sürecinden geçecektir. Bu veriler önce 4. katmana iletilir.
|
||||
|
||||
katman, bu verilere hizmetten hizmete teslimat hedefini kolaylaştıracak bir başlık ekler. Bu başlık, TCP veya UDP portunu içerir. Ayrıca kaynak ve hedef noktasını da içerir. Bu, segment olarak bilinir (veri ve nokta).
|
||||
|
||||
Bu segment, OSI yığını boyunca 3. kattan, yani ağ katmanından geçer ve ağ katmanı bu verilere başka bir başlık ekler. Bu başlık, ağ katmanının uçtan uca teslimat hedefini kolaylaştırır, yani bu başlıkta bir kaynak IP adresi ve bir hedef IP adresi bulunur. Başlık ve veriler ayrıca bir paket olarak da adlandırılabilir.
|
||||
|
||||
3.katman bu paketi alır ve 2. katmana geçirir. 2. katman, 2. katmanın zıplama üzerinden teslimat hedefini yerine getirmek için bu verilere başka bir başlık ekler. Bu başlık, kaynak ve hedef MAC adresini içerir. Bu, 2. katman başlığı ve verileri olduğunda bir çerçeve olarak adlandırılır.
|
||||
|
||||
Bu çerçeve daha sonra sıfır ve birlerle temsil edilir ve fiziksel kabloya veya kablosuz bağlantıya gönderilir.
|
||||
|
||||
![](Images/Day22_Networking6.png)
|
||||
|
||||
Harika, değil mi?
|
||||
|
||||
![](Images/Day22_Networking7.png)
|
||||
|
||||
Verileri gönderen uygulama, verilerin gönderildiği yere gönderildiğinden, alım işlemi bu sürecin tersine döndürülerek alıcı ana bilgisayarda yığına geri döndürülür. Yani, veriler fiziksel katmana ulaşır, ardından veri bağlantı katmanına, ağ katmanına, taşıma katmanına ve oturum katmanına kadar ilerler.
|
||||
|
||||
![](Images/Day22_Networking8.png)
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
* [Networking Fundamentals](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi)
|
||||
- [Computer Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
|
||||
Gorusmek Uzere [Día 23](day23.md).
|
106
2022/tr/Days/day23.md
Normal file
106
2022/tr/Days/day23.md
Normal file
@ -0,0 +1,106 @@
|
||||
|
||||
Aşağıdaki içerik büyük ölçüde Uygulamalı Networking [Networking Temelleri Serisi](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi) kaynağından alınmıştır. Eğer bu içeriği video formatında tercih edersen, bu videoya göz atabilirsin:
|
||||
|
||||
* [Network Protokolleri - ARP, FTP, SMTP, HTTP, SSL, TLS, HTTPS, DNS, DHCP](https://www.youtube.com/watch?v=E5bSumTAHZE&list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi&index=12)
|
||||
|
||||
|
||||
## Network(Ag) Protokolleri
|
||||
|
||||
Network(Ağ) standartlarını oluşturan kurallar ve mesajlar kümesidir.
|
||||
|
||||
- ARP - Address Resolution Protocol (Adres Çözümleme Protokolü)
|
||||
|
||||
ARP hakkında daha ayrıntılı bilgi edinmek istersen [RFC 826](https://datatracker.ietf.org/doc/html/rfc826) internet standardını okuyabilirsin.
|
||||
|
||||
Temel olarak, IP adreslerini fiziksel makine adresleri olan, aynı zamanda MAC adresleri olarak bilinen, bir Layer 2 ağ üzerinde eşleştiren bir protokoldür.
|
||||
|
||||
![](Images/Day23_Networking1.png)
|
||||
|
||||
- FTP - Dosya Transfer Protokolü (File Transfer Protocol)
|
||||
|
||||
Kaynak noktasından hedef noktasına dosya transferine olanak sağlar. Genellikle bu işlem kimlik doğrulamalıdır, ancak yapılandırılırsa anonim erişim de kullanılabilir. Artık FTPS (FTP üzerinden SSL/TLS bağlantısı) daha yaygın olarak kullanılmaktadır, bu da daha fazla güvenlik için istemciden FTP sunucularına SSL/TLS bağlantısı sağlar. Bu protokol OSI Modeli'nin Uygulama katmanında bulunur.
|
||||
|
||||
![](Images/Day23_Networking2.png)
|
||||
|
||||
- SMTP - Basit Posta Transfer Protokolü (Simple Mail Transfer Protocol)
|
||||
|
||||
E-posta iletilerinin iletilmesi için kullanılır, e-posta sunucuları, e-posta mesajlarını göndermek ve almak için SMTP'yi kullanır. Microsoft 365 ile bile aynı amacı için SMTP protokolü hala kullanılmaktadır.
|
||||
|
||||
![](Images/Day23_Networking3.png)
|
||||
|
||||
- HTTP - Hiper Metin Transfer Protokolü (Hyper Text Transfer Protocol)
|
||||
|
||||
HTTP, İnternet'in ve içerik gezinmenin temelidir. Bize favori web sitelerimize kolayca erişim sağlar. HTTP hala yaygın bir şekilde kullanılmaktadır, ancak favori sitelerinizin çoğunda HTTPS kullanılması daha yaygın veya kullanılması gerekmektedir.
|
||||
|
||||
![](Images/Day23_Networking4.png)
|
||||
|
||||
- SSL - Güvenli Yuvalar Katmanı (Secure Sockets Layer) | TLS - Taşıma Katmanı Güvenliği (Transport Layer Security)
|
||||
|
||||
TLS, SSL'nin yerini almıştır. TLS, bir ağ üzerinde iletişime güvenlik sağlayan bir **Kriptografik Protokol**'dür. E-posta, anlık mesajlaşma ve diğer uygulamalarda kullanılabileceği gibi, HTTPS'i güvence altına almak için daha yaygın olarak kullanılır. Önceki açıklamada her katmanın başlık ve verilerinin adlandırılması belirtildi, bu da buna dahildir.
|
||||
|
||||
![](Images/Day23_Networking5.png)
|
||||
|
||||
- HTTPS - SSL/TLS ile güvence altına alınmış HTTP
|
||||
|
||||
HTTP'nin bir uzantısı olup ağ üzerinde güvenli iletişim sağlamak için kullanılır. HTTPS, yukarıda belirtildiği gibi TLS ile şifrelenir. Amaç, ana bilgisayarlar arasında veri alışverişinde kimlik doğrulama, gizlilik ve bütünlük sağlamaktır.
|
||||
|
||||
![](Images/Day23_Networking6.png)
|
||||
|
||||
- DNS - Domain Name System (Alan Adı Sistemi)
|
||||
|
||||
Hepimiz [google.com](https://google.com) gibi bir adresi biliyoruz, ancak tarayıcıyı açıp [8.8.8.8](https://8.8.8.8) gibi bir adresi girdiğimizde, Google'a aşina olduğumuz şekilde ulaşabiliriz. İlgilendiğimiz tüm web sitelerinin IP adreslerini hatırlayamayız, hatta Google veya DuckDuckGo gibi bir arama motoru kullanarak bilgi ararken bile, adreslerin kolayca hatırlanabilir olmasına ihtiyacımız vardır.
|
||||
|
||||
İşte DNS devreye giriyor ve ana bilgisayarların, hizmetlerin ve diğer kaynakların insanlar tarafından erişilebilir olmasını sağlıyor.
|
||||
|
||||
Tüm ana bilgisayarlarda, İnternet'e erişim gerektiğinde, alan adlarını çözebilmek için DNS'e sahip olmaları gerekiyor. DNS'ler üzerinde yıllarca öğrenme süreci geçirebileceğiniz bir alan olduğunu söyleyebilirim. Ayrıca, ağlarla ilgili hataların en yaygın nedeni olduğunu deneyimlerime dayanarak söyleyebilirim, ancak ağ mühendisinin bu konuda benimle aynı fikirde olup olmayacağından emin değilim.
|
||||
|
||||
![](Images/Day23_Networking7.png)
|
||||
|
||||
- DHCP - Dynamic Host Configuration Protocol (Dinamik Ana Bilgisayar Yapılandırma Protokolü)
|
||||
|
||||
Hostlarımızın İnternet'e erişmesi veya birbirleriyle dosya transferi yapabilmesi için gereken protokoller hakkında çok şey konuştuk. Peki, her bir hosttada bu görevleri gerçekleştirebilmesi için en az 4 bileşene ihtiyacımız var:
|
||||
|
||||
- IP adresi
|
||||
- Alt ağ maskesi(Subnet)
|
||||
- Varsayılan ağ geçidi(Gateway)
|
||||
- DNS
|
||||
|
||||
Daha önce **IP adresi**ni gördük, bu, bulunduğunuz ağdaki ana bilgisayarınız için benzersiz bir adrestir, evimizin numarası gibi düşünebiliriz.
|
||||
|
||||
**Alt ağ maskesi**ni kısaca göreceğiz, ancak onu posta kodu gibi düşünebiliriz.
|
||||
|
||||
Bir **varsayılan ağ geçidi**, genellikle ağımızda bulunan, 3. katman bağlantılılık sağlayan yönlendiricimizin IP adresidir. Tek bir ağ geçidi gibi düşünebiliriz. Bir benzetmeyle ifade etmek gerekirse, sokağımızdan çıkmamızı sağlayan tek yol gibi görülebilir.
|
||||
|
||||
Sonra DNS geliyor, IP adreslerini zor hatırlanan genel adlara dönüştürmemize yardımcı olan bir sistem olarak gördük. Onları doğru posta kutusuna ulaştırmak için devasa bir sıralama ofisi gibi düşünebiliriz.
|
||||
|
||||
Gördüğümüz gibi, her bir ana bilgisayarın bu 4 bileşene ihtiyacı vardır. Eğer 1000 veya 10.000 ana bilgisayarınız varsa, her birini tek tek belirlemek için çok zaman harcamanız gerekir. İşte DHCP devreye giriyor ve bu protokolü kullanarak ağınız için bir kapsam belirlemenizi ve bu kapsamı ağınızdaki tüm kullanılabilir ana bilgisayarlara dinamik olarak dağıtmanızı sağlıyor.
|
||||
|
||||
Başka bir örnek vermek gerekirse: Bir kafeye girdiniz, bir kahve aldınız ve dizüstü bilgisayarınız veya telefonunuzla oturduğunuz yere geçtiniz. Ana bilgisayarınızı kafenin Wi-Fi'ına bağladınız ve internete erişim sağladınız, mesajlar ve e-postalar gelmeye başladı, web sayfalarında ve sosyal ağlarda gezinmeye başlayabildiniz. Kafenin Wi-Fi'ına bağlandığınızda, makineniz bir DHCP sunucusundan veya muhtemelen yönlendiriciden DHCP yöneten ayrılmış bir sunucudan bir DHCP adresi almış olacaktır. (Kafelerin Wi-Fi'sini önermiyoruz, hepimiz o ağlarda neler olabileceğini biliyoruz.)
|
||||
|
||||
![](Images/Day23_Networking8.png)
|
||||
|
||||
### Subnetting (Alt Aglar)
|
||||
|
||||
Alt ağlar, bir IP ağının mantıksal olarak bölünmüş bir parçasıdır. Büyük ağları daha küçük ve yönetilebilir ağlara bölerek daha verimli hale getirir.
|
||||
|
||||
Her bir alt ağ, daha büyük ağın mantıksal olarak bölünmüş bir parçasıdır. Bir alt ağa bağlı cihazlar, birbirleriyle iletişim kurmalarını sağlayan ortak IP adresi tanımlayıcılarını paylaşırlar.
|
||||
|
||||
Yönlendiriciler, alt ağlar arasındaki iletişimi yönetir.
|
||||
|
||||
Bir alt ağın boyutu, bağlantı gereksinimlerine ve kullanılan ağ teknolojisine bağlıdır.
|
||||
|
||||
Bir organizasyon, kullanılabilir adres alanı sınırları içinde alt ağların sayısını ve boyutunu belirleme sorumluluğuna sahiptir ve ayrıntılar bu organizasyonun elindedir. Alt ağlar, noktadan noktaya bağlantıları veya birkaç cihazı destekleyen alt ağlara daha da küçük alt ağlara bölünebilir.
|
||||
|
||||
Diğer avantajlarının yanı sıra, alt ağları bölümlere ayırmak, ağ yeniden tahsisini ve ağı rahatlatmayı sağlayarak iletişimi ve verimliliği hızlandırır.
|
||||
|
||||
Alt ağlar aynı zamanda ağın güvenliğini artırabilir. Bir ağın bir bölümü tehlikeye atılırsa, karantinaya alınabilir ve kötü niyetli aktörlerin daha büyük ağ içinde hareket etmesini zorlaştırır.
|
||||
|
||||
![](Images/Day23_Networking9.png)
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Networking Temelleri](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi)
|
||||
- [Subnetting Mastery](https://www.youtube.com/playlist?list=PLIFyRwBY_4bQUE4IB5c4VPRyDoLgOdExE)
|
||||
- [Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
|
||||
Gorusmek Uzere [Gun 24](day24.md).
|
136
2022/tr/Days/day24.md
Normal file
136
2022/tr/Days/day24.md
Normal file
@ -0,0 +1,136 @@
|
||||
## Network Otomasyonu
|
||||
|
||||
### Network Otomasyonunun Temelleri
|
||||
|
||||
Network otomasyonunun başlıca itici güçleri:
|
||||
|
||||
- Çeviklik elde etmek
|
||||
- Maliyetleri azaltmak
|
||||
- Hataları ortadan kaldırmak
|
||||
- Uyumluluğu sağlamak
|
||||
- Merkezi yönetim
|
||||
|
||||
Otomasyonun benimsenme süreci her şirket için özeldir. Otomasyonun uygulanması söz konusu olduğunda herkes için tek bir standart yoktur; organizasyonunuz için en iyi çalışan yaklaşımı belirleme ve benimseme yeteneği, daha çevik bir ortam oluşturmak veya sürdürmek için önemlidir. Her zaman iş değeri ve son kullanıcı deneyimi üzerinde odaklanılmalıdır. (Birkaç gün önce, DevOps ve kültürel değişimle ilişkili olarak benzer bir konu ve otomatikleşme süreci hakkında konuşulmuştu).
|
||||
|
||||
Bunu ayrıntılandırmak için, otomatikleştirmeye çalıştığınız görevin veya sürecin, son kullanıcı deneyimini veya iş değerini nasıl geliştireceğini belirlemelisiniz ve sistematik bir adım adım yaklaşım izlemelisiniz.
|
||||
|
||||
"Nereye gittiğinizi bilmiyorsanız, herhangi bir yol sizi oraya götürecektir."
|
||||
|
||||
Ulaşmayı hedeflediğiniz bir tasarım çerçevesi veya yapıya sahip olun, nihai hedefinizi bilin ve iş sonuçlarına dayanarak otomasyonun başarılarını farklı aşamalarda ölçün.
|
||||
|
||||
Otomasyon kavramlarını bir kabarcıkta tasarlamaya gerek yok çünkü bunlar uygulamanıza, hizmetinize ve altyapınıza uygulanmalıdır. Bu nedenle, mevcut altyapınıza ve uygulamalarınıza odaklanarak kavramları oluşturmaya ve modellenmeye başlayın.
|
||||
|
||||
### Ağ Otomasyonuna Yaklaşım
|
||||
|
||||
Ağdaki görevleri ve ağ değişiklik taleplerini **belirlemeliyiz**, böylece en yaygın sorunları tespit edebilir ve sonrasında çözümün otomatikleştirilmesini sağlayabiliriz.
|
||||
|
||||
- Şu anda manuel olarak ele alınan tüm değişiklik talepleri ve iş akışlarının bir listesini yapın.
|
||||
- En yaygın, zaman alıcı ve hata yapma olasılığı yüksek olan faaliyetleri belirleyin.
|
||||
- İş odaklı bir yaklaşım benimseyerek talepleri önceliklendirin.
|
||||
- Bu, otomasyon sürecini oluşturmanın ve nelerin otomatikleştirilmesi gerektiğinin çerçevesini oluşturur.
|
||||
|
||||
Daha sonra, **görevleri parçalara ayırın ve analiz edin.** Farklı ağ fonksiyonlarının nasıl çalıştığını ve birbirleriyle etkileşime girdiğini anlamak önemlidir:
|
||||
|
||||
- Altyapı/ağ ekibi, uygulamaları dağıtmak için birden çok katmanda değişiklik talepleri alır.
|
||||
- Ağ hizmetlerine dayanarak, bunları farklı alanlara bölebilir ve nasıl etkileşime girdiklerini anlayabilirsiniz.
|
||||
- Uygulama optimizasyonu
|
||||
- ADC - Uygulama Dağıtım Denetleyicisi
|
||||
- Firewallar
|
||||
- DDI (DNS, DHCP, IPAM, vb.)
|
||||
- Yonlendirme
|
||||
- Digerleri
|
||||
- Farklılıkları ele almak ve ekip arasında işbirliğini teşvik etmek için farklı bağımlılıkları tanımlayın.
|
||||
|
||||
**Yeniden kullanılabilir politikalar**: Yeniden kullanılabilir hizmetlerin, süreçlerin ve giriş/çıkışların tanımlanması ve basitleştirilmesi.
|
||||
|
||||
- Farklı hizmetler, süreçler ve giriş/çıkışlar için tekliflerin belirlenmesi.
|
||||
- Dağıtım sürecinin basitleştirilmesi, yeni ve mevcut iş yüklerinin pazarlama süresini kısaltacaktır.
|
||||
- Standart bir süreç oluşturulduktan sonra, bireysel taleplerle sıralanabilir ve çoklu iş parçacığı yaklaşımıyla uyumlu hale getirilebilir.
|
||||
|
||||
**Şirketin özel faaliyetleriyle politikaları birleştirin**. Bu politikaların uygulanması şirkete nasıl yardımcı olur? Zaman tasarrufu sağlar mı? Para tasarrufu sağlar mı? İş sonuçlarını iyileştirir mi?
|
||||
|
||||
- Hizmet görevlerinin birbiriyle uyumlu olduğundan emin olun.
|
||||
- Artan hizmet görevlerini birleştirerek iş hizmetleri oluşturacak şekilde ilişkilendirin.
|
||||
- Taleplere bağlı olarak hizmet görevlerini ilişkilendirme ve yeniden ilişkilendirme esnekliği sağlayın.
|
||||
- Otomatik hizmet yeteneklerini dağıtın ve işletme verimliliğini artırmak için yol açın.
|
||||
- Birden fazla teknoloji beceri setinin denetim ve uyum sağlamaya devam etmesine izin verin.
|
||||
|
||||
**Politika ve süreçleri iteratif olarak** değerlendirin ve geliştirin, aynı zamanda kullanılabilirliği ve hizmeti sürdürerek zamanla iyileştirmeler yapın:
|
||||
|
||||
- Var olan görevleri otomatikleştirmeye yavaşça başlayın.
|
||||
- Otomasyon sürecine aşina olun, böylece otomasyondan fayda sağlayabilecek diğer alanları tespit edebilirsiniz.
|
||||
- Otomasyon girişimlerinizi, kullanılabilirliği sağlarken aşamalı olarak esneklik ekleyerek aşama aşama gerçekleştirin.
|
||||
- Başarıya giden yol için aşamalı bir yaklaşım benimseyin.
|
||||
|
||||
**Ağ hizmetlerini orkestre edin:**
|
||||
|
||||
- Uygulamaları hızla sunmak için dağıtım sürecini otomatikleştirmek önemlidir.
|
||||
- Esnek bir hizmet ortamı oluşturmak için farklı bileşenleri teknoloji yığınları arasında yönetin.
|
||||
- Otomasyonu ve dağıtım sırasını kontrol etmeyi sağlayan uçtan uca bir orkestrasyon için hazırlık yapın.
|
||||
|
||||
## Ağ Otomasyonu Araçları
|
||||
|
||||
İyi bir haber, ağ otomasyonunda kullandığımız araçların çoğunlukla diğer otomasyon alanlarında da kullanılan araçlar olduğudur. Şimdiye kadar ele aldığımız veya gelecekte ele alacağımız konuları kapsar.
|
||||
|
||||
**İşletim Sistemi** - Bu dersin çoğunu bir Linux işletim sistemiyle öğrenmek odaklanır. Linux bölümünde sebepleri açıklandı, ancak dokunacağımız araçların çoğu zaten çok platformlu olsa da çoğunluğu Linux tabanlı uygulamalar olarak başladı.
|
||||
|
||||
**Entegre Geliştirme Ortamı (IDE)** - Burada söyleyecek çok şey yok, ancak farklı diller için birçok eklentiye sahip olduğu için Visual Studio Code'yu bir IDE olarak öneririm.
|
||||
|
||||
**Konfigurasyon Yönetimi** - Henüz yapılandırma yönetimi bölümüne ulaşmadık, ancak yapılandırma yönetimi ve otomasyonu için bu alanda favorilerden biri olan Ansible'ı belirtmek önemlidir. Ansible Python ile yazılmış olmasına rağmen, Python bilmek gerekli değildir.
|
||||
|
||||
- Agent gerektirmez (Agentless)
|
||||
- Sadece SSH gerektirir.
|
||||
- Büyük Destek Topluluğu
|
||||
- Birçok Network Modülü
|
||||
- Sadece Itme Modeli
|
||||
- YAML ile yapılandırılır
|
||||
- Açık kaynaklıdır!
|
||||
|
||||
[Ansible Network Modulleri Linki](https://docs.ansible.com/ansible/2.9/modules/list_of_network_modules.html)
|
||||
|
||||
**Ansible Tower** Yapılandırma yönetimi bölümünde Ansible Tower'a değineceğiz, bu Ansible'ın grafik arayüzüdür(GUI).
|
||||
|
||||
**CI/CD** - Entegrasyon ve sürekli dağıtım kavramları ve araçlarının daha fazla yönünü ele alacağız, ancak en azından burada bahsetmek önemlidir, çünkü bu ağ oluşturma ve hizmet ve platformların tüm sağlanmasını kapsar.
|
||||
|
||||
Özellikle, Jenkins, network otomasyonu için popüler bir araçtır.
|
||||
|
||||
- Git reposundaki değişiklikler için izler ve ardından bunları başlatır.
|
||||
|
||||
**Sürüm Kontrolü** - Daha sonra daha detaylı olarak ele alacağımız bir başka konudur.
|
||||
|
||||
- Git, yerel cihazınızdaki ve uzaktaki kodun sürüm kontrolünü sağlar.
|
||||
- Çok platformlu
|
||||
- GitHub, GitLab, Gitea, BitBucket vb. depolama alanlarıdır. Kodlarınızı saklayabileceğiniz ve yükleyebileceğiniz çevrimiçi web siteleridir.
|
||||
|
||||
**Language | Scripting** - Kapsamayacağımız bir programlama dili Python'dır. Göreceli bir bakış açısıyla çeşitli ihtiyaçları karşılamak için Go dili seçildi, ancak Python her yerde yaygın olarak kullanılmaktadır ve ağ otomasyonunda kazanan gibi görünmektedir.
|
||||
|
||||
- Nornir, Python'da yazılmış bir otomasyon çerçevesidir. Bu, özellikle Ağ Otomasyonu etrafında Ansible'ın rolünü üstlenmektedir. Nornir Belgelerine göz atın. [Nornir Dokumanları](https://nornir.readthedocs.io/en/latest/)
|
||||
|
||||
**API'leri Analiz Etmek** - Postman, RESTful API'leri analiz etmek için harika bir araçtır. API'leri oluşturmanıza, test etmenize ve değiştirmenize yardımcı olur.
|
||||
|
||||
- POST >>> Kaynak objeleri olusturmak için
|
||||
- GET >>> Bir kaynaktan veri almak için.
|
||||
- PUT >>> Kaynakları oluşturmak veya değiştirmek için.
|
||||
- PATCH >>> Bir kaynak nesnesi oluşturmak veya güncellemek için.
|
||||
- Delete >>> Bir kaynağı silmek için.
|
||||
|
||||
[Postman Araçlarının İndirme Linki](https://www.postman.com/downloads/)
|
||||
|
||||
### Bahsedilmesi gereken diğer araçlar
|
||||
|
||||
- [Cisco NSO (Network Services Orchestrator - Ağ Hizmetleri Orkestratörü)](https://www.cisco.com/c/en/us/products/cloud-systems-management/network-services-orchestrator/index.html)
|
||||
- [NetYCE - Ağ Otomasyonunu Basitleştirme](https://netyce.com/)
|
||||
- [Ağ Test Otomasyonu](https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/)
|
||||
|
||||
Önümüzdeki 3 gün boyunca ağ üzerine kapsadığımız bazı teorilerle çalışmaya başlayacağız, böylece Python ve ağ otomasyonu konularında biraz pratik yapabileceğiz.
|
||||
|
||||
Ağ konularının tamamını kapsamadık, sadece temel kavramlara sahip olmak için gerekli olan teorik bilgileri gözden geçirdik. Aşağıda verilen kaynaklarla bilgilerinizi genişletmeniz önerilir.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [3 Necessary Skills for Network Automation](https://www.youtube.com/watch?v=KhiJ7Fu9kKA&list=WL&index=122&t=89s)
|
||||
- [Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
- [Uygulamalı Networking](http://www.practicalnetworking.net/)
|
||||
- [Python Network Automation](https://www.youtube.com/watch?v=xKPzLplPECU&list=WL&index=126)
|
||||
|
||||
Gorusmek Uzere [Gun 25](day25.md).
|
159
2022/tr/Days/day25.md
Normal file
159
2022/tr/Days/day25.md
Normal file
@ -0,0 +1,159 @@
|
||||
## Python ile Ağ(Network) Otomasyonu
|
||||
|
||||
Python, ağ otomasyon işlemleri için kullanılan standart bir dildir.
|
||||
|
||||
Ağ otomasyonu için sadece Python kullanılmaz, ancak kaynakları araştırdığınızda ve yukarıda belirtildiği gibi, genellikle Python kullanılır. Aksi takdirde, genellikle Python tabanlı olan Ansible kullanılır.
|
||||
|
||||
- Okunabilirlik ve kullanım kolaylığı - Python'un sadece mantıklı görünmesiyle ilgili. Kodda blokları başlatmak ve bitirmek için `{}` gibi gereksinimler yok gibi görünüyor. Bu, [VS Code](https://code.visualstudio.com/) gibi güçlü bir IDE ile birleştirildiğinde Python kodunu çalıştırmak oldukça kolay bir başlangıç sağlar.
|
||||
|
||||
[Pycharm](https://www.jetbrains.com/pycharm/) Burada bahsedilmeye değer başka bir IDE olabilir.
|
||||
|
||||
- Kütüphaneler - Python'un genişletilebilirliği burada gerçek bir hazine. Ağ otomasyonu için olmasa da, her türlü cihaz ve yapılandırmalar için yeterli sayıda kütüphane mevcuttur. Büyük bir koleksiyonu [PyPi](https://pypi.python.org/pypi) üzerinde görebilirsiniz.
|
||||
|
||||
Kütüphaneyi iş istasyonunuza indirmek istediğinizde, genellikle PyPI'ya bağlanarak indirme işlemini gerçekleştirmek için `pip` adında bir araç kullanılır. Cisco, Juniper ve Arista gibi ağ sağlayıcıları, cihazlarına erişimi kolaylaştırmak için kendi kütüphanelerini geliştirmişlerdir.
|
||||
|
||||
- Güçlü ve Verimli - Hatırlarsanız, Go günlerinde "Merhaba Dünya" örneğini gerçekleştirirken, sanırım 6 satır kodu geçtik. Python'da ise sadece
|
||||
|
||||
```
|
||||
print('hello world')
|
||||
```
|
||||
|
||||
Yukarıdaki noktaları birleştirirseniz, neden Python'un genellikle otomasyon çalışmalarında birincil araç olarak adlandırıldığını anlamak kolay olmalıdır.
|
||||
|
||||
Birkaç yıl öncesine kadar, ağ cihazlarınızla etkileşimde bulunarak yapılandırmalarını otomatikleştiren veya cihazlarınızda kayıtlar toplayan gibi betikler olabilir. Burada bahsettiğimiz otomasyon biraz farklıdır çünkü ağ genel manada bu düşünceye daha iyi uyan ve daha fazla otomasyona izin veren bir şekilde değişti.
|
||||
|
||||
- Yazılım Tanımlı Ağ (SDN): SDN denetleyicileri, ağdaki tüm cihazlara kontrol düzlemi yapılandırmasını sağlama sorumluluğunu üstlenir. Bu, ağdaki herhangi bir değişiklik için tek bir iletişim noktası anlamına gelir. Artık her cihaza telnet veya SSH üzerinden bağlanmak ve bunu insanlara bağlı yapmak gerekmeyerek, yapılandırma hatalarının tekrarlanabilir olasılığını ortadan kaldırır.
|
||||
|
||||
- Yüksek Seviyeli Orkestrasyon: SDN denetleyicilerinden bir seviye yukarı çıktığınızda, hizmet seviyelerinin orkestrasyonunu sağlar. Ardından, bu orkestrasyon katmanını VMware, Kubernetes, kamu bulutları vb. tercih ettiğiniz platformlara entegre etmek mümkün olur.
|
||||
|
||||
- Politika Tabanlı Yönetim: Ne istemektesiniz? Hedeflenen durum nedir? Bunları tanımlarsınız ve sistem, nasıl çözüleceği hakkında tüm detaylara sahip olur ve hedeflenen duruma ulaşmak için nasıl çözüm üreteceğini bilir.
|
||||
|
||||
## Laboratuvar Ortamının Yapılandırılması
|
||||
|
||||
Herkesin fiziksel yönlendiricilere, anahtarlamalara ve diğer ağ cihazlarına erişimi olmayabilir.
|
||||
|
||||
Ağ yapılandırmasını otomatikleştirmeyi öğrenmek için bazı araçlar kullanılabilir. Bunlardan bazıları:
|
||||
|
||||
- [GNS3 VM](https://www.gns3.com/software/download-vm)
|
||||
- [Eve-ng](https://www.eve-ng.net/)
|
||||
- [Unimus](https://unimus.net/) Unimus bir laboratuvar ortamı olmasa da ilginç bir kavramdır.
|
||||
|
||||
Laboratuvarımızı [Eve-ng](https://www.eve-ng.net/) kullanarak oluşturacağız, ancak fiziksel bir cihaz da kullanabilirsiniz. Sanal bir ortam kullanmanın avantajı, farklı senaryoları test etmek için bir sandbox ortamına sahip olabilmenizdir. Ayrıca, ilgi çekebilecek farklı cihazlar ve topolojilerle oynama imkanına sahip olursunuz.
|
||||
|
||||
Eve-ng'nin community sürümüyle her şeyi gerçekleştireceğiz.
|
||||
|
||||
### Giriş
|
||||
|
||||
Topluluk sürümü ISO ve OVF formatlarında [indirilebilir](https://www.eve-ng.net/index.php/download/).
|
||||
|
||||
Biz OVF indirmeyi kullanacağız, ancak ISO ile bir hipervizör olmadan bare metal bir sunucuda da kurulum yapabilirsiniz.
|
||||
|
||||
![](Images/Day25_Networking1.png)
|
||||
|
||||
Bu kılavuzda VMware Workstation kullanılacak, vExpert aracılığıyla bir lisansa sahip olunacak, ancak VMware Player veya [belgelerde](https://www.eve-ng.net/index.php/documentation/installation/system-requirement/) belirtilen diğer seçenekler de kullanılabilir. Ne yazık ki, daha önce kullanılan Virtualbox'u kullanamıyoruz!
|
||||
|
||||
İşte GNS3 ile VirtualBox'ta yaşanan bir sorun olduğu nokta.
|
||||
|
||||
[VMware Workstation Player'ı ÜCRETSİZ İndir](https://www.vmware.com/uk/products/workstation-player.html)
|
||||
|
||||
[VMware Workstation PRO](https://www.vmware.com/uk/products/workstation-pro.html) Ayrıca ücretsiz değerlendirme süresine sahip!
|
||||
|
||||
### VMware Workstation PRO'da Kurulum
|
||||
|
||||
Şimdi hipervizör yazılımını indirip kurduk ve EVE-NG'nin OVF dosyasını indirdik. VMware Player kullanıyorsanız, bu sürecin aynı olduğunu lütfen bana bildirin.
|
||||
|
||||
Şimdi yapılandırmaya hazırız. VMware Workstation'ı açın ve `file` ve `open` seçeneklerini seçin.
|
||||
|
||||
![](Images/Day25_Networking2.png)
|
||||
|
||||
EVE-NG'nin OVF görüntüsünü indirdiğinizde, içeri bir sıkıştırılmış dosyanın içine yerleştirilmiş olacaktır. İçeriği bir klasöre çıkarın ve görüntü aşağıdaki gibi görünmelidir.
|
||||
|
||||
![](Images/Day25_Networking3.png)
|
||||
|
||||
EVE-NG'nin OVF görüntüsünü indirdiğiniz yere gidin ve içe aktarmayı başlatın.
|
||||
|
||||
Tanınabilir bir ad verin ve sanal makineyi sisteminizde bir yere kaydedin.
|
||||
|
||||
![](Images/Day25_Networking4.png)
|
||||
|
||||
İçe aktarma tamamlandığında, işlemci sayısını 4'e ve ayrılan belleği 8 GB'ye artırın. (Bu, en son sürümle birlikte içe aktarmadan sonra otomatik olarak yapılmalıdır. Eğer öyle değilse, sanal makine yapılandırmasını düzenleyin).
|
||||
|
||||
Ayrıca, Intel VT-x/EPT veya AMD-V/RVI sanallaştırma seçeneğinin işaretli olduğundan emin olun. Bu seçenek, VMware Workstation'a sanal makineye sanallaştırma bayraklarını geçmesini söyler (yönlendirilmiş sanallaştırma). Bu, Virtual Box ile GNS3'te yaşadığım sorunun nedeni idi, CPU bunu desteklemesine rağmen.
|
||||
|
||||
![](Images/Day25_Networking5.png)
|
||||
|
||||
### Acılıs ve Erisim
|
||||
|
||||
Dikkat etmeniz gereken bir nokta ve bir yan konu olarak belirtmiştim: Hatırladınız mı? Bu işlem, VirtualBox ile çalışmayacağını belirttiğiniz gibi, VMware Workstation ve EVE-NG ile de aynı sorunu yaşadım, ancak bu sanallaştırma platformlarının suçu değildi.
|
||||
|
||||
Windows'ta WSL2 çalıştığından dolayı, ortam içinde herhangi bir şeyi iç içe çalıştırma yeteneğini ortadan kaldırdığını gördüm. WSL2 kullanıldığında, Ubuntu sanal makinesinin çalışması gibi, CPU'nun Intel VT-d sanallaştırma özelliğini ortadan kaldırıyor gibi görünüyor. Bu durumu anlamak için biraz şaşkınım.
|
||||
|
||||
Bu sorunu çözmek için aşağıdaki komutu Windows makinenizde çalıştırmanız ve sistemi yeniden başlatmanız gerekiyor. Ancak unutmayın, bu işlem devre dışı olduğunda WSL2'yi kullanamayacaksınız.
|
||||
|
||||
`bcdedit /set hypervisorlaunchtype off`
|
||||
|
||||
WSL2'yi yeniden kullanmak istediğinizde, bu komutu çalıştırmanız ve sistemi yeniden başlatmanız gerekecektir.
|
||||
|
||||
`bcdedit /set hypervisorlaunchtype auto`
|
||||
|
||||
Her iki komutu da yönetici olarak çalıştırmanız gerekmektedir.
|
||||
|
||||
Şimdi VMware Workstation'da çalışan bir sanal makineniz olmalı ve yukarıdaki resimdeki gibi bir komut satırı beklemesi olmalı.
|
||||
|
||||
![](Images/Day25_Networking6.png)
|
||||
|
||||
Yukarıdaki komut satırında aşağıdaki bilgileri kullanabilirsiniz:
|
||||
|
||||
username = root
|
||||
password = eve
|
||||
|
||||
Ardından, daha sonra ana bilgisayarda SSH için kullanılacak olan root şifresini yeniden girmeniz istenecektir.
|
||||
|
||||
Daha sonra, hostta bir hostname (host adı) belirleyebiliriz.
|
||||
|
||||
![](Images/Day25_Networking7.png)
|
||||
|
||||
Sonraki adımda DNS Alan Adı'nı tanımlıyoruz. Aşağıdaki örneği kullandım, ancak ileride değiştirilmesi gerekip gerekmediğinden emin değilim.
|
||||
|
||||
![](Images/Day25_Networking8.png)
|
||||
|
||||
Daha sonra ağı yapılandırıyoruz ve IP adresinin yeniden başlatma sonrasında kalıcı olmasını sağlamak için "statik" seçeneğini seçiyorum.
|
||||
|
||||
![](Images/Day25_Networking9.png)
|
||||
|
||||
Son adımda, çalışma istasyonunuzdan erişilebilen bir ağın statik IP adresini sağlıyoruz.
|
||||
|
||||
![](Images/Day25_Networking10.png)
|
||||
|
||||
Burada, ağınız için alt ağ maskesini, varsayılan ağ geçidini ve DNS'i sağlamanız gereken ek adımlar bulunmaktadır.
|
||||
|
||||
Tamamlandığında, sistem yeniden başlatılacak ve tekrar çalıştığında statik IP adresinizi alıp tarayıcınızda kullanabilirsiniz.
|
||||
|
||||
![](Images/Day25_Networking11.png)
|
||||
|
||||
GUI için varsayılan kullanıcı adı `admin` ve şifre `eve`, SSH için varsayılan kullanıcı adı ise `root` ve şifre `eve`'dir, ancak bunlar yapılandırma sırasında değiştirilmiş olabilir.
|
||||
|
||||
![](Images/Day25_Networking12.png)
|
||||
|
||||
Farklı konsollar arasında gezinirken tarayıcınızda yeni bir sekme açan natif yerine HTML5'ı konsol için seçtim.
|
||||
|
||||
Aşağıda yapacaklarımızı sıralayalım:
|
||||
|
||||
- EVE-NG istemci paketini kurmak
|
||||
- EVE-NG'ye bazı ağ görüntülerini yüklemek
|
||||
- Bir ağ topolojisi oluşturmak
|
||||
- Düğümler eklemek
|
||||
- Düğümleri bağlamak
|
||||
- Python betikleri oluşturmaya başlamak
|
||||
- telnetlib, Netmiko, Paramiko ve Pexpect'i incelemek
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Free Course: Introduction to EVE-NG](https://www.youtube.com/watch?v=g6B0f_E0NMg)
|
||||
- [EVE-NG - Creating your first lab](https://www.youtube.com/watch?v=9dPWARirtK8)
|
||||
- [3 Necessary Skills for Network Automation](https://www.youtube.com/watch?v=KhiJ7Fu9kKA&list=WL&index=122&t=89s)
|
||||
- [Computer Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
- [Practical Networking](http://www.practicalnetworking.net/)
|
||||
- [Python Network Automation](https://www.youtube.com/watch?v=xKPzLplPECU&list=WL&index=126)
|
||||
|
||||
Gorusmek Uzere [Gun 26](day26.md).
|
111
2022/tr/Days/day26.md
Normal file
111
2022/tr/Days/day26.md
Normal file
@ -0,0 +1,111 @@
|
||||
## Laboratuvarımızı Oluşturma
|
||||
|
||||
EVE-NG kullanarak sanal ağımızın yapılandırmasına devam edeceğiz ve daha sonra bazı cihazları dağıtıp bu cihazların yapılandırmasını nasıl otomatikleştirebileceğimizi düşünmeye başlayacağız. [Gun 25](day25.md)'te VMware Workstation üzerinde EVE-NG'nin kurulumunu gerçekleştirdik.
|
||||
|
||||
### EVE-NG client yazılımının kurulumu
|
||||
|
||||
SSH bağlantılarında hangi uygulamanın kullanılacağını seçmemize ve aynı zamanda paket yakalamaları için Wireshark'ın yapılandırılmasına olanak tanıyan bir istemci paketi de bulunmaktadır. İşletim sistemine (Windows, macOS, Linux) uygun olan istemci paketini indirebilirsiniz.
|
||||
|
||||
[EVE-NG client yazılımını indirin](https://www.eve-ng.net/index.php/download/)
|
||||
|
||||
![](Images/Day26_Networking1.png)
|
||||
|
||||
Hızlı İpucu: Linux'u kullanıyorsanız, bu [client paketi](https://github.com/SmartFinn/eve-ng-integration) bulunmaktadır.
|
||||
|
||||
Kurulum doğrudan yapılmaktadır ve başlangıçta varsayılan değerleri kullanmanız önerilir.
|
||||
|
||||
### Ağ görüntülerini elde etme
|
||||
|
||||
Bu adım oldukça zorlu bir süreç olabilir. İlgili kaynaklar ve indirme bağlantıları için aşağıdaki blog yazısını ve YouTube videolarını takip ettim. Bu kaynaklar, router ve switch görüntülerini nasıl ve nereye yükleyeceğimizi göstermektedir.
|
||||
|
||||
Önemli bir nokta, tüm bu işlemleri eğitim amaçlı kullanıyor olmamdır. Resmi ağ sağlayıcılarından lisanslı görüntüleri indirmenizi öneririm.
|
||||
|
||||
[Blog ve YouTube Videolarına Bağlantıları](https://loopedback.com/2019/11/15/setting-up-eve-ng-for-ccna-ccnp-ccie-level-studies-includes-multiple-vendor-node-support-an-absolutely-amazing-study-tool-to-check-out-asap/)
|
||||
|
||||
[Eve-ng'ye Cisco VIRL vIOS görüntüsü nasıl eklenir](https://networkhunt.com/how-to-add-cisco-virl-vios-image-to-eve-ng/)
|
||||
|
||||
Genel olarak, buradaki adımlar biraz karmaşık olabilir ve daha kolay olabilirdi, ancak yukarıdaki blog ve videolar, EVE-NG kutunuza görüntüleri nasıl ekleyeceğinizi adım adım açıklamaktadır.
|
||||
|
||||
Görüntüyü EVE-NG sanal makinesine SFTP aracılığıyla aktarmak için FileZilla kullanılmıştır.
|
||||
|
||||
Laboratuvarımız için Cisco vIOS L2 (switchler) ve Cisco vIOS (router) görüntülerine ihtiyacımız olacak.
|
||||
|
||||
### Bir Laboratuvar Oluşturma
|
||||
|
||||
EVE-NG'nin web arayüzü içinde, yeni bir ağ topolojisi oluşturacağız. Dış ağlara yönlendirme görevi görecek dört adet switch ve bir adet routerımız olacak.
|
||||
|
||||
| Node | IP Address |
|
||||
| ------- | ------------ |
|
||||
| Router | 10.10.88.110 |
|
||||
| Switch1 | 10.10.88.111 |
|
||||
| Switch2 | 10.10.88.112 |
|
||||
| Switch3 | 10.10.88.113 |
|
||||
| Switch4 | 10.10.88.114 |
|
||||
|
||||
#### EVE-NG'ye Node'lar eklemek
|
||||
|
||||
EVE-NG'ye ilk kez giriş yaptığınızda aşağıdaki gibi bir ekran göreceksiniz. İlk laboratuvarımızı oluşturmaya başlamak istiyoruz.
|
||||
|
||||
![](Images/Day26_Networking2.png)
|
||||
|
||||
Laboratuvarınıza bir ad verin ve diğer alanları isteğe bağlı olarak doldurun.
|
||||
|
||||
![](Images/Day26_Networking3.png)
|
||||
|
||||
Boş bir tuval görünecektir. Fare sağ tuşuyla tuval üzerine tıklayın ve "düğüm ekle" seçeneğini seçin.
|
||||
|
||||
Buradan, birçok düğüm seçeneği listesiyle karşılaşacaksınız. Yukarıdaki adımları takip ettiyseniz, aşağıda gösterilen mavi renkteki iki seçeneğe sahip olmalısınız ve diğerleri gri renkte ve seçilemez durumda olacaktır.
|
||||
|
||||
![](Images/Day26_Networking4.png)
|
||||
|
||||
Laboratuvarımıza aşağıdakileri eklemek istiyoruz:
|
||||
|
||||
- 1 x Cisco vIOS Router
|
||||
- 4 x Cisco vIOS Switch
|
||||
|
||||
Bu düğümleri laboratuvarınıza eklemek için basit bir sihirbazı çalıştırın ve sonunda aşağıdaki gibi bir görüntüye sahip olmanız gerekmektedir.
|
||||
|
||||
![](Images/Day26_Networking5.png)
|
||||
|
||||
#### Node'ları birbirine bağlama
|
||||
|
||||
Şimdi, router ve switch'lerimiz arasında bağlantıları oluşturmamız gerekiyor. Bu işlemi, cihazın üzerine fareyle gelerek aşağıdaki gibi bağlantı simgesini görüntüleyip istediğimiz cihaza bağlamak suretiyle kolayca yapabiliriz.
|
||||
|
||||
![](Images/Day26_Networking6.png)
|
||||
|
||||
Ortamınızı bağladıktan sonra, fiziksel sınırları veya konumları tanımlamanız gerekiyorsa, sağ tıklama menüsünde bulunan kutu veya daire gibi öğeleri kullanabilirsiniz. Ayrıca, laboratuvarlarımızda isim veya IP adreslerini tanımlamak istediğimizde faydalı olan metin ekleyebilirsiniz.
|
||||
|
||||
Ben de aşağıdaki gibi bir laboratuvar oluşturdum.
|
||||
|
||||
![](Images/Day26_Networking7.png)
|
||||
|
||||
Yukarıdaki laboratuvarın tamamen kapalı olduğunu fark edeceksiniz. Laboratuvarı başlatmak için tümünü seçip sağ tıklayarak "seçilenleri başlat" seçeneğini seçebilirsiniz.
|
||||
|
||||
![](Images/Day26_Networking8.png)
|
||||
|
||||
Laboratuvarımız çalışmaya başladığında, her cihazın konsoluna erişebileceğiz ve bu aşamada herhangi bir yapılandırmalarının olmadığını göreceğiz. Her düğüme kendi terminalinde bir yapılandırma ekleyerek veya mevcut bir yapılandırmayı kopyalayarak yapılandırma ekleyebilirsiniz.
|
||||
|
||||
Referans olarak, kendi yapılandırmamı Networking klasöründe bir dosya olarak paylaşacağım.
|
||||
|
||||
| Node | Configuration |
|
||||
| ------- | --------------------- |
|
||||
| Router | [R1](Networking/R1) |
|
||||
| Switch1 | [SW1](Networking/SW1) |
|
||||
| Switch2 | [SW2](Networking/SW2) |
|
||||
| Switch3 | [SW3](Networking/SW3) |
|
||||
| Switch4 | [SW4](Networking/SW4) |
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Free Course: Introduction to EVE-NG](https://www.youtube.com/watch?v=g6B0f_E0NMg)
|
||||
- [EVE-NG - Creating your first lab](https://www.youtube.com/watch?v=9dPWARirtK8)
|
||||
- [3 Necessary Skills for Network Automation](https://www.youtube.com/watch?v=KhiJ7Fu9kKA&list=WL&index=122&t=89s)
|
||||
- [Computer Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
- [Practical Networking](http://www.practicalnetworking.net/)
|
||||
- [Python Network Automation](https://www.youtube.com/watch?v=xKPzLplPECU&list=WL&index=126)
|
||||
|
||||
Çoğu kullanılan örnek bu ücretli kapsamlı kitaptan alınmıştır, ancak Ağ Otomasyonunu anlamaya yardımcı olmak için bazı senaryoları kullanıyorum.
|
||||
|
||||
- [Hands-On Enterprise Automation with Python (Book)](https://www.packtpub.com/product/hands-on-enterprise-automation-with-python/9781788998512)
|
||||
|
||||
Gorusmek Uzere [Gun 27](day27.md).
|
129
2022/tr/Days/day27.md
Normal file
129
2022/tr/Days/day27.md
Normal file
@ -0,0 +1,129 @@
|
||||
## Python ve Ağlarla Calısma
|
||||
|
||||
Ağ Temelleri'nin bu son bölümünde, [26.Gun](day26.md)'de oluşturduğumuz laboratuvar ortamımızı kullanarak bazı otomasyon görevlerini ve araçlarını ele alacağız.
|
||||
|
||||
Ağ Temelleri'nin bu son bölümünde, [18.Gun](day18.md)'de oluşturduğumuz laboratuvar ortamımızı kullanarak bazı otomasyon görevlerini ve araçlarını ele alacağız.
|
||||
|
||||
## Sanal ortamımıza erişim
|
||||
|
||||
Anahtarlarımızla etkileşimde bulunmak için, EVE-NG ağı içinde bir iş istasyonuna ihtiyacımız var veya Python yüklü bir Linux kutusu dağıtabilir ve otomasyonunuzu orada gerçekleştirebilirsiniz ([EVE-NG içinde Linux yapılandırması için kaynak](https://www.youtube.com/watch?v=3Qstk3zngrY)) veya benim yaptığım gibi istasyonunuzdan erişim sağlamak için bir bulut tanımlayabilirsiniz.
|
||||
|
||||
![](Images/Day27_Networking3.png)
|
||||
|
||||
Bunu yapmak için, çizim üzerinde sağ tıklayarak ağı seçip ardından "Yönetim (Cloud0)" seçeneğini seçtik, bu ev ağımızla bir köprü görevi görecektir.
|
||||
|
||||
![](Images/Day27_Networking4.png)
|
||||
|
||||
Ancak, bu ağ içinde hiçbir şeyimiz yok, bu yüzden yeni ağdan her bir cihaza bağlantılar eklememiz gerekiyor. (Ağ bilgim daha fazla dikkat gerektiriyor ve bunun için sadece üst düzey yönlendiriciye bir sonraki adımda ve ardından bu tek kablolama üzerinden geri kalan ağa bağlantı olacağını düşünüyorum...).
|
||||
|
||||
Ardından, her bir cihaza giriş yaparak buluta giren uygun arayüzler için aşağıdaki komutları çalıştırdım.
|
||||
|
||||
```
|
||||
enable
|
||||
config t
|
||||
int gi0/0
|
||||
IP add DHCP
|
||||
no sh
|
||||
exit
|
||||
exit
|
||||
sh ip int br
|
||||
```
|
||||
|
||||
Son adım bize ev networkumuzun DHCP adresini verir. Cihazımın network listesi aşağıdaki gibi:
|
||||
|
||||
| Node | IP Address | Home Network IP |
|
||||
| ------- | ------------ | --------------- |
|
||||
| Router | 10.10.88.110 | 192.168.169.115 |
|
||||
| Switch1 | 10.10.88.111 | 192.168.169.178 |
|
||||
| Switch2 | 10.10.88.112 | 192.168.169.193 |
|
||||
| Switch3 | 10.10.88.113 | 192.168.169.125 |
|
||||
| Switch4 | 10.10.88.114 | 192.168.169.197 |
|
||||
|
||||
### Bir network cihazına SSH ile erişmek
|
||||
|
||||
Yukarıdakileri uyguladıktan sonra, şimdi çalışma istasyonumuzu kullanarak ev ağımızdaki cihazlara bağlanabiliriz. Ben Putty kullanıyorum, ancak git bash gibi diğer terminal erişimlerine de sahibim, bu sayede cihazlarımıza SSH ile erişme yeteneğine sahibim.
|
||||
|
||||
Aşağıda, yönlendirici cihazımıza (R1) bir SSH bağlantısı olduğunu görebilirsiniz.
|
||||
|
||||
![](Images/Day27_Networking5.png)
|
||||
|
||||
### Cihazlarımızdan bilgi toplamak için Python kullanma
|
||||
|
||||
Python'u nasıl kullanabileceğimize dair ilk örnek, tüm cihazlarımızdan bilgi toplamak ve özellikle her birine bağlanıp arayüz yapılandırması ve ayarlarını sağlayan basit bir komutu çalıştırmak istememdir. Bu script'i [netmiko_con_multi.py](Networking/netmiko_con_multi.py) olarak burada depoladım.
|
||||
|
||||
Bu script'i çalıştırdığımda, tüm cihazlarım üzerindeki her bir portun yapılandırmasını görebiliyorum.
|
||||
|
||||
![](Images/Day27_Networking6.png)
|
||||
|
||||
Bu, farklı birçok cihazınız varsa faydalı olabilir. Merkezi olarak kontrol edebileceğiniz ve tüm yapılandırmaları tek bir yerde hızlıca anlayabileceğiniz bir script oluşturabilirsiniz.
|
||||
|
||||
### Cihazlarımızı yapılandırmak için Python kullanma
|
||||
|
||||
Yukarıdaki bilgiler faydalıdır, ancak cihazlarımızı yapılandırmak için Python kullanmanın ne gibi avantajları olduğunu düşünelim. Senaryomuzda `SW1` ve `SW2` arasında bir trunk portu olduğunu varsayalım. Hayal edin, bu yapılandırmayı yapmak istediğimiz birçok aynı anahtardan geçmesi gerekiyorsa ve her anahtara manuel olarak bağlanmak zorunda kalmadan bu yapılandırmayı yapmak isteseydik ne olurdu?
|
||||
|
||||
Bu işlemi gerçekleştirmek için [netmiko_sendchange.py](Networking/netmiko_sendchange.py) dosyasını kullanabiliriz. Bu, SSH aracılığıyla bağlantı kuracak ve bu değişikliği `SW1`'e uygulayacak ve aynı zamanda `SW2`'ye de yansıtacaktır.
|
||||
|
||||
![](Images/Day27_Networking7.png)
|
||||
|
||||
Şimdi kodu inceleyenler, `sending configuration to device` (yapılandırmayı cihaza gönderme) mesajının göründüğünü fark edecekler, ancak bunun gerçekleştiğine dair bir onay olmadığını görecektir. Bu durumu kontrol etmek ve anahtarımızda bu doğrulamayı yapmak için scriptimize ekstra kod ekleyebiliriz veya daha önceki scriptimizi buna göre düzenleyebiliriz. Bunun için [netmiko_con_multi_vlan.py](Networking/netmiko_con_multi_vlan.py) scriptini kullanabilirsiniz.
|
||||
|
||||
![](Images/Day27_Networking8.png)
|
||||
|
||||
### Cihaz Konfigürasyonlarının Yedeklenmesi
|
||||
|
||||
Başka bir kullanım senaryosu, ağ yapılandırmalarımızı yakalamak ve bunların yedeklendiğinden emin olmaktır. Ancak yine de ağımızdaki her cihaza bağlanmak istemiyoruz, bu nedenle [backup.txt](Networking/backup.txt) kullanarak bunu da otomatikleştirebiliriz. Ayrıca yedekleme yapmak istediğiniz IP adreslerini içeren [backup.txt](Networking/backup.txt) dosyasını doldurmanız gerekecektir.
|
||||
|
||||
Komut dosyanızı çalıştırın ve aşağıdaki gibi bir çıktı görmelisiniz.
|
||||
|
||||
![](Images/Day27_Networking9.png)
|
||||
|
||||
Yedek dosyaları.
|
||||
|
||||
![](Images/Day27_Networking10.png)
|
||||
|
||||
### Paramiko
|
||||
|
||||
Paramiko, SSH için yaygın olarak kullanılan bir Python modülüdür. Resmi GitHub bağlantısında daha fazla bilgi bulabilirsiniz [burdan](https://github.com/paramiko/paramiko).
|
||||
|
||||
Bu modülü `pip install paramiko` komutunu kullanarak kurabilirsiniz.
|
||||
|
||||
![](Images/Day27_Networking1.png)
|
||||
|
||||
Kurulumu doğrulamak için Python shelline girin ve paramiko modülünü içe aktarın.
|
||||
|
||||
![](Images/Day27_Networking2.png)
|
||||
|
||||
### Netmiko
|
||||
|
||||
Netmiko modülü, paramiko genelinde SSH bağlantılarını yönetmek için daha geniş bir araç olan paramiko'ya özgü bir ağ cihazlarına yöneliktir.
|
||||
|
||||
Yukarıda kullandığımız Netmiko, paramiko ile birlikte `pip install netmiko` komutunu kullanarak yüklenebilir.
|
||||
|
||||
Netmiko, birçok sağlayıcı ve ağ cihazını desteklemektedir. Desteklenen cihazların bir listesini [GitHub Sayfası](https://github.com/ktbyers/netmiko#supports) üzerinde bulabilirsiniz.
|
||||
|
||||
### Diğer Modüller
|
||||
|
||||
Ağ otomasyonuyla ilgili olarak henüz fırsat bulamadığımız bazı diğer modüllerin de bahsedilmesi önemlidir.
|
||||
|
||||
`netaddr` , IP adreslerini çalışmak ve manipüle etmek için kullanılır. Yine, kurulumu `pip install netaddr` komutuyla kolayca yapılabilir.
|
||||
|
||||
Anahtarlamalarınızın büyük bir bölümünü bir Excel elektronik tablosunda depolamak isteyebilirsiniz. `xlrd`, scriptlerimizin Excel kitabını okumasına ve satır ve sütunları bir diziye dönüştürmesine olanak tanır. Modülü yüklemek için `pip install xlrd` komutunu kullanabilirsiniz.
|
||||
|
||||
Ağ otomasyonunun kullanılabileceği diğer bazı kullanım senaryolarını ve görmek fırsatı bulamadığımız örnekleri [burada](https://github.com/ktbyers/pynet/tree/master/presentations/dfwcug/examples) bulabilirsiniz.
|
||||
|
||||
#90DaysOfDevOps'un Network bölümünü burada tamamlıyoruz. Network, çok geniş bir alan olduğundan, bu notlar ve paylaşılan kaynaklar bilgi birikiminizi oluşturmak için faydalı olacağını umuyorum.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Free Course: Introduction to EVE-NG](https://www.youtube.com/watch?v=g6B0f_E0NMg)
|
||||
- [EVE-NG - Creating your first lab](https://www.youtube.com/watch?v=9dPWARirtK8)
|
||||
- [3 Necessary Skills for Network Automation](https://www.youtube.com/watch?v=KhiJ7Fu9kKA&list=WL&index=122&t=89s)
|
||||
- [Computer Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
||||
- [Practical Networking](http://www.practicalnetworking.net/)
|
||||
- [Python Network Automation](https://www.youtube.com/watch?v=xKPzLplPECU&list=WL&index=126)
|
||||
|
||||
Burada kullanılan örneklerin çoğu ücretsiz olmayan bu kapsamlı kitaptan alınmıştır, ancak bazı senaryolar kullanılmıştır.
|
||||
|
||||
- [Hands-On Enterprise Automation with Python (Book)](https://www.packtpub.com/product/hands-on-enterprise-automation-with-python/9781788998512)
|
||||
|
||||
Görüşmek üzere, [28.Gun](day28.md)'de buluşacağız, burada temel bilgilerin iyi bir anlayışını elde etmek için bulut bilişimini göreceğiz.
|
95
2022/tr/Days/day28.md
Normal file
95
2022/tr/Days/day28.md
Normal file
@ -0,0 +1,95 @@
|
||||
## DevOps & The Cloud
|
||||
|
||||
Bulut bilişim ve sunulan hizmetler, etik ve DevOps süreçleriyle çok iyi uyum sağlar. Bulut bilişimi, teknoloji ve hizmetler sunarken, daha önce birçok kez bahsettiğimiz gibi, DevOps süreci ve sürecin iyileştirilmesiyle ilgilenir.
|
||||
|
||||
Ancak başlangıçta bulut öğrenme yolculuğu dik bir öğrenme eğrisi gerektirir ve tüm bileşenleri veya doğru fiyat noktası için en iyi hizmeti seçmeyi anlamak ve anlamak önemlidir, bu da kafa karıştırıcı olabilir.
|
||||
|
||||
![](Images/Day28_Cloud1.png)
|
||||
|
||||
Halka açık bulut, bir DevOps zihniyeti gerektirir mi? Buradaki cevabım hayır, ancak gerçekten bulut bilişimden faydalanmak ve insanların büyük bulut faturalarından kaçınmasını sağlamak için Bulut Bilişim ve DevOps'u birlikte düşünmek önemlidir.
|
||||
|
||||
40.000 fitlik bir bakış açısından halka açık bulutun ne demek olduğuna baktığımızda, bazı sorumlulukların yönetilen bir hizmete aktarılmasıyla, sizin ve ekibinizin daha önemli konulara odaklanmasına olanak tanır, bu da uygulama ve nihai kullanıcılar olmalıdır. Sonuçta, halka açık bulut sadece başka bir kişinin bilgisayarından ibarettir.
|
||||
|
||||
![](Images/Day28_Cloud2.png)
|
||||
|
||||
Bu ilk bölümde, Public Bulut'un ne olduğunu ve genel olarak Public Bulut'a ilişkin yapı taşlarının biraz daha açıklamasına girmek istiyorum.
|
||||
|
||||
### SaaS
|
||||
|
||||
İlk olarak ele alınacak alan, yerinde çalışan bir hizmetin yönetim yükünün neredeyse tamamını ortadan kaldıran Yazılım olarak Hizmet (SaaS) alanıdır. E-posta için Microsoft Exchange'i düşünelim: Eskiden merkezi bir veri merkezinde veya belki de merdiven altındaki bir dolapta bulunan fiziksel bir sunucuydu. Bu sunucuyu beslemek ve sulamak gerekiyordu. Yani sunucuyu güncel tutmanız, sunucu donanımını satın almanız, muhtemelen işletim sistemini yüklemeniz, gerekli uygulamaları yüklemeniz ve ardından güncellemeleri takip etmeniz gerekiyordu. Bir şeyler ters giderse sorunları çözmeniz ve işleri tekrar çalışır hale getirmeniz gerekebilirdi.
|
||||
|
||||
ve verilerin yedeklenmesini de sağlamanız gerekecekti, ancak SaaS ile bu çoğunlukla değişmez.
|
||||
|
||||
SaaS ve özellikle Microsoft 365 (Exchange'i bahsettiğim için) yaptığı şey, bu yönetim yükünü ortadan kaldırmak ve e-posta aracılığıyla Exchange'in işlevselliğini sağlayan, aynı zamanda kullanıcıya genel olarak büyük bir deneyim sunan üretkenlik (Office 365) ve depolama (OneDrive) gibi diğer birçok seçeneği sunan bir hizmet sağlamaktır.
|
||||
|
||||
Salesforce, SAP, Oracle, Google ve Apple gibi diğer SaaS uygulamaları da geniş çapta kullanılmaktadır. Bunlar, yığını daha fazla yönetme yükünden kurtulmayı sağlar.
|
||||
|
||||
SaaS tabanlı uygulamalarla ilgili DevOps ve bir hikaye olduğundan eminim, ancak bunun ne olabileceğini anlamakta zorlanıyorum. Azure DevOps'un Microsoft 365 ile bazı büyük entegrasyonları olduğunu biliyorum, bu konuda bir göz atabilir ve bilgi edinebilirsiniz.
|
||||
|
||||
![](Images/Day28_Cloud3.png)
|
||||
|
||||
### Public Cloud
|
||||
|
||||
Ardından, public bulut hizmetiyle ilgili olarak, insanların bunu çeşitli farklı şekillerde düşünebileceklerini söyleyebiliriz. Bazıları bunu yalnızca Microsoft Azure, Google Cloud Platform ve AWS gibi büyük bulut sağlayıcıları olarak görebilir.
|
||||
|
||||
![](Images/Day28_Cloud4.png)
|
||||
|
||||
Bazıları, public bulutu, hiper ölçeklendiricileri yanı sıra dünya çapındaki binlerce HSP'yi de içeren daha geniş bir teklif olarak görür. Bu yazıda, hiper ölçeklendiricileri ve HSP'leri içeren genel bulutu ele alacağız, ancak daha sonra, temel bilgileri edinmek için bir veya daha fazla hiper ölçeklendiriciye daha spesifik olarak odaklanacağız.
|
||||
|
||||
![](Images/Day28_Cloud5.png)
|
||||
_Bu listede daha fazla şirket olabilir, sadece çalıştığım ve bildiğim yerel, bölgesel, telekomünikasyon ve küresel markaları seçiyorum._
|
||||
|
||||
SaaS bölümünde, bulutun bir sistemin bazı parçalarını yönetme sorumluluğunu veya yükünü ortadan kaldırdığını söyledik. SaaS hakkında konuşursak, birçok soyutlama katmanını ortadan kaldırdığını görürüz, yani fiziksel sistemleri, ağı, depolamayı, işletim sistemini ve hatta belirli bir noktaya kadar uygulamayı ortadan kaldırır. Bulutla ilgili olarak, gereksinimlerimize bağlı olarak ortadan kaldırabileceğimiz veya koruyabileceğimiz çeşitli soyutlama seviyeleri bulunmaktadır.
|
||||
|
||||
SaaS'ı zaten bahsetmiştik, ancak genel bulutla ilgili olarak bahsetmemiz gereken en az iki katman daha bulunmaktadır.
|
||||
|
||||
Altyapı olarak hizmet: Bu katmanı bir sanal makine gibi düşünebilirsiniz, ancak yerinde sistemlerde fiziksel katmanla ilgilenmeniz gerekirken, bulutta bu sorumluluk bulut sağlayıcısının sorumluluğundadır ve siz istediğiniz işletim sistemi, veri ve uygulamaları yönetir ve yönetirsiniz.
|
||||
|
||||
Platform olarak hizmet: Bu katman, sorumlulukları ortadan kaldırmaya devam eder ve aslında sizin verileri ve uygulamayı kontrol etmenizi sağlar, ancak altta yatan donanım veya işletim sisteminden endişelenmenize gerek kalmaz.
|
||||
|
||||
aaS tekliflerinin yanı sıra birçok başka seçenek daha bulunmaktadır. StaaS (Depolama olarak Hizmet) gibi altta yatan donanımla ilgilenmenize gerek olmayan depolama hizmetleri sunan teklifler olabilir. Containers as a Service (CaaS) olarak adlandırılan bir hizmet hakkında duymuş olabilirsiniz, bu konuya daha sonra değineceğiz. Bir sonraki 7 gün boyunca ele alacağımız bir diğer aaS ise Functions as a Service (FaaS) olacak. FaaS, sürekli çalışan bir sistem yerine bir işlevin istediğiniz zaman ve şekilde çalışmasını istediğiniz bir hizmet sunabilir.
|
||||
|
||||
Genel bulut, geçmek istediğiniz kontrol soyutlama katmanlarını sağlayarak istediğiniz şekilde kullanmanıza olanak tanır.
|
||||
|
||||
![](Images/Day28_Cloud6.png)
|
||||
|
||||
### Private Cloud
|
||||
|
||||
Kendi veri merkezinize sahip olmak geçmişte kalmış bir şey değildir. Birçok şirket, OPEX modelini yönetmekte zorlandığı ve sadece genel bulutu kullanmayı öğrenmek konusunda yetkinlik setlerine sahip olmadığı için özel bulut modellerine yeniden ilgi göstermektedir.
|
||||
|
||||
Burada dikkate alınması gereken önemli bir nokta, genel bulutun artık sizin sorumluluğunuzda olacağı ve kendi tesislerinizde bulunacağıdır.
|
||||
|
||||
Bu alanda ilginç gelişmeler yaşanmaktadır. Sadece sanallaştırma dönemini ve yerel altyapı ortamlarını domine eden VMware ile değil, aynı zamanda hiper ölçeklendiricilerin genel bulutlarının yerel bir sürümünü sunanlarla da ilgilidir.
|
||||
|
||||
![](Images/Day28_Cloud7.png)
|
||||
|
||||
### Hibrit Cloud
|
||||
|
||||
Genel ve özel buluta yapılan atıflarla, her iki ortamı da kapsayarak ikisi arasında esneklik sağlayabiliriz. Belki genel bulutta sunulan hizmetlerden yararlanırken aynı zamanda yerel tesislerde bulunmanın özelliklerinden ve işlevselliğinden de yararlanabiliriz veya belirli bir düzenleme, verilerinizi yerel olarak depolamanızı gerektirebilir.
|
||||
|
||||
![](Images/Day28_Cloud8.png)
|
||||
|
||||
Tüm bunları bir araya getirdiğimizde, iş yüklerimizi depolamak ve çalıştırmak için birçok seçeneğimiz vardır.
|
||||
|
||||
![](Images/Day28_Cloud9.png)
|
||||
|
||||
Belirli bir hiper ölçeklendiriciye girmeden önce, Twitter'ın gücüne sordum: Nereye gitmeliyiz?
|
||||
|
||||
![](Images/Day28_Cloud10.png)
|
||||
|
||||
[Twitter anketine link](https://twitter.com/MichaelCade1/status/1486814904510259208?s=20&t=x2n6QhyOXSUs7Pq0itdIIQ)
|
||||
|
||||
Hangi hiper ölçeklendiricinin en yüksek yüzdeye sahip olduğuna bağlı olarak, o hiper ölçeklendiricinin sunduğu tekliflere daha derinlemesine bir dalış yapacağız. Ancak önemli bir nokta, tüm bu hizmetlerin oldukça benzer olduğudur. Bu yüzden biriyle başlamayı öneririm çünkü birinin temel bilgisini edinerek sanal makine oluşturma, ağ yapılandırması vb. konularında diğer hiper ölçeklendiricilere hızla adapte olabileceğimi gördüm.
|
||||
|
||||
Her durumda, üç hiper ölçeklendiriciyi kapsayan **ÜCRETSİZ** kaynaklar paylaşacağım.
|
||||
|
||||
Ayrıca, diğer bölümlerde olduğu gibi ilerledikçe bir senaryo oluşturacağımızı da belirtmek isterim.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
|
||||
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
|
||||
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
|
||||
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
|
||||
|
||||
Gorusmek Uzere [Gun 29](day29.md).
|
132
2022/tr/Days/day29.md
Normal file
132
2022/tr/Days/day29.md
Normal file
@ -0,0 +1,132 @@
|
||||
## Microsoft Azure Temelleri
|
||||
|
||||
Başlamadan önce, Twitter anketinin galibi Microsoft Azure oldu, bu yüzden sayfanın başlığı da buna dayanıyor. 24 saat boyunca sonuçları görmek çok heyecan vericiydi.
|
||||
|
||||
![](Images/Day29_Cloud1.png)
|
||||
|
||||
Microsoft Azure'da mevcut olan hizmetler hakkında daha iyi bir anlayış ve güncelleme sağlayacağını düşünüyorum, günlük işlerimde genellikle Amazon AWS'e yöneliyorum. Ancak, üç ana bulut sağlayıcısı için hazırladığım kaynakları da paylaştım.
|
||||
|
||||
Biliyorum ki, bu üçü ile sınırlı değil, anket sadece bu üçünü içeriyordu ve özellikle Oracle Cloud hakkında bazı yorumlar yapıldı. Kullandığınız diğer bulut sağlayıcıları hakkında daha fazla bilgi almak isterim, yorum bırakabilirsiniz.
|
||||
|
||||
### Temel Bilgiler
|
||||
|
||||
- Public bulut hizmetleri sunar.
|
||||
- Coğrafi olarak dağılmıştır (dünya genelinde 60'tan fazla bölge).
|
||||
- İnternet üzerinden ve/veya özel bağlantılarla erişilebilir.
|
||||
- Çok kiracılı model.
|
||||
- Tüketime dayalı faturalama - İlerledikçe öde (Pay as you go) | Büyüdükçe öde (Pay as you grow).
|
||||
- Farklı gereksinimlere yönelik birçok hizmet türü ve teklifleri bulunur.
|
||||
|
||||
[Microsoft Azure Global Infrastructure](https://infrastructuremap.microsoft.com/explore)
|
||||
|
||||
SaaS ve hibrit bulut konularını zaten konuştuk, ancak burada bu konuları ele almayacağız.
|
||||
|
||||
Başlamak için aşağıdaki bağlantıya tıklayarak [Microsoft Azure Ücretsiz Hesap](https://azure.microsoft.com/en-gb/free/) oluşturabilirsiniz.
|
||||
|
||||
### Bolgeler
|
||||
|
||||
Yukarıda etkileşimli haritaya bir bağlantı verdim, ancak aşağıdaki resimde Microsoft Azure platformunda dünya genelinde sunulan bölgelerin genişliğini görebilirsiniz.
|
||||
|
||||
![](Images/Day29_Cloud2.png)
|
||||
|
||||
_Resim, [Microsoft Docs - 01/05/2021](https://docs.microsoft.com/en-us/azure/networking/microsoft-global-network) adresinden alınmıştır._
|
||||
|
||||
Ayrıca, "egemen" bulutlar da göreceksiniz, yani diğer bölgelerle bağlantılı değiller veya onlarla iletişim kuramazlar. Örneğin, bu tür bulutlar `AzureUSGovernment`, `AzureChinaCloud` gibi hükümetlerle ilişkilendirilebilir.
|
||||
|
||||
Microsoft Azure içinde hizmetlerimizi dağıtırken neredeyse her şey için bir bölge seçmemiz gerekecek. Ancak, tüm hizmetlerin her bölgede mevcut olmadığını unutmamak önemlidir. Bu yazıyı yazdığımız sırada [Bölgeye Göre Mevcut Ürünler](https://azure.microsoft.com/en-us/global-infrastructure/services/?products=all) bağlantısından West Central US bölgesinde Azure Databricks kullanamadığımızı görebilirsiniz.
|
||||
|
||||
Yukarıda da belirtildiği gibi, Azure Bot Services, Bing Speech, Azure Virtual Desktop, Static Web Apps gibi belirli hizmetler bölgeye bağlıdır.
|
||||
|
||||
Arka planda, bir bölge birden fazla veri merkezinden oluşabilir. Bunlara "Kullanılabilirlik Bölgeleri" denir.
|
||||
|
||||
Aşağıdaki resim, Microsoft'un resmi belgelerinden alınan bir örnekte bir bölgenin nasıl bir "Kullanılabilirlik Bölgesi"nden oluştuğunu açıklar. Ancak, her bölgenin birden fazla Kullanılabilirlik Bölgesi içermediğini unutmayın.
|
||||
|
||||
![](Images/Day29_Cloud3.png)
|
||||
|
||||
Microsoft'un belgelendirmesi oldukça iyidir ve [Bölge ve Kullanılabilirlik Bölgeleri](https://docs.microsoft.com/en-us/azure/availability-zones/az-overview)hakkında çok daha fazla bilgi edinebilirsiniz.
|
||||
|
||||
### Abonelikler
|
||||
|
||||
Microsoft Azure'ın bir tüketim modeli bulutu olduğunu ve tüm büyük bulut sağlayıcılarının bu modele uyduğunu hatırlayın.
|
||||
|
||||
Bir şirketiniz varsa, özel Azure hizmetlerine izin vermek için Microsoft ile bir kurumsal anlaşma yapmak isteyebilirsiniz.
|
||||
|
||||
Eğer benim gibi eğitim için Microsoft Azure kullanıyorsanız, başka seçeneklerimiz var.
|
||||
|
||||
Azure'da harcamak için genellikle belli bir süre için size ücretsiz bulut kredileri veren [Microsoft Azure Ücretsiz Hesap](https://azure.microsoft.com/en-gb/free/) seçeneğimiz var.
|
||||
|
||||
Ayrıca, her ay ücretsiz krediler sunan Visual Studio aboneliği seçeneği de mevcut. Bu aboneliğe, yıllık Visual Studio aboneliğinizle birlikte gelen kredilerle erişebilirsiniz. Bu, yıllar önce MSDN olarak bilinen bir uygulamaydı. [Visual Studio](https://azure.microsoft.com/en-us/pricing/member-offers/credit-for-visual-studio-subscribers/)
|
||||
|
||||
Son olarak, kredi kartıyla ödeme yapma modeli olan ["pay-as-you-go"](https://azure.microsoft.com/en-us/pricing/purchase-options/pay-as-you-go/) seçeneği bulunmaktadır.
|
||||
|
||||
Bir abonelik, potansiyel olarak farklı abonelikler arasında bir sınırlama olarak görülebilir ve farklı maliyet merkezleri veya tamamen farklı ortamlar arasında ayrım yapabilir. Kaynakların oluşturulduğu yer olan bir abonelik bulunmaktadır.
|
||||
|
||||
### Yönetim Grupları
|
||||
|
||||
Yönetim grupları, Azure Active Directory (AD) veya kiracınızın ortamı üzerinde kontrolü ayırma yeteneği sağlar. Yönetim grupları, politikaları, rol tabanlı erişim kontrolünü (RBAC) ve bütçeleri kontrol etmemizi sağlar.
|
||||
|
||||
Abonelikler, bu yönetim gruplarına aittir, bu nedenle Azure AD kiracınızda birçok aboneliğiniz olabilir. Bu aboneliklerde de politikaları, RBAC'yi ve bütçeleri kontrol edebilirsiniz.
|
||||
|
||||
### Kaynak Yöneticisi ve Kaynak Grupları
|
||||
|
||||
#### Azure Kaynak Yöneticisi
|
||||
|
||||
- Kaynak sağlayıcılarına dayanan JSON tabanlı bir API.
|
||||
- Kaynaklar bir kaynak grubuna aittir ve ortak bir yaşam döngüsünü paylaşırlar.
|
||||
- Paralellik
|
||||
- JSON tabanlı dağıtımlar, deklaratiftir, idempotenttir ve kaynaklar arasındaki bağımlılıkları anlamak için kullanılır.
|
||||
|
||||
#### Kaynak Grupları
|
||||
|
||||
- Her Azure Kaynak Yöneticisi kaynağı yalnızca bir kaynak grubunda bulunur.
|
||||
- Kaynak grupları, kaynakların dışında da kaynaklar içerebilecek bir bölgede oluşturulur.
|
||||
- Kaynaklar kaynak grupları arasında taşınabilir.
|
||||
- Kaynak grupları diğer kaynak gruplarından izole edilmez, kaynak grupları arasında iletişim olabilir.
|
||||
- Kaynak grupları aynı zamanda politikaları, RBAC'yi ve bütçeleri kontrol edebilir.
|
||||
|
||||
### Pratiğe Geçelim
|
||||
|
||||
Azure portalına bağlanalım ve mevcut bir **Abonelik** olduğundan emin olalım. Basit bir **Yönetim Grubu** oluşturabiliriz, tercih ettiğimiz **Bölge**de yeni bir **Kaynak Grubu** oluşturabiliriz.
|
||||
|
||||
İlk kez [Azure portal](https://portal.azure.com/#home)ına giriş yaptığımızda, üst kısımda kaynaklar, hizmetler ve belgelere arama yapma seçeneğini göreceğiz.
|
||||
|
||||
![](Images/Day29_Cloud4.png)
|
||||
|
||||
Öncelikle aboneliğimize bakalım, burada her ay bana bir miktar ücretsiz kredi veren Visual Studio Professional aboneliği kullanıyorum.
|
||||
|
||||
![](Images/Day29_Cloud5.png)
|
||||
|
||||
Bu abonelikle ne olduğuna ve ne yapabileceğimize dair daha geniş bir görünüm elde edebiliriz. Faturalandırma bilgilerini, sol tarafta IAM (Kimlik ve Erişim Yönetimi) gibi kontrol fonksiyonlarıyla tanımlayabileceğiniz bir kontrol paneli vardır ve daha aşağıda başka kaynaklar bulunur.
|
||||
|
||||
![](Images/Day29_Cloud6.png)
|
||||
|
||||
Bir senaryo düşünelim: Birden fazla aboneliğiniz var ve hepsini tek bir hesap altında yönetmek istiyorsunuz. Bu durumda, sorumluluk gruplarına göre ayrım yapmak için yönetim gruplarını kullanabilirsiniz. Aşağıda, sadece bir kiracın kök grubuyla bir aboneliğin olduğunu görebilirsiniz.
|
||||
|
||||
Önceki resimde de göreceğiniz gibi, yönetim grubu ağacının üst düzeyindeki grup, kiracın kök grubunda kullanılan aynı kimlik bilgisini temsil etmektedir.
|
||||
|
||||
![](Images/Day29_Cloud7.png)
|
||||
|
||||
Aşağıda, kaynaklarımızı bir araya getirerek ve bunları kolayca tek bir yerden yönetebildiğimiz kaynak gruplarını görebilirsiniz. Bazıları başka projeler için oluşturulmuştur.
|
||||
|
||||
![](Images/Day29_Cloud8.png)
|
||||
|
||||
Önümüzdeki günlerde bir kaynak grubu oluşturacağız. Bunun için yukarıdaki resimdeki "oluştur" seçeneğine basarak kolayca yapabiliriz.
|
||||
|
||||
![](Images/Day29_Cloud9.png)
|
||||
|
||||
Doğrulama adımı gerçekleştirilir ve ardından oluşturmadan önce oluşturduğunuzun gözden geçirme şansına sahip olursunuz. Aşağıda "Otomasyon için bir şablon indir" seçeneğini göreceksiniz. Bu, ileride otomatikleştirmek için JSON formatında bir şablon alabileceğimiz anlamına gelir. Bunu daha sonra daha detaylı olarak göreceğiz.
|
||||
|
||||
![](Images/Day29_Cloud10.png)
|
||||
|
||||
"Oluştur" düğmesine basın. Artık kaynak gruplarımızın listesinde "90DaysOfDevOps" adlı grup, önümüzdeki oturumlarda yapacağımız işlemler için hazır durumda olacaktır.
|
||||
|
||||
![](Images/Day29_Cloud11.png)
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
|
||||
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
|
||||
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
|
||||
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
|
||||
|
||||
Gorusmek Uzere [Gun 30](day30.md)
|
167
2022/tr/Days/day30.md
Normal file
167
2022/tr/Days/day30.md
Normal file
@ -0,0 +1,167 @@
|
||||
## Microsoft Azure Güvenlik Modelleri
|
||||
|
||||
Microsoft Azure'ın genel bakışına devam ederken, Azure Security'ye geçelim ve bunun nasıl yardımcı olabileceğini görelim. Genellikle varsayılan roller yeterli olsa da, kimlik doğrulama ve yapılandırmaların birçok farklı alanıyla çalışabiliriz. Microsoft Azure, diğer halka açık bulut sağlayıcılarına kıyasla Active Directory sayesinde oldukça gelişmiş olabilir.
|
||||
|
||||
Bu, Microsoft Azure'ın diğer halka açık bulut sağlayıcılarından farklı çalıştığı bir alandır, Azure'da HER ZAMAN Active Directory bulunur.
|
||||
|
||||
### Directory Hizmetleri
|
||||
|
||||
- Azure Active Directory, Microsoft Azure ve diğer Microsoft bulut hizmetlerinde kullanılan güvenlik prensiplerini barındırır.
|
||||
- Kimlik doğrulama, SAML, WS-Federation, OpenID Connect ve OAuth2 gibi protokoller aracılığıyla gerçekleştirilir.
|
||||
- Sorgular, Microsoft Graph API adlı REST API üzerinden yapılır.
|
||||
- Kiracılar varsayılan olarak tenant.onmicrosoft.com adını taşırken, özel etki alanı adlarına sahip olabilirler.
|
||||
- Abonelikler bir Azure Active Directory kiracısıyla ilişkilidir.
|
||||
|
||||
AWS için karşılaştırma yapacak olursak, benzer hizmet AWS IAM (Identity & Access Management) olacaktır, ancak bu hizmet oldukça farklıdır.
|
||||
|
||||
Azure AD Connect, AD hesaplarını Azure AD'ye replike etme olanağı sağlar. Bu bazen grupları ve nesneleri de içerebilir. Bu işlem granüler ve filtrelenmiş olabilir. Birden fazla orman ve etki alanını destekler.
|
||||
|
||||
Microsoft Azure Active Directory (AD) üzerinde bulutta hesaplar oluşturmak mümkündür, ancak çoğu kuruluş zaten kullanıcılarını yerel Active Directory ortamlarında takip etmektedir.
|
||||
|
||||
Azure AD Connect, yalnızca Windows AD sunucularını değil, aynı zamanda diğer Azure AD, Google ve diğerlerini de görüntüleme imkanı sunar. Bu aynı zamanda Azure B2B olarak adlandırılan, harici kişiler ve kuruluşlarla işbirliği yapabilme yeteneği sağlar.
|
||||
|
||||
Active Directory Domain Services ve Microsoft Azure Active Directory arasındaki kimlik doğrulama seçenekleri, her iki kimliğin de parola karması ile senkronize edildiği durumlarda mümkündür.
|
||||
|
||||
![](Images/Day30_Cloud1.png)
|
||||
|
||||
Parolanın hash değeri iletimi isteğe bağlıdır; bunun kullanılmaması durumunda geçiş yetkilendirmesi gereklidir.
|
||||
|
||||
Aşağıda bağlantılı bir video yer almaktadır ve bu video Azure Active Directory'deki geçiş yetkilendirmesi ile kullanıcı oturumu açma konusunda ayrıntılara girer.
|
||||
|
||||
[Azure Active Directory Geçiş Yetkilendirmesiyle Kullanıcı Oturumu Açma](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta)
|
||||
|
||||
![](Images/Day30_Cloud2.png)
|
||||
|
||||
### Federasyon
|
||||
|
||||
Microsoft 365, Microsoft Dynamics ve yerel Active Directory kullanarak Azure AD'yi federasyona entegre etmek oldukça kolay ve anlaşılır. Bununla birlikte, Microsoft ekosistemi dışındaki diğer hizmetleri kullanmak da mümkündür.
|
||||
|
||||
Azure AD, Microsoft dışındaki bu uygulamalar ve diğer dizin hizmetleri için federasyon aracısı olarak görev yapabilir.
|
||||
|
||||
Bu, Azure Portal'da Kurumsal Uygulamalar olarak görünecek ve birçok seçenek bulunacaktır.
|
||||
|
||||
![](Images/Day30_Cloud3.png)
|
||||
|
||||
Aşağı kaydırarak, kurumsal uygulamalar sayfasında birçok önemli uygulamanın uzun bir listesini bulabilirsiniz.
|
||||
|
||||
![](Images/Day30_Cloud4.png)
|
||||
|
||||
Bu seçenek ayrıca kendi entegrasyonunuzu getirmenize, yani geliştirdiğiniz veya galeri dışı bir uygulama entegrasyonuna olanak tanır.
|
||||
|
||||
Bunu daha önce incelememiştim, ancak diğer bulut sağlayıcılarına ve yeteneklere kıyasla oldukça kapsamlı bir özellik seti olduğunu görebiliyorum.
|
||||
|
||||
### Rol tabanlı erişim kontrolü
|
||||
|
||||
[Gun 29](day29.md) ele aldığımız kapsamları burada tartıştık. Rol tabanlı erişim kontrolümüzü aşağıdaki kapsamlardan birine göre ayarlayabiliriz:
|
||||
|
||||
- Abonelikler
|
||||
- Yönetim Grupları
|
||||
- Kaynak Grupları
|
||||
- Kaynaklar
|
||||
|
||||
Roller üçe ayrılabilir ve Microsoft Azure'da birçok yerleşik rol bulunur. Bu üç rol şunlardır:
|
||||
|
||||
- Sahip (Owner)
|
||||
- Katkıda Bulunan (Contributor)
|
||||
- Okuyucu (Reader)
|
||||
|
||||
Sahip ve Katkıda Bulunan rolleri kapsam açısından çok benzerdir. Bununla birlikte, sahip izinleri değiştirebilir.
|
||||
|
||||
Diğer roller belirli Azure Kaynak türleri için özeldir ve özel roller de bulunmaktadır.
|
||||
|
||||
Kullanıcılara izin atama konusunda gruplara odaklanmalıyız.
|
||||
|
||||
İzinler miras alınır.
|
||||
|
||||
Geri dönüp oluşturduğumuz "90DaysOfDevOps" Kaynak Grubuna bakarsak ve içindeki Erişim Kontrolü (IAM) bölümünü kontrol edersek, bir katkıda bulunanlar listesi ve bir Kullanıcı Erişim Yöneticisi (Client Access Administrator) olduğunu görebiliriz ve bir sahipler listesi bulunur (Ancak bunu gösteremem).
|
||||
|
||||
![](Images/Day30_Cloud5.png)
|
||||
|
||||
Atandığımız rollerin BuiltInRoles olup olmadığını ve hangi kategoriye ait olduklarını buradan kontrol edebiliriz.
|
||||
|
||||
![](Images/Day30_Cloud6.png)
|
||||
|
||||
Ayrıca, bir hesabı bu kaynak grubuna karşı kontrol etmek ve erişimi vereceğimiz hesabın doğru izinlere sahip olduğundan emin olmak veya bir kullanıcının fazla erişime sahip olup olmadığını kontrol etmek istiyorsak buradan erişimi kontrol edebiliriz.
|
||||
|
||||
![](Images/Day30_Cloud7.png)
|
||||
|
||||
### Microsoft Defender for Cloud
|
||||
|
||||
- Microsoft Defender for Cloud (önceki adıyla Azure Security Center), Azure ortamının güvenliği hakkında bilgi sağlar.
|
||||
|
||||
- Tüm Azure ve Azure dışı kaynakların (Azure Arc üzerinden) genel güvenlik durumunun görünürlüğü ve güvenliğin güçlendirilmesi konusunda rehberlik sağlayan tek bir kontrol paneli sunar.
|
||||
|
||||
- Ücretsiz seviye, sürekli değerlendirme ve güvenlik önerilerini içerir.
|
||||
|
||||
- Korumalı kaynak türleri için ödeme planları mevcuttur (Örneğin, Sunucular, AppService, SQL, Depolama, Konteynerler, KeyVault).
|
||||
|
||||
Azure Security Center'ı görüntülemek için başka bir aboneliğe geçtim ve burada birkaç kaynakla birlikte bazı önerilerin tek bir yerde nasıl olduğunu görebilirsiniz.
|
||||
|
||||
![](Images/Day30_Cloud8.png)
|
||||
|
||||
### Azure Policy
|
||||
|
||||
- Azure Policy, örgüt standartlarını uygulamaya ve uygunluğu ölçeklendirmeye yardımcı olan bir Azure hizmetidir.
|
||||
|
||||
- Microsoft Defender for Cloud ile entegre edilmiş olan Azure Policy, uyumsuz kaynakları denetler ve düzeltmeler uygular.
|
||||
|
||||
- Genellikle kaynak tutarlılığı, düzenleyici uyumluluk, güvenlik, maliyet ve yönetim standartlarını düzenlemek için kullanılır.
|
||||
|
||||
- Değerlendirme mantığını depolamak ve bir kaynağın uygun olup olmadığını belirlemek için JSON formatını kullanır. Ayrıca, ihlal durumunda alınması gereken önlemleri (örneğin, Denetim, AuditIfNotExists, Reddetme, Değiştirme, DeployIfNotExists) belirler.
|
||||
|
||||
- Ücretsiz kullanım sağlar. Azure Policy Guest Configuration kullanımı için Azure Arc'a bağlı kaynaklar, sunucu/aylık olarak ücretlendirilir.
|
||||
|
||||
### Hadi başlayalım
|
||||
|
||||
www.90DaysOfDevOps.com alan adını satın aldım ve Azure Active Directory portalına bu alan adını eklemek istiyorum. [Azure Active Directory portalını kullanarak özel bir alan adı](https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/add-custom-domain) ekleyin
|
||||
|
||||
![](Images/Day30_Cloud9.png)
|
||||
|
||||
Bununla birlikte, yeni Active Directory alanımızda yeni bir kullanıcı oluşturmak istiyoruz.
|
||||
|
||||
![](Images/Day30_Cloud10.png)
|
||||
|
||||
Şimdi, tüm yeni 90DaysOfDevOps kullanıcıları için bir grup oluşturmak istiyoruz. Aşağıdaki gibi bir grup oluşturabiliriz. "Dinamik kullanıcı" kullanıyorum, bu da Azure AD'nin kullanıcı hesaplarını sorgulayacağı ve bunları dinamik olarak ekleyeceği anlamına gelir. "Atanan" bölümüne kullanıcıyı manuel olarak gruba ekleyebilirsiniz.
|
||||
|
||||
![](Images/Day30_Cloud11.png)
|
||||
|
||||
Sorguyu oluştururken birçok seçenek vardır, güvenlik etkinliği adını arayabilir ve adın @90DaysOfDevOps.com içermesini sağlayabiliriz.
|
||||
|
||||
![](Images/Day30_Cloud12.png)
|
||||
|
||||
Artık michael.cade@90DaysOfDevOps.com kullanıcı hesabını oluşturduğumuza göre, kuralların çalıştığını doğrulayabiliriz. Karşılaştırma yapmak için başka bir etki alanına bağlı bir hesap ekledik ve bu kural nedeniyle kullanıcımız bu gruba dahil olmayacak.
|
||||
|
||||
![](Images/Day30_Cloud13.png)
|
||||
|
||||
Yeni bir user1@90DaysOfDevOps.com kullanıcısı ekledikten sonra ve gruba bakarsak, tüm üyeleri görebiliriz.
|
||||
|
||||
![](Images/Day30_Cloud14.png)
|
||||
|
||||
Bu gereksinimi 100 kez yapmak istemiyorsak, bunu konsolda yapmak istemeyebiliriz. Büyük miktarda kullanıcı oluşturmak, davet etmek ve silmek için PowerShell'ı veya ölçeklendirilebilir bir otomasyon yaklaşımı elde etmek için PowerShell'ı kullanabiliriz.
|
||||
|
||||
Şimdi kaynak grubumuza gidip 90DaysOfDevOps kaynak grubunda sahibin olmasını istediğimiz grup olarak yeni oluşturduğumuz grubu belirtebiliriz.
|
||||
|
||||
![](Images/Day30_Cloud15.png)
|
||||
|
||||
Aynı şekilde, kaynak grubumuza atamaların erişimini de reddedebiliriz.
|
||||
|
||||
Yeni kullanıcı hesabıyla Azure Portal'a giriş yaptığımızda, yalnızca önceki resimlerde görülen kaynaklara değil, yalnızca 90DaysOfDevOps kaynak grubuna erişimimizin olduğunu görebiliriz.
|
||||
|
||||
![](Images/Day30_Cloud16.png)
|
||||
|
||||
Yukarıdaki bilgiler, kullanıcının Azure portalındaki kaynaklara erişimine sahip olduğu durumda geçerlidir. Ancak, tüm kullanıcıların portali bilmeleri gerekmez. Ancak erişimi kontrol etmek için [Apps Portal](https://myapps.microsoft.com/) kullanabiliriz. Bu, tek oturum açma portalıdır ve erişimi test etmek için kullanabiliriz.
|
||||
|
||||
Lo anterior está muy bien si se trata de un usuario que tiene acceso a los recursos dentro de su portal de Azure, no todos los usuarios necesitan conocer el portal, pero para comprobar el acceso podemos utilizar el [Apps Portal](https://myapps.microsoft.com/) Es un portal de inicio de sesión único para que podamos probar.
|
||||
|
||||
![](Images/Day30_Cloud17.png)
|
||||
|
||||
Bu portalı kendi markanızla özelleştirebilirsiniz ve ileride üzerinde durabileceğimiz bir konudur.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
|
||||
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
|
||||
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
|
||||
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
|
||||
|
||||
Gorusmek Uzere [Gun 31](day31.md).
|
97
2022/tr/Days/day31.md
Normal file
97
2022/tr/Days/day31.md
Normal file
@ -0,0 +1,97 @@
|
||||
## Microsoft Azure Hesaplama Modelleri
|
||||
|
||||
Microsoft Azure'daki güvenlik modellerine ilişkin temel kavramları incelemeye devam ederek, Azure'da mevcut olan farklı hesaplama hizmetlerine bakalım.
|
||||
|
||||
### Hizmet Yeterlilik Seçenekleri
|
||||
|
||||
Bu bölüm, verilerin yönetimi açısından yazar için önemlidir. On-premises ortamında olduğu gibi, hizmetlerinizin kullanılabilirliğini sağlamak kritik öneme sahiptir.
|
||||
|
||||
- Yüksek Kullanılabilirlik (Bir bölge içinde koruma)
|
||||
- Felaket Kurtarma (Bir bölgeden diğerine koruma)
|
||||
- Yedekleme (Zamana göre geri yükleme)
|
||||
|
||||
Microsoft, bir coğrafi sınırlar içinde birden fazla bölge dağıtmaktadır. Azure'da Hizmet Yeterlilik için iki kavram vardır: küme ve bölgeler:
|
||||
|
||||
- **Cluster** - Bir veri merkezi içinde dayanıklılık sağlar.
|
||||
- **Zone'lar** - Bir bölge içindeki veri merkezleri arasında dayanıklılık sağlar.
|
||||
|
||||
### Sanal Makineler
|
||||
|
||||
Muhtemelen herkesin halka açık bir bulutta başlamak için tercih ettiği noktadır.
|
||||
|
||||
- Farklı kapasitelere (bazıları ezici olabilir) sahip çeşitli sanal makine serileri ve boyutları sağlar. [Azure'daki Sanal Makine Boyutları](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes)
|
||||
- Yüksek performanslı ve düşük gecikmeli iş yüklerinden, yüksek bellekli seçeneklere kadar farklı MV seçenekleri ve yaklaşımları bulunmaktadır.
|
||||
- Ayrıca, B Serisi altında bulunan patlayıcı bir MV türü vardır. Bu, genellikle çoğunlukla düşük CPU gereksinimine sahip olabilecek iş yükleri için idealdir, ancak aylık olarak bir performans pik gereksinimi olabilir.
|
||||
- Sanal makineler, herhangi bir ağa bağlantı sağlayabilen bir sanal ağa yerleştirilir.
|
||||
- Windows ve Linux gibi misafir işletim sistemlerini destekler.
|
||||
- Ayrıca, belirli Linux dağıtımları söz konusu olduğunda Azure için uyarlanmış çekirdekler bulunmaktadır. [Azure Tuned Kernels](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/endorsed-distros#azure-tuned-kernels)
|
||||
|
||||
### Şablonlar
|
||||
|
||||
Daha önce belirtildiği gibi, Microsoft Azure'nun altında JSON tabanlı bir yapı bulunmaktadır.
|
||||
|
||||
Kaynaklarımızı oluşturmak için kullanabileceğimiz çeşitli yönetim portal ve konsolları bulunmaktadır, ancak tercih edilen yöntem JSON şablonları aracılığıyla oluşturmaktır.
|
||||
|
||||
İstenen durumu tekrarlayabilir hale getiren, artan veya tamamlanmış durumda idempotent dağıtımlar sağlar.
|
||||
|
||||
Dağıtılmış kaynak tanımlarını dışa aktarabilen geniş bir şablon seçeneği mevcuttur. Bu şablon özelliğini, AWS CloudFormation'a veya çoklu bulut seçeneği için Terraform'a benzetmekten hoşlanırım. Altyapı olarak kodlama bölümünde Terraform'ın gücü hakkında daha fazla bilgi vereceğiz.
|
||||
|
||||
### Ölçeklendirme
|
||||
|
||||
Otomatik ölçeklendirme, halka açık bulutun önemli bir özelliğidir, kullanılmayan kaynakları azaltma veya ihtiyaç duyulduğunda artırma yeteneğine sahip olmak.
|
||||
|
||||
Azure'da IaaS için Virtual Machine Scale Sets (VMSS) adı verilen bir özellik bulunmaktadır. Bu, bir standart altın imajını otomatik olarak oluşturmanıza ve ölçeklendirmenize olanak tanır, bu işlemi saatlere ve metriklere dayalı olarak gerçekleştirir.
|
||||
|
||||
Bu, güncelleme pencereleri için idealdir, böylece görüntülerinizi güncelleyebilir ve en az etkiyle dağıtabilirsiniz.
|
||||
|
||||
Azure App Services gibi diğer hizmetlerde yerleşik otomatik ölçeklendirme özelliğine sahiptir.
|
||||
|
||||
### Konteynerler
|
||||
|
||||
Henüz konteynerleri bir kullanım senaryosu olarak ele almadık ve DevOps öğrenme yolculuğumuzda neden ve nasıl gerektiklerini tartışmadık, ancak Azure'nun değerli birkaç konteyner odaklı hizmeti olduğunu belirtmeliyiz.
|
||||
|
||||
- **Azure Kubernetes Service (AKS)** - Kontrol düzlemi veya alt küme yönetimiyle uğraşmadan yönetilen bir Kubernetes çözümü sağlar. Kubernetes hakkında daha fazlasını ileride göreceğiz.
|
||||
|
||||
- **Azure Container Instances** - Saniyelik faturalandırma ile bir Konteyner Hizmeti sunar. Bir görüntüyü çalıştırabilir ve sanal ağınızla entegre edebilirsiniz, Konteyner Yönetimi gerektirmez.
|
||||
|
||||
- **Service Fabric** - Birçok özelliği içerir, ancak konteyner örneklerini yönetmek için orkestrasyon sağlar.
|
||||
|
||||
Azure ayrıca Docker Görüntüleri, Helm grafikleri, OCI Sanatçıları ve görüntüler için özel bir Kayıt Defteri sağlar. Bu konuda daha fazlasını ilgili konteyner bölümüne geldiğimizde göreceğiz.
|
||||
|
||||
Ayrıca, birçok konteyner hizmetinin altında konteynerlerin kullanılabileceğini de belirtmeliyiz, ancak bunu yönetme ihtiyacınızdan soyutlarlar.
|
||||
|
||||
Bu konteyner odaklı hizmetlerin yanı sıra, diğer tüm halka açık bulutlarda da benzer hizmetler bulunmaktadır.
|
||||
|
||||
### Uygulama Hizmetleri
|
||||
|
||||
- Azure Application Services, hizmetlerinizi kurmanın kolay bir yolunu sağlayan bir uygulama barındırma çözümü sunar.
|
||||
- Otomatik dağıtım ve ölçeklendirme.
|
||||
- Windows ve Linux tabanlı çözümleri destekler.
|
||||
- Hizmetler, bir Uygulama Hizmeti Planı içinde çalışır ve bir tür ve boyuta sahiptir.
|
||||
- Web uygulamaları, API uygulamaları ve mobil uygulamalar dahil olmak üzere birçok farklı hizmet.
|
||||
- Güvenilir test ve dağıtım için Dağıtım Yuvaları desteği.
|
||||
|
||||
### Sunucusuz Hesaplama
|
||||
|
||||
Sunucusuz hesaplama ile amacımız, yalnızca işlevin çalışma süresi için ödeme yapmak ve sürekli olarak çalışan sanal makineler veya PaaS uygulamalarına sahip olmamaktır. İşlevimizi sadece ihtiyaç duyduğumuzda çalıştırır ve ardından ortadan kalkar.
|
||||
|
||||
**Azure Fonksiyonları** - Sunucusuz bir kod sağlar. Genel bulut ortamına ilk bakışımızı hatırlarsak, yönetim katmanının soyutlama seviyesini hatırlayacağız. Sunucusuz işlevlerle, yalnızca kodu yönetmeniz gerekecektir.
|
||||
|
||||
**Event Driven** ,ölçeklenebilir. Azure ve üçüncü taraf hizmetlerine giriş ve çıkış bağlantısı sağlar.
|
||||
|
||||
Çok çeşitli programlama dillerini destekler. (C#, NodeJS, Python, PHP, batch, bash, Golang ve Rust. Herhangi bir yürütülebilir dosya)
|
||||
|
||||
**Azure Event Grid** hizmetlerden ve olaylardan mantığı tetiklemenizi sağlar.
|
||||
|
||||
**Azure Logic App** grafik tabanlı iş akışları ve entegrasyon sağlar.
|
||||
|
||||
Ayrıca, tutarlı yönetim ve programlama ile Windows ve Linux düğümlerinde büyük ölçekli işleri çalıştırabilen Azure Batch'e de göz atabiliriz.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
|
||||
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
|
||||
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
|
||||
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
|
||||
|
||||
Gorusmek Uzere [Gun 32](day32.md).
|
183
2022/tr/Days/day32.md
Normal file
183
2022/tr/Days/day32.md
Normal file
@ -0,0 +1,183 @@
|
||||
## Microsoft Azure Storage(Depolama) Modelleri
|
||||
|
||||
### Storage(Depolama) Hizmetleri
|
||||
|
||||
- Azure depolama hizmetleri, depolama hesapları aracılığıyla sağlanır.
|
||||
- Depolama hesapları genellikle REST API üzerinden erişilir.
|
||||
- Bir depolama hesabının benzersiz bir adı olmalıdır ve DNS adının bir parçası olmalıdır: `<Depolama(Storage) Hesap Adı>.core.windows.net`
|
||||
- Çeşitli kopyalama ve şifreleme seçenekleri bulunur.
|
||||
- Bir kaynak grubu içinde yer alır.
|
||||
|
||||
Azure Portal'ın üstündeki arama çubuğunda Sosyal Grup araması yaparak depolama grubumuzu kolayca oluşturabiliriz.
|
||||
|
||||
![](Images/Day32_Cloud1.png)
|
||||
|
||||
Daha sonra depolama hesabımızı oluşturmak için adımları takip edebiliriz. Bu adın benzersiz olması ve tamamen küçük harf olması gerektiğini unutmamız gerekir. Rakamları içerebilir ancak boşluk bulunmamalıdır.
|
||||
|
||||
![](Images/Day32_Cloud2.png)
|
||||
|
||||
Depolama hesabımıza karşı tercih ettiğimiz kopyalama seviyesini ve burada depoladığımız herhangi bir şeyi seçebiliriz. Liste aşağı indikçe maliyeti daha yüksek seçenekler ve verilerinizin yayılımı sağlanır.
|
||||
|
||||
Varsayılan kopyalama seçeneği bile verilerimizin 3 kopyasını sunar.
|
||||
|
||||
[Azure Depolama Kopyalama](https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy)
|
||||
|
||||
Yukarıdaki bağlantının özeti aşağıda verilmiştir:
|
||||
|
||||
- **Locally-redundant storage** - verilerinizi birincil bölgedeki tek bir veri merkezinde üç kez replike eder.
|
||||
- **Geo-redundant storage** - verilerinizi birincil bölgedeki tek bir fiziksel konumda LRS kullanarak senkron olarak üç kez kopyalar.
|
||||
- **Zone-redundant storage** - Azure Depolama verilerinizi birincil bölgedeki üç Azure kullanılabilirlik bölgesi arasında senkron olarak replike eder.
|
||||
- **Geo-zone-redundant storage** - coğrafi replikasyon tarafından sağlanan bölgesel kesintilere karşı korumayla birlikte kullanılabilirlik bölgeleri arasında sağladığı yüksek kullanılabilirlik kombinasyonunu sunar. Bir GZRS depolama hesabında verileriniz birincil bölgedeki üç Azure kullanılabilirlik bölgesine kopyalanır ve aynı zamanda bölgesel felaketlere karşı koruma için ikinci bir coğrafi bölgeye replike edilir.
|
||||
|
||||
![](Images/Day32_Cloud3.png)
|
||||
|
||||
Performans seçeneklerine geri dönersek, Standard ve Premium seçeneklerimiz var. Yürüyüşümüzde Standard'ı seçtik, ancak premium size bazı özel seçenekler sunar.
|
||||
|
||||
![](Images/Day32_Cloud4.png)
|
||||
|
||||
Ardından açılır menüde, aşağıdaki üç seçeneği görebilirsiniz.
|
||||
|
||||
![](Images/Day32_Cloud5.png)
|
||||
|
||||
Depolama hesabınız için daha fazla gelişmiş seçenek mevcuttur, ancak şu anda bu alanlara girmemize gerek yok. Bu seçenekler şifreleme ve veri korumasıyla ilgilidir.
|
||||
|
||||
### Yönetilen Diskler
|
||||
|
||||
Depolama erişimi farklı yöntemlerle sağlanabilir.
|
||||
|
||||
Kimlik doğrulamalı erişim:
|
||||
|
||||
- Tam kontrol için paylaşılan anahtar.
|
||||
- Delege edilmiş, ayrıntılı erişim için Paylaşılan Erişim İmzası.
|
||||
- Azure Active Directory (Mevcut olduğunda)
|
||||
|
||||
Public Erisim:
|
||||
|
||||
- Genel erişim, HTTP üzerinden de dahil olmak üzere anonim erişime izin vermek için sağlanabilir.
|
||||
- Bir örnek olarak, temel içeriği ve dosyaları bir blok blobunda barındırarak tarayıcının bu verileri görüntülemesine ve indirmesine izin verebilirsiniz.
|
||||
|
||||
Depolamanıza başka bir Azure hizmetinden erişiyorsanız, trafiğiniz Azure içinde kalır.
|
||||
|
||||
Depolama performansı konusunda iki farklı türümüz bulunmaktadır:
|
||||
|
||||
- **Standard** - Maksimum IOPS sayısı
|
||||
- **Premium** - Garantili IOPS sayısı
|
||||
|
||||
IOPS => Saniyedeki Giriş/Çıkış işlemi
|
||||
|
||||
Ayrıca, doğru depolamayı seçerken dikkate almanız gereken yönetilmeyen ve yönetilen diskler arasında da bir fark vardır.
|
||||
|
||||
### Sanal Makine Storage(Depolama)
|
||||
|
||||
- Sanal Makine İşletim Sistemi diskleri genellikle kalıcı depolamada saklanır.
|
||||
- Bazı durumsuz iş yükleri kalıcı depolamaya ihtiyaç duymaz ve düşük gecikme süresi daha büyük bir avantajdır.
|
||||
- Ephemeral OS yönetilen diskleri destekleyen bazı sanal makineler bulunmaktadır ve bunlar düğeme yerel depolamada oluşturulur.
|
||||
- Bunlar aynı zamanda VM Scale Set'lerle de kullanılabilir.
|
||||
|
||||
Yönetilen Diskler, Azure Sanal Makinelerle kullanılabilen dayanıklı blok depolamadır. Ultra Disk Depolama, Premium SSD, Standart SSD veya Standart HDD şeklinde kullanılabilir. Ayrıca bazı özelliklere sahiptirler.
|
||||
|
||||
- Anlık görüntü (snapshot) ve imaj (image) desteği
|
||||
- SKU'lar arasında kolay hareket ettirme
|
||||
- Kullanılması durumunda daha iyi kullanılabilirlik sağlar.
|
||||
- Faturalandırma, tüketilen depolama yerine disk boyutuna göre yapılır.
|
||||
|
||||
## Arşiv Depolama
|
||||
|
||||
- **Cool Tier** - Blok ve ekleme blobları için bir soğuk katman depolama mevcuttur.
|
||||
- Daha düşük depolama maliyeti
|
||||
- Daha yüksek işlem maliyeti.
|
||||
- **Archive Tier** - Blok BLOB'ları için arşiv depolama mevcuttur.
|
||||
- Bu, BLOB başına yapılandırılır.
|
||||
- Daha ucuz maliyet, daha uzun veri alım gecikmesi.
|
||||
- Düzenli Azure Depolaması ile aynı Veri Dayanıklılığı.
|
||||
- İhtiyaç duyulduğunda özel Veri katmanlaması etkinleştirilebilir.
|
||||
|
||||
### Dosya Paylasımı
|
||||
|
||||
Yukarıdaki depolama hesabı oluşturma adımından sonra artık dosya paylaşımları oluşturabiliriz.
|
||||
|
||||
![](Images/Day32_Cloud6.png)
|
||||
|
||||
Bu, Azure'da SMB2.1 ve 3.0 dosya paylaşımları sağlar.
|
||||
|
||||
Azure içinde kullanılabilir ve SMB3 aracılığıyla internet üzerinden erişilebilir (port 445 açık).
|
||||
|
||||
Azure'da paylaşılan dosya depolaması sağlar.
|
||||
|
||||
REST API'ye ek olarak standart SMB istemcileri kullanılarak eşlenebilir.
|
||||
|
||||
|
||||
Ayrıca [Azure NetApp Dosyaları](https://vzilla.co.uk/vzilla-blog/azure-netapp-files-how) (SMB and NFS) da fark edebilirsiniz.
|
||||
|
||||
### Caching & Media Servisleri
|
||||
|
||||
Azure İçerik Dağıtım Ağı, dünya çapında konumlandırılmış statik web içeriği için bir önbellek sağlar.
|
||||
|
||||
Azure Medya Hizmetleri, oynatma hizmetlerine ek olarak medya dönüştürme teknolojileri sunar.
|
||||
|
||||
## Microsoft Azure Veritabanı Modelleri
|
||||
|
||||
[Gun 28](day28.md)'de çeşitli hizmet seçeneklerini ele aldık. Bunlardan biri PaaS (Platform olarak Hizmet) idi, burada büyük bir kısmı altyapı ve işletim sisteminden soyutlanır ve uygulama veya bu durumda veritabanı modellerinin kontrolü size bırakılır.
|
||||
|
||||
### İlişkisel Veritabanları
|
||||
|
||||
Azure SQL Veritabanı, Microsoft SQL Server'a dayalı olarak sunulan bir ilişkisel veritabanı hizmeti sağlar.
|
||||
|
||||
Bu, belirli bir işlevsellik sürümü gerektiğinde mevcut olan en son SQL dalında çalışan SQL'dir.
|
||||
|
||||
Bu yapılandırılabilir birkaç seçenek bulunur. Tek bir veritabanı sağlayabiliriz, bu durumda örnekte bir veritabanını temsil ederken, esnek bir havuz birden çok veritabanını paylaşan ve birlikte ölçeklenebilen bir kapasite havuzunu sağlar.
|
||||
|
||||
Bu veritabanı örneklerine, normal SQL örnekleri gibi erişilebilir.
|
||||
|
||||
MySQL, PostgreSQL ve MariaDB için ek yönetilen sunumlar mevcuttur.
|
||||
|
||||
![](Images/Day32_Cloud7.png)
|
||||
|
||||
### NoSQL Çözümleri
|
||||
|
||||
Azure Cosmos DB, şema bağımsız bir NoSQL uygulamasıdır.
|
||||
|
||||
99.99% hizmet düzeyi anlaşması (SLA)
|
||||
|
||||
Otomatik yönlendirme ile dünya genelinde herhangi bir yerde %99'luk dilimlerde tek basamaklı gecikmelerle dağıtılan bir veritabanı.
|
||||
|
||||
Verilerin bölümlenmesi/parçalanması/distribütörü için bölüm anahtarı kullanılır.
|
||||
|
||||
Farklı veri modellerini destekler (belgeler, anahtar-değer, grafik, sütun dostu).
|
||||
|
||||
Farklı API'leri destekler (DocumentDB SQL, MongoDB, Azure Tablo Depolama ve Gremlin).
|
||||
|
||||
|
||||
![](Images/Day32_Cloud9.png)
|
||||
|
||||
CAP teoremine dayanan farklı tutarlılık modelleri mevcuttur. [CAP teorem](https://en.wikipedia.org/wiki/CAP_theorem) temel alınır.
|
||||
|
||||
![](Images/Day32_Cloud8.png)
|
||||
|
||||
### Caching (Onbellekleme)
|
||||
|
||||
Redis gibi önbellekleme sistemlerine detaylı olarak girmeden, Microsoft Azure'ın Azure Cache for Redis adında bir hizmete sahip olduğunu belirtmek istedim.
|
||||
|
||||
Azure Cache for Redis, Redis yazılımına dayalı bir bellek içi veri deposu sağlar.
|
||||
|
||||
- Bu, açık kaynak Redis Cache'in bir uygulamasıdır.
|
||||
- Barındırılan, güvenli bir Redis Cache örneği.
|
||||
- Farklı seviyelerde bulunur.
|
||||
- Cache kullanmak için uygulama güncellenmelidir.
|
||||
- Yazma işlemlerine kıyasla yüksek okuma gereksinimine sahip bir uygulama için amaçlanmıştır.
|
||||
- Key-value tabanlı bir depodur.
|
||||
|
||||
![](Images/Day32_Cloud10.png)
|
||||
|
||||
Son birkaç gündeki Microsoft Azure hakkındaki not alma ve teorik bilgilerin oldukça yoğun olduğunun farkındayım, ancak bu bileşenlerin nasıl bir araya geldiği ve çalıştığına dair pratik yönlerine geçmeden önce temel kavramları ele almak istedim.
|
||||
|
||||
Hizmetlerin senaryo tabanlı dağıtımlarını çalışır duruma getirmeden önce, ağlarla ilgili biraz daha teorik bilgiye ihtiyacımız var. Ayrıca, şu ana kadar kullandığımız portal dışında Microsoft Azure ile etkileşim kurmanın farklı yollarına da bir göz atmak istiyoruz.
|
||||
|
||||
## Kaynaklar
|
||||
|
||||
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
|
||||
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
|
||||
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
|
||||
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
|
||||
|
||||
Gorusuruz [Gun 33](day33.md)
|
Loading…
Reference in New Issue
Block a user