{"id":37589,"date":"2026-01-09T22:41:04","date_gmt":"2026-01-09T19:41:04","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37589"},"modified":"2026-01-09T22:41:04","modified_gmt":"2026-01-09T19:41:04","slug":"cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/","title":{"rendered":"Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri"},"content":{"rendered":"<p><body><\/p>\n<h2>Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri<\/h2>\n<p>Modern bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi ve sunucu sa\u011flama s\u00fcre\u00e7leri giderek daha karma\u015f\u0131k hale gelmektedir. Geli\u015ftiriciler ve sistem y\u00f6neticileri, uygulamalar\u0131n\u0131 h\u0131zl\u0131, g\u00fcvenilir ve tekrarlanabilir bir \u015fekilde da\u011f\u0131tmak i\u00e7in s\u00fcrekli yeni yollar aramaktad\u0131r. Bu aray\u0131\u015f\u0131n \u00f6nemli duraklar\u0131ndan biri de &#8220;Infrastructure as Code&#8221; (IaC) felsefesidir. IaC, altyap\u0131n\u0131n kod olarak tan\u0131mlanmas\u0131n\u0131 ve y\u00f6netilmesini sa\u011flayarak, manuel hatalar\u0131 azalt\u0131r, tutarl\u0131l\u0131\u011f\u0131 art\u0131r\u0131r ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r. Bu felsefenin temel ta\u015flar\u0131ndan biri olan cloud-config scripting, bulut tabanl\u0131 sanal makinelerin ilk \u00f6ny\u00fckleme an\u0131nda otomatik olarak yap\u0131land\u0131r\u0131lmas\u0131na olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<p>Bu makale, cloud-config scripting&#8217;in ne oldu\u011funu, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, temel bile\u015fenlerini, kullan\u0131m senaryolar\u0131n\u0131, avantajlar\u0131n\u0131 ve s\u0131n\u0131rlamalar\u0131n\u0131 derinlemesine inceleyecektir. Ayr\u0131ca, di\u011fer altyap\u0131 y\u00f6netimi ara\u00e7lar\u0131yla ili\u015fkisini ve en iyi uygulama y\u00f6ntemlerini de ele alarak, okuyuculara bulut altyap\u0131lar\u0131nda otomasyonu sa\u011flamak i\u00e7in kapsaml\u0131 bir rehber sunmay\u0131 hedeflemektedir.<\/p>\n<h3>Cloud-Config Nedir?<\/h3>\n<p>Cloud-config, bulut ortamlar\u0131nda yeni bir sanal makine (VM) veya konteyner \u00f6rne\u011fi ba\u015flat\u0131ld\u0131\u011f\u0131nda, i\u015fletim sisteminin ilk \u00f6ny\u00fckleme an\u0131nda otomatik olarak yap\u0131land\u0131r\u0131lmas\u0131n\u0131 sa\u011flayan standartla\u015ft\u0131r\u0131lm\u0131\u015f bir y\u00f6ntemdir. Temel olarak, bir YAML dosyas\u0131 format\u0131nda yaz\u0131lm\u0131\u015f talimatlar setidir ve bu talimatlar, VM ba\u015flat\u0131l\u0131rken &#8220;cloud-init&#8221; ad\u0131 verilen bir ara\u00e7 taraf\u0131ndan okunur ve uygulan\u0131r. Cloud-init, hemen hemen t\u00fcm b\u00fcy\u00fck bulut sa\u011flay\u0131c\u0131lar\u0131 (AWS, Azure, Google Cloud, OpenStack) ve sanalla\u015ft\u0131rma platformlar\u0131 taraf\u0131ndan desteklenen, a\u00e7\u0131k kaynakl\u0131 bir pakettir.<\/p>\n<p>Cloud-config&#8217;in ana amac\u0131, bir sunucuyu &#8220;bo\u015f&#8221; bir i\u015fletim sistemi g\u00f6r\u00fcnt\u00fcs\u00fcnden, \u00e7al\u0131\u015fmaya haz\u0131r bir duruma getirmek i\u00e7in gereken temel kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 otomatikle\u015ftirmektir. Bu ad\u0131mlar aras\u0131nda kullan\u0131c\u0131 olu\u015fturma, paket y\u00fckleme, dosya yazma, komut \u00e7al\u0131\u015ft\u0131rma, a\u011f ayarlar\u0131n\u0131 yap\u0131land\u0131rma ve daha fazlas\u0131 bulunabilir. Cloud-config, sunucunun ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn yaln\u0131zca ilk a\u015famas\u0131n\u0131 hedef al\u0131r; yani, sunucu bir kez yap\u0131land\u0131r\u0131ld\u0131ktan sonra, cloud-config betikleri tekrar \u00e7al\u0131\u015fmaz (yeniden \u00f6ny\u00fcklemede bile). Bu, onu &#8220;bootstrapping&#8221; veya &#8220;ilk \u00e7al\u0131\u015ft\u0131rma yap\u0131land\u0131rmas\u0131&#8221; i\u00e7in ideal bir ara\u00e7 yapar.<\/p>\n<p>Cloud-config&#8217;in g\u00fcc\u00fc, deklaratif yap\u0131s\u0131ndan gelir. Yani, &#8220;ne yap\u0131laca\u011f\u0131n\u0131&#8221; tan\u0131mlars\u0131n\u0131z, &#8220;nas\u0131l yap\u0131laca\u011f\u0131n\u0131&#8221; de\u011fil. Cloud-init arac\u0131, bu deklaratif yap\u0131land\u0131rmay\u0131 yorumlar ve i\u015fletim sistemine \u00f6zg\u00fc komutlar\u0131 (\u00f6rne\u011fin, Debian tabanl\u0131 sistemlerde <code>apt-get<\/code>, Red Hat tabanl\u0131 sistemlerde <code>yum<\/code> veya <code>dnf<\/code>) kullanarak istenen durumu elde eder. Bu sayede, ayn\u0131 cloud-config beti\u011fi farkl\u0131 Linux da\u011f\u0131t\u0131mlar\u0131nda ve farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131nda minimum de\u011fi\u015fiklikle veya hi\u00e7 de\u011fi\u015fiklik yapmadan kullan\u0131labilir, bu da platformlar aras\u0131 ta\u015f\u0131nabilirlik sa\u011flar.<\/p>\n<h3>Cloud-Config&#8217;in Temel Bile\u015fenleri ve Yap\u0131s\u0131<\/h3>\n<p>Cloud-config dosyalar\u0131, okunmas\u0131 ve yaz\u0131lmas\u0131 kolay olan YAML (YAML Ain&#8217;t Markup Language) format\u0131nda yaz\u0131l\u0131r. YAML, hiyerar\u015fik veri yap\u0131lar\u0131n\u0131 temsil etmek i\u00e7in girintilemeyi kullanan insan dostu bir veri serile\u015ftirme standard\u0131d\u0131r. Cloud-config dosyas\u0131n\u0131n en ba\u015f\u0131nda, cloud-init arac\u0131n\u0131n dosyay\u0131 bir cloud-config beti\u011fi olarak tan\u0131mas\u0131n\u0131 sa\u011flayan <code>#cloud-config<\/code> etiketi bulunmal\u0131d\u0131r.<\/p>\n<h4>YAML Format\u0131n\u0131n \u00d6nemi<\/h4>\n<p>YAML, key-value \u00e7iftleri, listeler ve i\u00e7 i\u00e7e ge\u00e7mi\u015f yap\u0131lar kullanarak verileri organize eder. Cloud-config&#8217;de, her yap\u0131land\u0131rma t\u00fcr\u00fc (\u00f6rne\u011fin, kullan\u0131c\u0131lar, paketler, komutlar) belirli bir anahtar alt\u0131nda grupland\u0131r\u0131l\u0131r. Girintileme, bu yap\u0131lar\u0131n hiyerar\u015fisini belirler ve do\u011fru girintileme olmadan YAML dosyalar\u0131 ge\u00e7ersiz olur. Bu nedenle, YAML s\u00f6zdizimine ve girintileme kurallar\u0131na dikkat etmek kritik \u00f6neme sahiptir.<\/p>\n<h4>Anahtar B\u00f6l\u00fcmler (Mod\u00fcller)<\/h4>\n<p>Cloud-config, \u00e7e\u015fitli yap\u0131land\u0131rma g\u00f6revlerini ger\u00e7ekle\u015ftirmek i\u00e7in bir dizi \u00f6nceden tan\u0131mlanm\u0131\u015f mod\u00fcl veya b\u00f6l\u00fcme sahiptir. \u0130\u015fte en yayg\u0131n ve \u00f6nemli olanlar\u0131:<\/p>\n<p>*   <strong><code>#cloud-config<\/code>:<\/strong> Her cloud-config dosyas\u0131n\u0131n ilk sat\u0131r\u0131 olmal\u0131d\u0131r. Cloud-init&#8217;e bu dosyan\u0131n bir cloud-config beti\u011fi oldu\u011funu bildirir.<br \/>\n*   <strong><code>users<\/code>:<\/strong> Yeni sistem kullan\u0131c\u0131lar\u0131 olu\u015fturmak veya mevcut kullan\u0131c\u0131lar\u0131 de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Her kullan\u0131c\u0131 i\u00e7in isim, parola (hashlenmi\u015f), sudo yetkileri ve SSH anahtarlar\u0131 gibi \u00f6zellikler belirtilebilir.<\/p>\n<pre><code class=\"language-yaml\">users:\n      - name: adminuser\n        sudo: ALL=(ALL) NOPASSWD:ALL\n        groups: users, sudo\n        shell: \/bin\/bash\n        ssh_authorized_keys:\n          - ssh-rsa AAAAB3NzaC... your_public_key_here<\/code><\/pre>\n<p>*   <strong><code>groups<\/code>:<\/strong> Yeni grup olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-yaml\">groups:\n      - webdevs\n      - dbadmins<\/code><\/pre>\n<p>*   <strong><code>packages<\/code>:<\/strong> \u0130\u015fletim sistemine paket y\u00fcklemek i\u00e7in kullan\u0131l\u0131r. Paket y\u00f6neticisine (apt, yum, dnf) g\u00f6re otomatik olarak do\u011fru komutu \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-yaml\">packages:\n      - nginx\n      - git\n      - curl\n      - python3-pip<\/code><\/pre>\n<p>*   <strong><code>runcmd<\/code>:<\/strong> \u0130lk \u00f6ny\u00fckleme s\u0131ras\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak komutlar\u0131n bir listesidir. Bu komutlar, genellikle di\u011fer cloud-config mod\u00fclleri taraf\u0131ndan yap\u0131lamayan veya daha karma\u015f\u0131k mant\u0131k gerektiren g\u00f6revler i\u00e7in kullan\u0131l\u0131r. Komutlar s\u0131ral\u0131 olarak y\u00fcr\u00fct\u00fcl\u00fcr.<\/p>\n<pre><code class=\"language-yaml\">runcmd:\n      - echo \"Merhaba Cloud-Config!\" > \/tmp\/merhaba.txt\n      - systemctl enable nginx\n      - systemctl start nginx\n      - \/usr\/bin\/python3 \/tmp\/myscript.py<\/code><\/pre>\n<p>*   <strong><code>write_files<\/code>:<\/strong> Belirli i\u00e7erikle dosya olu\u015fturmak veya mevcut dosyalar\u0131n \u00fczerine yazmak i\u00e7in kullan\u0131l\u0131r. Dosya yolu, izinler (mode) ve i\u00e7erik belirtilebilir.<\/p>\n<pre><code class=\"language-yaml\">write_files:\n      - path: \/etc\/nginx\/sites-available\/default\n        permissions: '0644'\n        content: |\n          server {\n              listen 80 default_server;\n              listen [::]:80 default_server;\n              root \/var\/www\/html;\n              index index.html index.htm index.nginx-debian.html;\n              server_name _;\n              location \/ {\n                  try_files $uri $uri\/ =404;\n              }\n          }\n      - path: \/var\/www\/html\/index.html\n        permissions: '0644'\n        content: |\n          <!DOCTYPE html>\n          <html>\n          <head>\n              <title>Merhaba Cloud-Config!<\/title>\n          <\/head>\n          <body>\n              \n          <\/body>\n          <\/html><\/code><\/pre>\n<p>*   <strong><code>ssh_authorized_keys<\/code>:<\/strong> Belirli bir kullan\u0131c\u0131n\u0131n (genellikle varsay\u0131lan <code>ubuntu<\/code> veya <code>ec2-user<\/code>) <code>authorized_keys<\/code> dosyas\u0131na SSH genel anahtarlar\u0131 eklemek i\u00e7in kullan\u0131l\u0131r. <code>users<\/code> b\u00f6l\u00fcm\u00fc i\u00e7inde de belirtilebilir.<\/p>\n<pre><code class=\"language-yaml\">ssh_authorized_keys:\n      - ssh-rsa AAAAB3NzaC... another_public_key_here<\/code><\/pre>\n<p>*   <strong><code>hostname<\/code>:<\/strong> Sunucunun hostname&#8217;ini ayarlamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-yaml\">hostname: webserver-01<\/code><\/pre>\n<p>*   <strong><code>locale<\/code>:<\/strong> Sistem dilini ve yerel ayarlar\u0131n\u0131 yap\u0131land\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-yaml\">locale: en_US.UTF-8<\/code><\/pre>\n<p>*   <strong><code>timezone<\/code>:<\/strong> Sistem zaman dilimini ayarlamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-yaml\">timezone: Europe\/Istanbul<\/code><\/pre>\n<p>*   <strong><code>apt<\/code>, <code>yum<\/code>, <code>dnf<\/code>:<\/strong> \u0130lgili paket y\u00f6neticileri i\u00e7in \u00f6zel ayarlar (\u00f6rne\u011fin, yeni depolar ekleme, proxy ayarlar\u0131) yapmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-yaml\">apt:\n      sources:\n        docker.list:\n          source: deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu $RELEASE stable\n          keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88<\/code><\/pre>\n<p>*   <strong><code>bootcmd<\/code>:<\/strong> <code>runcmd<\/code>&#8216;den \u00f6nce, yani sistemin daha erken bir a\u015famas\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak komutlar listesi. Genellikle disk b\u00f6l\u00fcmleme veya temel dosya sistemi haz\u0131rl\u0131\u011f\u0131 gibi \u00e7ok erken a\u015fama g\u00f6revler i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong><code>power_state<\/code>:<\/strong> Yap\u0131land\u0131rma tamamland\u0131ktan sonra sistemin ne yapaca\u011f\u0131n\u0131 (yeniden ba\u015flatma, kapanma) belirtir.<\/p>\n<pre><code class=\"language-yaml\">power_state:\n      mode: reboot\n      delay: \"now\"\n      message: \"Cloud-config completed, rebooting...\"<\/code><\/pre>\n<p>*   <strong><code>mounts<\/code>:<\/strong> Diskleri ba\u011flamak i\u00e7in kullan\u0131l\u0131r. \u00d6zellikle ek disklerin otomatik olarak ba\u011flanmas\u0131 i\u00e7in faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-yaml\">mounts:\n      - [ \/dev\/xvdf, \/mnt\/data, ext4, \"defaults,noatime\", \"0\", \"0\" ]<\/code><\/pre>\n<p>*   <strong><code>network<\/code>:<\/strong> A\u011f aray\u00fczlerini yap\u0131land\u0131rmak i\u00e7in kullan\u0131l\u0131r. Bu b\u00f6l\u00fcm olduk\u00e7a karma\u015f\u0131k olabilir ve genellikle bulut sa\u011flay\u0131c\u0131n\u0131n kendi a\u011f yap\u0131land\u0131rma mekanizmalar\u0131 tercih edildi\u011finden daha az kullan\u0131l\u0131r.<\/p>\n<p>Bu mod\u00fcller, bir sunucunun ilk \u00f6ny\u00fckleme s\u0131ras\u0131nda ihtiya\u00e7 duyabilece\u011fi hemen hemen her t\u00fcrl\u00fc yap\u0131land\u0131rma g\u00f6revini kapsar. Mod\u00fcllerin s\u0131ras\u0131 genellikle cloud-init taraf\u0131ndan belirlenir, ancak <code>bootcmd<\/code> ve <code>runcmd<\/code> gibi komut \u00e7al\u0131\u015ft\u0131rma mod\u00fcllerinin kendi i\u00e7lerinde s\u0131ral\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131 unutulmamal\u0131d\u0131r.<\/p>\n<h3>Cloud-Config ile Otomasyon Senaryolar\u0131<\/h3>\n<p>Cloud-config&#8217;in g\u00fcc\u00fc, \u00e7e\u015fitli otomasyon senaryolar\u0131nda kendini g\u00f6sterir. Tekrarlayan g\u00f6revleri ortadan kald\u0131rarak ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini h\u0131zland\u0131rarak DevOps ekipleri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir.<\/p>\n<h4>Temel G\u00fcvenlik Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Yeni bir sunucu ba\u015flat\u0131ld\u0131\u011f\u0131nda, g\u00fcvenlik en \u00f6ncelikli konulardan biridir. Cloud-config ile \u015funlar otomatikle\u015ftirilebilir:<\/p>\n<p>*   <strong>Yeni Kullan\u0131c\u0131lar ve SSH Anahtarlar\u0131:<\/strong> Varsay\u0131lan kullan\u0131c\u0131lar yerine \u00f6zel, daha g\u00fcvenli kullan\u0131c\u0131lar olu\u015fturulabilir ve yaln\u0131zca belirli SSH anahtarlar\u0131 ile eri\u015fime izin verilebilir. Parola tabanl\u0131 kimlik do\u011frulama devre d\u0131\u015f\u0131 b\u0131rak\u0131labilir.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Belirli kullan\u0131c\u0131lara veya gruplara sudo yetkileri verilebilir.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131 Kurallar\u0131:<\/strong> <code>ufw<\/code> (Uncomplicated Firewall) veya <code>firewalld<\/code> gibi g\u00fcvenlik duvar\u0131 ara\u00e7lar\u0131 kurulup temel kurallar (\u00f6rne\u011fin, SSH ve HTTP\/S portlar\u0131n\u0131 a\u00e7ma) yap\u0131land\u0131r\u0131labilir.<\/p>\n<h4>Yaz\u0131l\u0131m Kurulumu ve G\u00fcncelleme<\/h4>\n<p>Bir uygulaman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olan t\u00fcm yaz\u0131l\u0131mlar cloud-config ile kurulabilir:<\/p>\n<p>*   <strong>Web Sunucular\u0131:<\/strong> Nginx, Apache HTTP Server gibi web sunucular\u0131 y\u00fcklenebilir ve temel yap\u0131land\u0131rmalar\u0131 yap\u0131labilir.<br \/>\n*   <strong>Veritabanlar\u0131:<\/strong> MySQL, PostgreSQL veya MongoDB gibi veritaban\u0131 sunucular\u0131 kurulabilir.<br \/>\n*   <strong>Programlama Dilleri ve \u00c7al\u0131\u015fma Zamanlar\u0131:<\/strong> Python, Node.js, Java Runtime Environment (JRE\/JDK) gibi diller ve \u00e7al\u0131\u015fma zamanlar\u0131 y\u00fcklenebilir.<br \/>\n*   <strong>Docker:<\/strong> Docker Engine ve Docker Compose gibi konteyner teknolojileri kurulabilir.<\/p>\n<h4>Uygulama Da\u011f\u0131t\u0131m\u0131<\/h4>\n<p>Cloud-config, basit uygulama da\u011f\u0131t\u0131m senaryolar\u0131 i\u00e7in de kullan\u0131labilir:<\/p>\n<p>*   <strong>Kod \u00c7ekme:<\/strong> Git deposundan uygulama kodunu sunucuya klonlama.<br \/>\n*   <strong>Ba\u011f\u0131ml\u0131l\u0131k Y\u00fckleme:<\/strong> <code>pip install -r requirements.txt<\/code> veya <code>npm install<\/code> gibi komutlarla uygulama ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fckleme.<br \/>\n*   <strong>Servis Ba\u015flatma:<\/strong> <code>systemd<\/code> servis dosyalar\u0131n\u0131 olu\u015fturma ve uygulamay\u0131 bir servis olarak ba\u015flatma.<\/p>\n<h4>Sistem Ayarlar\u0131<\/h4>\n<p>\u0130\u015fletim sisteminin temel ayarlar\u0131 otomatik olarak yap\u0131land\u0131r\u0131labilir:<\/p>\n<p>*   <strong>Zaman Dilimi ve Dil:<\/strong> Sunucunun co\u011frafi konumuna uygun zaman dilimi ve dil ayarlar\u0131 yap\u0131labilir.<br \/>\n*   <strong>Hostname:<\/strong> Anla\u015f\u0131l\u0131r ve benzersiz bir hostname atanabilir.<br \/>\n*   <strong>Cron \u0130\u015fleri:<\/strong> Periyodik g\u00f6revler i\u00e7in cron i\u015fleri tan\u0131mlanabilir.<\/p>\n<h4>\u0130zleme ve G\u00fcnl\u00fckleme Ara\u00e7lar\u0131n\u0131n Kurulumu<\/h4>\n<p>Modern altyap\u0131larda izleme ve g\u00fcnl\u00fckleme kritik \u00f6neme sahiptir. Cloud-config ile:<\/p>\n<p>*   <strong>Prometheus Node Exporter:<\/strong> Sistem metriklerini toplamak i\u00e7in Node Exporter kurulabilir.<br \/>\n*   <strong>ELK Stack Agentlar\u0131:<\/strong> Filebeat, Metricbeat gibi Elastic Stack ajanlar\u0131 kurulup yap\u0131land\u0131r\u0131labilir.<br \/>\n*   <strong>Log Y\u00f6netimi Ara\u00e7lar\u0131:<\/strong> Rsyslog veya syslog-ng gibi g\u00fcnl\u00fck y\u00f6netim ara\u00e7lar\u0131 yap\u0131land\u0131r\u0131labilir.<\/p>\n<h4>Veritaban\u0131 Ba\u015flatma ve \u0130lk Yap\u0131land\u0131rma<\/h4>\n<p>Bir veritaban\u0131 sunucusunun ilk kurulumunda, temel ayarlar ve kullan\u0131c\u0131lar cloud-config ile otomatikle\u015ftirilebilir:<\/p>\n<p>*   <strong>Veritaban\u0131 Ba\u015flatma:<\/strong> Veritaban\u0131 servisini ba\u015flatma.<br \/>\n*   <strong>\u0130lk Kullan\u0131c\u0131 Olu\u015fturma:<\/strong> Y\u00f6netici kullan\u0131c\u0131s\u0131 ve temel veritabanlar\u0131 olu\u015fturma.<br \/>\n*   <strong>G\u00fcvenlik Ayarlar\u0131:<\/strong> Uzaktan eri\u015fim k\u0131s\u0131tlamalar\u0131 gibi g\u00fcvenlik ayarlar\u0131n\u0131 uygulama.<\/p>\n<h4>Docker Ortamlar\u0131<\/h4>\n<p>Docker&#8217;\u0131n yayg\u0131nla\u015fmas\u0131yla birlikte, cloud-config Docker host&#8217;lar\u0131n\u0131 haz\u0131rlamak i\u00e7in ideal bir ara\u00e7 haline gelmi\u015ftir:<\/p>\n<p>*   <strong>Docker Kurulumu:<\/strong> Docker Engine&#8217;i kurma ve gerekli kullan\u0131c\u0131lar\u0131 <code>docker<\/code> grubuna ekleme.<br \/>\n*   <strong>Docker Compose:<\/strong> <code>docker-compose.yml<\/code> dosyas\u0131n\u0131 sunucuya yerle\u015ftirme ve konteynerleri ba\u015flatma.<br \/>\n*   <strong>Konteyner G\u00f6r\u00fcnt\u00fclerini \u00c7ekme:<\/strong> Gerekli Docker g\u00f6r\u00fcnt\u00fclerini \u00f6nceden \u00e7ekme.<\/p>\n<p>Bu senaryolar, cloud-config&#8217;in ne kadar \u00e7ok y\u00f6nl\u00fc oldu\u011funu g\u00f6stermektedir. Ancak, her zaman en iyi uygulama y\u00f6ntemlerini ve g\u00fcvenlik hususlar\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak dikkatli bir \u015fekilde kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h3>Cloud-Config Kullan\u0131m\u0131n\u0131n Avantajlar\u0131<\/h3>\n<p>Cloud-config, bulut altyap\u0131s\u0131 otomasyonunda bir\u00e7ok \u00f6nemli avantaj sunar:<\/p>\n<p>*   <strong>Tekrarlanabilirlik (Repeatability):<\/strong> Ayn\u0131 cloud-config beti\u011fini kullanarak, her seferinde tamamen ayn\u0131 yap\u0131land\u0131rmaya sahip birden fazla sunucu \u00f6rne\u011fi olu\u015fturulabilir. Bu, &#8220;snowflake&#8221; sunucular\u0131n (benzersiz ve manuel olarak yap\u0131land\u0131r\u0131lm\u0131\u015f sunucular) olu\u015fumunu engeller.<br \/>\n*   <strong>Otomasyon (Automation):<\/strong> Manuel yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu, insan hatas\u0131n\u0131 azalt\u0131r ve sunucu haz\u0131rlama s\u00fcrecini h\u0131zland\u0131r\u0131r. Da\u011f\u0131t\u0131m boru hatlar\u0131na (CI\/CD pipelines) kolayca entegre edilebilir.<br \/>\n*   <strong>H\u0131z (Speed):<\/strong> Bir sunucuyu s\u0131f\u0131rdan \u00e7al\u0131\u015fmaya haz\u0131r hale getirme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131salt\u0131r. Dakikalar i\u00e7inde karma\u015f\u0131k bir ortam kurulabilir.<br \/>\n*   <strong>Tutarl\u0131l\u0131k (Consistency):<\/strong> T\u00fcm sunucular\u0131n belirli bir standart yap\u0131land\u0131rmaya sahip olmas\u0131n\u0131 sa\u011flar. Bu, sorun gidermeyi kolayla\u015ft\u0131r\u0131r ve ortamlar aras\u0131nda davran\u0131\u015f farkl\u0131l\u0131klar\u0131n\u0131 azalt\u0131r.<br \/>\n*   <strong>Hata Azaltma (Error Reduction):<\/strong> Manuel yap\u0131land\u0131rmada s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan yaz\u0131m hatalar\u0131, atlanan ad\u0131mlar gibi insan kaynakl\u0131 hatalar\u0131 minimize eder.<br \/>\n*   <strong>Altyap\u0131 Kodu Olarak (Infrastructure as Code &#8211; IaC):<\/strong> Sunucu yap\u0131land\u0131rmas\u0131n\u0131 kod olarak tan\u0131mlayarak, versiyon kontrol sistemlerinde (Git gibi) saklanmas\u0131na olanak tan\u0131r. Bu, de\u011fi\u015fikliklerin izlenmesini, geri al\u0131nmas\u0131n\u0131 ve i\u015fbirli\u011fini kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Platform Ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131 (Platform Agnosticism):<\/strong> Cloud-init, \u00e7o\u011fu b\u00fcy\u00fck bulut sa\u011flay\u0131c\u0131s\u0131 ve sanalla\u015ft\u0131rma platformu taraf\u0131ndan desteklendi\u011fi i\u00e7in, ayn\u0131 cloud-config beti\u011fi farkl\u0131 platformlarda kullan\u0131labilir. Bu, sat\u0131c\u0131 kilitlenmesini azalt\u0131r.<br \/>\n*   <strong>Basitlik:<\/strong> Karma\u015f\u0131k yap\u0131land\u0131rma y\u00f6netimi ara\u00e7lar\u0131na g\u00f6re daha basit bir \u00f6\u011frenme e\u011frisine sahiptir, \u00f6zellikle temel bootstrapping g\u00f6revleri i\u00e7in.<\/p>\n<p>Bu avantajlar, cloud-config&#8217;i modern, dinamik ve \u00f6l\u00e7eklenebilir bulut ortamlar\u0131nda vazge\u00e7ilmez bir ara\u00e7 haline getirmektedir.<\/p>\n<h3>S\u0131n\u0131rlamalar ve Dikkat Edilmesi Gerekenler<\/h3>\n<p>Cloud-config g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, belirli s\u0131n\u0131rlamalar\u0131 vard\u0131r ve baz\u0131 durumlarda dikkatli kullan\u0131lmas\u0131 gerekir:<\/p>\n<p>*   <strong>Sadece \u0130lk \u00d6ny\u00fcklemede (First Boot Only):<\/strong> Cloud-config, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, bir sanal makinenin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn yaln\u0131zca ilk \u00f6ny\u00fckleme an\u0131nda \u00e7al\u0131\u015f\u0131r. Sunucu bir kez yap\u0131land\u0131r\u0131ld\u0131ktan sonra, cloud-config beti\u011finde yap\u0131lan de\u011fi\u015fiklikler otomatik olarak uygulanmaz. S\u00fcrekli yap\u0131land\u0131rma y\u00f6netimi veya sunucular\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca g\u00fcncel kalmas\u0131n\u0131 sa\u011flamak i\u00e7in Ansible, Puppet, Chef gibi ara\u00e7lar gereklidir. Bu, cloud-config&#8217;i &#8220;bootstrapping&#8221; i\u00e7in ideal yaparken, &#8220;s\u00fcrekli yap\u0131land\u0131rma&#8221; i\u00e7in yetersiz k\u0131lar.<br \/>\n*   <strong>Hata Ay\u0131klama (Debugging):<\/strong> Cloud-config betiklerinde hata ay\u0131klamak bazen zor olabilir. Betiklerin neden ba\u015far\u0131s\u0131z oldu\u011funu anlamak i\u00e7in <code>\/var\/log\/cloud-init.log<\/code> ve <code>\/var\/log\/cloud-init-output.log<\/code> dosyalar\u0131n\u0131 incelemek gerekir. Komutlar arka planda \u00e7al\u0131\u015f\u0131r ve g\u00f6rsel bir geri bildirim sa\u011flamaz.<br \/>\n*   <strong>Karma\u015f\u0131kl\u0131k (Complexity):<\/strong> \u00c7ok karma\u015f\u0131k, \u00e7ok a\u015famal\u0131 veya ko\u015fullu mant\u0131k gerektiren senaryolar i\u00e7in cloud-config ideal de\u011fildir. <code>runcmd<\/code> i\u00e7inde karma\u015f\u0131k bash betikleri yazmak m\u00fcmk\u00fcn olsa da, bu t\u00fcr betiklerin y\u00f6netimi ve okunabilirli\u011fi zamanla zorla\u015fabilir. Bu durumlarda, daha geli\u015fmi\u015f yap\u0131land\u0131rma y\u00f6netimi ara\u00e7lar\u0131 daha uygun olabilir.<br \/>\n*   <strong>G\u00fcvenlik (Security):<\/strong> Hassas verilerin (API anahtarlar\u0131, veritaban\u0131 parolalar\u0131, \u00f6zel anahtarlar) do\u011frudan cloud-config dosyalar\u0131na g\u00f6m\u00fclmesi b\u00fcy\u00fck bir g\u00fcvenlik riskidir. Cloud-config dosyalar\u0131 genellikle bulut sa\u011flay\u0131c\u0131n\u0131n kullan\u0131c\u0131 verisi (user data) olarak iletilir ve bu veri bazen bulut sa\u011flay\u0131c\u0131n\u0131n API&#8217;leri arac\u0131l\u0131\u011f\u0131yla veya loglarda g\u00f6r\u00fclebilir. Bunun yerine, bulut sa\u011flay\u0131c\u0131n\u0131n secret management servisleri (AWS Secrets Manager, Azure Key Vault, Google Secret Manager) veya \u00fc\u00e7\u00fcnc\u00fc taraf \u00e7\u00f6z\u00fcmler (HashiCorp Vault) kullan\u0131lmal\u0131 ve bu s\u0131rlar \u00e7al\u0131\u015fma zaman\u0131nda \u00e7ekilmelidir.<br \/>\n*   <strong>YAML Sentaks\u0131 (YAML Syntax):<\/strong> YAML&#8217;\u0131n girintilemeye dayal\u0131 yap\u0131s\u0131, k\u00fc\u00e7\u00fck bir bo\u015fluk hatas\u0131n\u0131n bile t\u00fcm yap\u0131land\u0131rmay\u0131 ge\u00e7ersiz k\u0131lmas\u0131na neden olabilir. Bu durum, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k cloud-config dosyalar\u0131nda hata ay\u0131klamay\u0131 zorla\u015ft\u0131rabilir.<br \/>\n*   <strong>\u0130dempotentlik:<\/strong> Cloud-init mod\u00fcllerinin \u00e7o\u011fu idempotenttir (yani, birden fazla \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda ayn\u0131 sonucu verir ve sistemin durumunu de\u011fi\u015ftirmez). Ancak, <code>runcmd<\/code> i\u00e7inde yaz\u0131lan \u00f6zel betiklerin idempotent oldu\u011fundan emin olmak geli\u015ftiricinin sorumlulu\u011fundad\u0131r. \u0130dempotent olmayan betikler, sunucu yeniden yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda veya betik yanl\u0131\u015fl\u0131kla tekrar \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda istenmeyen sonu\u00e7lara yol a\u00e7abilir.<br \/>\n*   <strong>Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi:<\/strong> <code>packages<\/code> b\u00f6l\u00fcm\u00fc paket ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 otomatik olarak \u00e7\u00f6zerken, <code>runcmd<\/code> i\u00e7indeki betiklerde komutlar aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131klar\u0131 (\u00f6rne\u011fin, bir servisi ba\u015flatmadan \u00f6nce bir paketin tamamen kurulmu\u015f olmas\u0131) manuel olarak y\u00f6netmek gerekebilir.<\/p>\n<p>Bu s\u0131n\u0131rlamalar\u0131 anlamak, cloud-config&#8217;i ne zaman ve nas\u0131l kullanaca\u011f\u0131n\u0131za dair bilin\u00e7li kararlar vermenizi sa\u011flar. Genellikle, cloud-config&#8217;i temel bootstrapping ve ilk kurulum i\u00e7in kullanmak, daha sonra s\u00fcrekli y\u00f6netim i\u00e7in ba\u015fka bir yap\u0131land\u0131rma y\u00f6netimi arac\u0131na ge\u00e7mek en iyi yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Cloud-Config ve Di\u011fer Altyap\u0131 Y\u00f6netimi Ara\u00e7lar\u0131<\/h3>\n<p>Cloud-config, altyap\u0131 otomasyonu ekosistemindeki bir\u00e7ok ara\u00e7tan sadece biridir ve genellikle di\u011fer ara\u00e7larla birlikte en etkili \u015fekilde kullan\u0131l\u0131r. Cloud-config&#8217;in temel rol\u00fc &#8220;bootstrapping&#8221; iken, di\u011fer ara\u00e7lar farkl\u0131 a\u015famalarda devreye girer.<\/p>\n<h4>Fark\u0131: Bootstrapping vs. S\u00fcrekli Y\u00f6netim<\/h4>\n<p>*   <strong>Cloud-Config (Bootstrapping):<\/strong> Bir sunucunun ilk \u00f6ny\u00fckleme an\u0131nda, i\u015fletim sistemi g\u00f6r\u00fcnt\u00fcs\u00fcnden \u00e7al\u0131\u015fmaya haz\u0131r bir duruma gelmesi i\u00e7in gerekli olan temel kurulum ve yap\u0131land\u0131rmay\u0131 yapar. Kullan\u0131c\u0131lar\u0131 ayarlar, temel paketleri kurar, dosyalar\u0131 yazar ve ilk servisleri ba\u015flat\u0131r. Tek seferlik bir i\u015flemdir.<br \/>\n*   <strong>Yap\u0131land\u0131rma Y\u00f6netimi Ara\u00e7lar\u0131 (S\u00fcrekli Y\u00f6netim):<\/strong> Ansible, Puppet, Chef, SaltStack gibi ara\u00e7lar, sunucular\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca yap\u0131land\u0131rmalar\u0131n\u0131 y\u00f6netmek, g\u00fcncellemeleri uygulamak, de\u011fi\u015fiklikleri izlemek ve istenen durumu s\u00fcrd\u00fcrmek i\u00e7in kullan\u0131l\u0131r. Bu ara\u00e7lar, sunucular \u00e7al\u0131\u015f\u0131rken tekrar tekrar \u00e7al\u0131\u015ft\u0131r\u0131labilir ve sistemin her zaman belirli bir durumda olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Birlikte Kullan\u0131m Senaryolar\u0131<\/h4>\n<p>Cloud-config, yap\u0131land\u0131rma y\u00f6netimi ara\u00e7lar\u0131 i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131 olabilir:<\/p>\n<p>1.  <strong>Arac\u0131 Kurulumu:<\/strong> Cloud-config, bir sunucu ba\u015flat\u0131l\u0131rken Puppet agent&#8217;\u0131, Chef client&#8217;\u0131 veya Ansible&#8217;\u0131n SSH ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (Python gibi) kurmak i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, bir sunucu ba\u015flat\u0131ld\u0131\u011f\u0131nda cloud-config ile Puppet agent paketi y\u00fcklenir ve otomatik olarak Puppet master&#8217;a ba\u011flanacak \u015fekilde yap\u0131land\u0131r\u0131l\u0131r.<br \/>\n2.  <strong>\u0130lk Ba\u011flant\u0131 ve Kimlik Do\u011frulama:<\/strong> Cloud-config, yap\u0131land\u0131rma y\u00f6netimi arac\u0131n\u0131n sunucuya ba\u011flanmas\u0131 i\u00e7in gerekli olan SSH anahtarlar\u0131n\u0131 veya di\u011fer kimlik do\u011frulama mekanizmalar\u0131n\u0131 kurabilir.<br \/>\n3.  <strong>Temel G\u00fcvenlik ve A\u011f Ayarlar\u0131:<\/strong> Bir sunucunun a\u011fa ba\u011flanabilmesi ve yap\u0131land\u0131rma y\u00f6netimi arac\u0131s\u0131n\u0131n ba\u011flant\u0131 kurabilmesi i\u00e7in gerekli temel a\u011f ve g\u00fcvenlik duvar\u0131 ayarlar\u0131 cloud-config ile yap\u0131l\u0131r.<br \/>\n4.  <strong>Hibrit Yakla\u015f\u0131m:<\/strong> Cloud-config, sunucunun temel i\u015fletim sistemi seviyesindeki yap\u0131land\u0131rmas\u0131n\u0131 (kullan\u0131c\u0131lar, paketler, dosya sistemleri) yaparken, daha karma\u015f\u0131k uygulama da\u011f\u0131t\u0131m\u0131 ve s\u00fcrekli y\u00f6netim g\u00f6revleri i\u00e7in Ansible veya Chef gibi ara\u00e7lar kullan\u0131l\u0131r. Bu, her arac\u0131n kendi g\u00fc\u00e7l\u00fc y\u00f6nlerini kullanmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Altyap\u0131 Sa\u011flama Ara\u00e7lar\u0131 (Infrastructure Provisioning Tools) ile Entegrasyon<\/h4>\n<p>Cloud-config, genellikle Terraform, AWS CloudFormation, Azure Resource Manager veya Google Cloud Deployment Manager gibi altyap\u0131 sa\u011flama (provisioning) ara\u00e7lar\u0131yla birlikte kullan\u0131l\u0131r. Bu ara\u00e7lar, bulut altyap\u0131s\u0131n\u0131 (sanal makineler, a\u011flar, depolama vb.) tan\u0131mlamak ve olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>Kullan\u0131c\u0131 Verisi (User Data):<\/strong> Altyap\u0131 sa\u011flama ara\u00e7lar\u0131, bir sanal makine \u00f6rne\u011fi olu\u015ftururken cloud-config beti\u011fini &#8220;kullan\u0131c\u0131 verisi&#8221; (user data) olarak VM&#8217;ye iletir. VM ba\u015flat\u0131ld\u0131\u011f\u0131nda, cloud-init bu kullan\u0131c\u0131 verisini okur ve beti\u011fi uygular.<br \/>\n    \u00d6rne\u011fin, Terraform&#8217;da bir AWS EC2 \u00f6rne\u011fi olu\u015ftururken, cloud-config beti\u011fi <code>user_data<\/code> parametresine ge\u00e7irilir:<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_instance\" \"web_server\" {\n      ami           = \"ami-0abcdef1234567890\"\n      instance_type = \"t2.micro\"\n      user_data     = file(\"cloud-config.yaml\") # cloud-config dosyas\u0131n\u0131 oku\n      tags = {\n        Name = \"WebServer\"\n      }\n    }<\/code><\/pre>\n<p>Bu entegrasyonlar sayesinde, t\u00fcm altyap\u0131 ve ilk yap\u0131land\u0131rma, kod olarak tek bir yerden y\u00f6netilebilir, bu da DevOps s\u00fcre\u00e7lerini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirir ve h\u0131zland\u0131r\u0131r. Cloud-config, bu b\u00fcy\u00fck resmin \u00f6nemli bir par\u00e7as\u0131d\u0131r ve sunucular\u0131n ilk ad\u0131mlar\u0131n\u0131 otomatikle\u015ftirmede kilit bir rol oynar.<\/p>\n<h3>Pratik Bir \u00d6rnek: Basit Bir Web Sunucusu Kurulumu<\/h3>\n<p>\u015eimdi, cloud-config&#8217;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6stermek i\u00e7in basit bir Nginx web sunucusu kuran bir \u00f6rnek betik olu\u015ftural\u0131m. Bu betik, a\u015fa\u011f\u0131daki g\u00f6revleri otomatikle\u015ftirecektir:<\/p>\n<p>1.  <code>webadmin<\/code> ad\u0131nda yeni bir kullan\u0131c\u0131 olu\u015fturma ve ona sudo yetkisi verme.<br \/>\n2.  <code>webadmin<\/code> kullan\u0131c\u0131s\u0131 i\u00e7in SSH anahtar\u0131 ekleme.<br \/>\n3.  Nginx web sunucusunu kurma.<br \/>\n4.  Nginx&#8217;in varsay\u0131lan yap\u0131land\u0131rma dosyas\u0131n\u0131 (bir <code>index.html<\/code> ile) \u00fczerine yazma.<br \/>\n5.  Nginx servisini ba\u015flatma ve sistem ba\u015flang\u0131c\u0131nda otomatik ba\u015flamas\u0131n\u0131 sa\u011flama.<br \/>\n6.  UFW (Uncomplicated Firewall) kurma ve SSH (22) ile HTTP (80) portlar\u0131na izin verme.<\/p>\n<pre><code class=\"language-yaml\">#cloud-config\n\n<h2>1. Yeni bir kullan\u0131c\u0131 olu\u015ftur ve SSH anahtar\u0131n\u0131 ekle<\/h2>\nusers:\n  - name: webadmin\n    sudo: ALL=(ALL) NOPASSWD:ALL\n    groups: users, sudo\n    shell: \/bin\/bash\n    ssh_authorized_keys:\n      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqY...your_webadmin_public_key_here... user@example.com\n\n<h2>2. Sistem zaman dilimini ayarla<\/h2>\ntimezone: Europe\/Istanbul\n\n<h2>3. Gerekli paketleri y\u00fckle (nginx ve ufw)<\/h2>\npackages:\n  - nginx\n  - ufw\n\n<h2>4. Nginx i\u00e7in varsay\u0131lan bir HTML dosyas\u0131 olu\u015ftur<\/h2>\nwrite_files:\n  - path: \/var\/www\/html\/index.html\n    permissions: '0644'\n    owner: www-data:www-data\n    content: |\n      <!DOCTYPE html>\n      <html>\n      <head>\n          <title>Merhaba Nginx!<\/title>\n          <style>\n              body { font-family: Arial, sans-serif; background-color: #f0f0f0; text-align: center; padding-top: 50px; }\n              .container { background-color: #ffffff; margin: auto; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); max-width: 600px; }\n              h1 { color: #333; }\n              p { color: #666; }\n          <\/style>\n      <\/head>\n      <body>\n          <div class=\"container\">\n              \n              <p>Bu web sunucusu cloud-config ile otomatik olarak kuruldu ve yap\u0131land\u0131r\u0131ld\u0131.<\/p>\n              <p>Nginx ba\u015far\u0131yla \u00e7al\u0131\u015f\u0131yor!<\/p>\n          <\/div>\n      <\/body>\n      <\/html>\n\n<h2>5. Komutlar\u0131 \u00e7al\u0131\u015ft\u0131r: Nginx'i ba\u015flat ve UFW'yi yap\u0131land\u0131r<\/h2>\nruncmd:\n  # Nginx servisini etkinle\u015ftir ve ba\u015flat\n  - systemctl enable nginx\n  - systemctl start nginx\n\n  # UFW'yi etkinle\u015ftir ve kurallar\u0131 ekle\n  - ufw allow OpenSSH\n  - ufw allow 'Nginx HTTP'\n  - ufw --force enable<\/code><\/pre>\n<p><strong>Bu Beti\u011fi Nas\u0131l Kullan\u0131rs\u0131n\u0131z:<\/strong><\/p>\n<p>1.  Yukar\u0131daki kodu <code>cloud-config.yaml<\/code> gibi bir dosyaya kaydedin.<br \/>\n2.  <code>your_webadmin_public_key_here<\/code> k\u0131sm\u0131n\u0131 kendi SSH genel anahtar\u0131n\u0131zla de\u011fi\u015ftirin. Bu, <code>webadmin<\/code> kullan\u0131c\u0131s\u0131 olarak sunucuya SSH ile ba\u011flanman\u0131z\u0131 sa\u011flayacakt\u0131r.<br \/>\n3.  Bulut sa\u011flay\u0131c\u0131n\u0131z\u0131n (AWS, Azure, GCP vb.) sanal makine olu\u015fturma aray\u00fcz\u00fcnde veya Terraform\/CloudFormation gibi bir IaC arac\u0131 kullan\u0131rken, bu <code>cloud-config.yaml<\/code> dosyas\u0131n\u0131n i\u00e7eri\u011fini &#8220;kullan\u0131c\u0131 verisi&#8221; (user data) olarak sa\u011flay\u0131n.<br \/>\n4.  Yeni sanal makineyi ba\u015flat\u0131n.<\/p>\n<p>VM ba\u015flat\u0131ld\u0131\u011f\u0131nda, cloud-init arac\u0131 bu beti\u011fi i\u015fleyecek ve a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 ger\u00e7ekle\u015ftirecektir:<br \/>\n*   <code>webadmin<\/code> kullan\u0131c\u0131s\u0131n\u0131 olu\u015fturacak ve belirtti\u011finiz SSH anahtar\u0131n\u0131 ekleyecektir.<br \/>\n*   Zaman dilimini ayarlayacakt\u0131r.<br \/>\n*   Nginx ve UFW paketlerini y\u00fckleyecektir.<br \/>\n*   <code>\/var\/www\/html\/index.html<\/code> dosyas\u0131n\u0131 belirtilen i\u00e7erikle olu\u015fturacakt\u0131r.<br \/>\n*   Nginx servisini ba\u015flatacak ve otomatik ba\u015flamas\u0131n\u0131 sa\u011flayacakt\u0131r.<br \/>\n*   UFW&#8217;yi yap\u0131land\u0131racak ve SSH ile HTTP trafi\u011fine izin verecektir.<\/p>\n<p>Yap\u0131land\u0131rma tamamland\u0131\u011f\u0131nda, sunucunun genel IP adresine bir web taray\u0131c\u0131s\u0131 \u00fczerinden eri\u015ferek &#8220;Ho\u015f Geldiniz!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz. Ayr\u0131ca, <code>webadmin<\/code> kullan\u0131c\u0131s\u0131 ve kendi SSH anahtar\u0131n\u0131zla sunucuya SSH yapabilmelisiniz. Bu \u00f6rnek, cloud-config&#8217;in basit ama g\u00fc\u00e7l\u00fc otomasyon yeteneklerini net bir \u015fekilde ortaya koymaktad\u0131r.<\/p>\n<h3>En \u0130yi Uygulamalar (Best Practices)<\/h3>\n<p>Cloud-config scripting&#8217;i etkili ve g\u00fcvenli bir \u015fekilde kullanmak i\u00e7in baz\u0131 en iyi uygulamalar\u0131 takip etmek \u00f6nemlidir:<\/p>\n<p>*   <strong>Mod\u00fclerlik ve Yeniden Kullan\u0131labilirlik:<\/strong> B\u00fcy\u00fck ve karma\u015f\u0131k cloud-config betikleri yerine, g\u00f6revleri mant\u0131ksal olarak b\u00f6lerek daha k\u00fc\u00e7\u00fck, mod\u00fcler betikler olu\u015fturmaya \u00e7al\u0131\u015f\u0131n. Bu, betiklerin okunabilirli\u011fini, bak\u0131m\u0131n\u0131 ve yeniden kullan\u0131labilirli\u011fini art\u0131r\u0131r. \u00d6rne\u011fin, kullan\u0131c\u0131 y\u00f6netimi i\u00e7in ayr\u0131 bir betik, paket kurulumu i\u00e7in ayr\u0131 bir betik olabilir.<br \/>\n*   <strong>Versiyon Kontrol\u00fc:<\/strong> T\u00fcm cloud-config dosyalar\u0131n\u0131z\u0131 Git gibi bir versiyon kontrol sisteminde saklay\u0131n. Bu, de\u011fi\u015fikliklerin izlenmesini, geri al\u0131nmas\u0131n\u0131, i\u015fbirli\u011fini ve denetlenebilirli\u011fi sa\u011flar. Her de\u011fi\u015fiklik i\u00e7in anlaml\u0131 commit mesajlar\u0131 kullan\u0131n.<br \/>\n*   <strong>G\u00fcvenlik ve Hassas Veri Y\u00f6netimi:<\/strong><br \/>\n    *   <strong>Asla<\/strong> hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 parolalar\u0131, \u00f6zel anahtarlar) do\u011frudan cloud-config dosyalar\u0131na g\u00f6mmeyin.<br \/>\n    *   Bunun yerine, bulut sa\u011flay\u0131c\u0131n\u0131z\u0131n secret management servislerini (AWS Secrets Manager, Azure Key Vault, Google Secret Manager) kullan\u0131n. Cloud-config beti\u011fi, bu servislerden s\u0131rlar\u0131 \u00e7al\u0131\u015fma zaman\u0131nda \u00e7ekmek i\u00e7in gerekli komutlar\u0131 i\u00e7erebilir.<br \/>\n    *   Ortam de\u011fi\u015fkenlerini veya bulut sa\u011flay\u0131c\u0131s\u0131n\u0131n meta veri servislerini kullanarak hassas olmayan yap\u0131land\u0131rma verilerini iletin.<br \/>\n*   <strong>Hata Kontrol\u00fc ve G\u00fcnl\u00fckleme:<\/strong> <code>runcmd<\/code> i\u00e7inde betikler yazarken, komutlar\u0131n ba\u015far\u0131yla tamamland\u0131\u011f\u0131ndan emin olmak i\u00e7in hata kontrol\u00fc (\u00f6rne\u011fin, <code>set -e<\/code> kullanarak) ve g\u00fcnl\u00fcklemeyi d\u00fc\u015f\u00fcn\u00fcn. Betiklerinizin <code>\/var\/log\/cloud-init.log<\/code> ve <code>\/var\/log\/cloud-init-output.log<\/code> dosyalar\u0131na anlaml\u0131 \u00e7\u0131kt\u0131lar yazd\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>\u0130dempotentlik:<\/strong> Betiklerinizi, birden fazla \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda sistem \u00fczerinde ayn\u0131 etkiyi yaratacak \u015fekilde yaz\u0131n. Cloud-init&#8217;in yerle\u015fik mod\u00fclleri genellikle idempotenttir, ancak <code>runcmd<\/code> i\u00e7indeki \u00f6zel betikler i\u00e7in bu garanti edilmez. \u00d6rne\u011fin, bir paketi kurarken, zaten kuruluysa tekrar kurmaya \u00e7al\u0131\u015fmamal\u0131d\u0131r.<br \/>\n*   <strong>Test Etme:<\/strong> Yeni cloud-config betiklerini her zaman k\u00fc\u00e7\u00fck, izole ortamlarda test edin. Geli\u015ftirme ortamlar\u0131nda veya test sanal makinelerinde \u00e7al\u0131\u015ft\u0131rarak beklenen sonu\u00e7lar\u0131 verdi\u011finden emin olun. Herhangi bir de\u011fi\u015fikli\u011fi \u00fcretim ortam\u0131na uygulamadan \u00f6nce kapsaml\u0131 testler yap\u0131n.<br \/>\n*   <strong>Minimalist Yakla\u015f\u0131m:<\/strong> Cloud-config&#8217;i sadece sunucunun ilk \u00f6ny\u00fckleme s\u0131ras\u0131nda ger\u00e7ekten ihtiya\u00e7 duydu\u011fu temel bootstrapping g\u00f6revleri i\u00e7in kullan\u0131n. Daha karma\u015f\u0131k, s\u00fcrekli veya dinamik yap\u0131land\u0131rma g\u00f6revleri i\u00e7in Ansible, Puppet, Chef gibi daha uygun ara\u00e7lara b\u0131rak\u0131n. Cloud-config, di\u011fer ara\u00e7lar\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in zemini haz\u0131rlamal\u0131d\u0131r.<br \/>\n*   <strong>Dok\u00fcmantasyon:<\/strong> Cloud-config betiklerinizi yorumlar ve a\u00e7\u0131klay\u0131c\u0131 isimlendirmelerle iyi bir \u015fekilde belgeleyin. Beti\u011fin ne yapt\u0131\u011f\u0131n\u0131, neden yap\u0131ld\u0131\u011f\u0131n\u0131 ve olas\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131 a\u00e7\u0131klay\u0131n.<br \/>\n*   <strong>G\u00fcnl\u00fckleri \u0130nceleme Al\u0131\u015fkanl\u0131\u011f\u0131:<\/strong> Bir sunucu cloud-config ile ba\u015flat\u0131ld\u0131\u011f\u0131nda, her zaman <code>\/var\/log\/cloud-init.log<\/code> ve <code>\/var\/log\/cloud-init-output.log<\/code> dosyalar\u0131n\u0131 kontrol etme al\u0131\u015fkanl\u0131\u011f\u0131 edinin. Bu dosyalar, yap\u0131land\u0131rma s\u00fcrecinde olu\u015fan sorunlar\u0131 ve hatalar\u0131 anlamak i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n*   <strong>YAML Do\u011frulama:<\/strong> YAML dosyalar\u0131n\u0131z\u0131 lint ara\u00e7lar\u0131 veya \u00e7evrimi\u00e7i do\u011frulay\u0131c\u0131lar kullanarak sentaks hatalar\u0131na kar\u015f\u0131 kontrol edin. K\u00fc\u00e7\u00fck bir girinti hatas\u0131 bile t\u00fcm beti\u011fi ge\u00e7ersiz k\u0131labilir.<\/p>\n<p>Bu en iyi uygulamalar\u0131 takip etmek, cloud-config scripting&#8217;inizi daha g\u00fcvenilir, y\u00f6netilebilir ve s\u00fcrd\u00fcr\u00fclebilir hale getirecektir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Cloud-config scripting, modern bulut altyap\u0131s\u0131 y\u00f6netiminin temel ta\u015flar\u0131ndan biridir. Bir sanal makinenin ilk \u00f6ny\u00fckleme an\u0131nda otomatik olarak yap\u0131land\u0131r\u0131lmas\u0131na olanak tan\u0131yarak, altyap\u0131 da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini devrim niteli\u011finde h\u0131zland\u0131rm\u0131\u015f ve otomatikle\u015ftirmi\u015ftir. Tekrarlanabilirlik, tutarl\u0131l\u0131k, h\u0131z ve hata azaltma gibi say\u0131s\u0131z avantaj\u0131yla, cloud-config, &#8220;Infrastructure as Code&#8221; felsefesinin pratik bir uygulamas\u0131n\u0131 sunar.<\/p>\n<p>Bu makalede, cloud-config&#8217;in ne oldu\u011funu, YAML tabanl\u0131 yap\u0131s\u0131n\u0131, kullan\u0131c\u0131 ve paket y\u00f6netiminden dosya yazmaya ve komut \u00e7al\u0131\u015ft\u0131rmaya kadar \u00e7e\u015fitli anahtar b\u00f6l\u00fcmlerini detayl\u0131 bir \u015fekilde inceledik. Nginx web sunucusu kurulumu gibi pratik bir \u00f6rnekle, cloud-config&#8217;in ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131labilece\u011fini g\u00f6sterdik. Ayr\u0131ca, cloud-config&#8217;in sadece ilk \u00f6ny\u00fckleme i\u00e7in tasarland\u0131\u011f\u0131 gibi \u00f6nemli s\u0131n\u0131rlamalar\u0131na ve hassas veri y\u00f6netimi gibi dikkat edilmesi gereken g\u00fcvenlik hususlar\u0131na da de\u011findik.<\/p>\n<p>Cloud-config, Ansible, Puppet veya Chef gibi yap\u0131land\u0131rma y\u00f6netimi ara\u00e7lar\u0131yla ve Terraform veya CloudFormation gibi altyap\u0131 sa\u011flama ara\u00e7lar\u0131yla birlikte kullan\u0131ld\u0131\u011f\u0131nda tam potansiyeline ula\u015f\u0131r. Bu entegrasyonlar sayesinde, t\u00fcm altyap\u0131 ya\u015fam d\u00f6ng\u00fcs\u00fc, kod olarak tan\u0131mlanabilir, versiyon kontrol\u00fcnde tutulabilir ve otomatikle\u015ftirilebilir.<\/p>\n<p>Dijital d\u00f6n\u00fc\u015f\u00fcm ve bulut bili\u015fimin h\u0131zla ilerledi\u011fi g\u00fcn\u00fcm\u00fczde, cloud-config gibi ara\u00e7lara hakim olmak, geli\u015ftiriciler, sistem y\u00f6neticileri ve DevOps m\u00fchendisleri i\u00e7in vazge\u00e7ilmez bir yetkinlik haline gelmi\u015ftir. Do\u011fru kullan\u0131ld\u0131\u011f\u0131nda, cloud-config, altyap\u0131 y\u00f6netimini basitle\u015ftirir, operasyonel verimlili\u011fi art\u0131r\u0131r ve ekiplerin daha h\u0131zl\u0131, daha g\u00fcvenilir bir \u015fekilde de\u011fer sunmas\u0131na olanak tan\u0131r. Gelecekte, bulut ortamlar\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 artt\u0131k\u00e7a, cloud-config ve benzeri otomasyon ara\u00e7lar\u0131n\u0131n \u00f6nemi daha da artacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri\nModern bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi ve sunucu sa\u011fla","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1341],"tags":[],"class_list":{"0":"post-37589","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cloud","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cloud-Config Scripting&#039;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloud-Config Scripting&#039;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri\" \/>\n<meta property=\"og:description\" content=\"Cloud-Config Scripting&#039;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri Modern bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi ve sunucu sa\u011fla\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T19:41:04+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri\",\"datePublished\":\"2026-01-09T19:41:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\"},\"wordCount\":4325,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Cloud\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\",\"name\":\"Cloud-Config Scripting'e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-09T19:41:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cloud-Config Scripting'e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/","og_locale":"tr_TR","og_type":"article","og_title":"Cloud-Config Scripting'e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri","og_description":"Cloud-Config Scripting'e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri Modern bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi ve sunucu sa\u011fla","og_url":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-09T19:41:04+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri","datePublished":"2026-01-09T19:41:04+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/"},"wordCount":4325,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Cloud"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/","url":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/","name":"Cloud-Config Scripting'e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-09T19:41:04+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/cloud-config-scriptinge-giris-otomasyon-ve-altyapi-yonetiminin-temelleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cloud-Config Scripting&#8217;e Giri\u015f: Otomasyon ve Altyap\u0131 Y\u00f6netiminin Temelleri"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37589"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37589\/revisions"}],"predecessor-version":[{"id":37590,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37589\/revisions\/37590"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}