{"id":42791,"date":"2026-06-23T14:08:01","date_gmt":"2026-06-23T11:08:01","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/"},"modified":"2026-06-23T14:08:24","modified_gmt":"2026-06-23T11:08:24","slug":"rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/","title":{"rendered":"Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin"},"content":{"rendered":"<p><main><\/p>\n<section>\n<h2>Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi. Tekrarlayan g\u00f6revleri manuel olarak yapmak hem zaman kayb\u0131na yol a\u00e7ar hem de insan hatas\u0131 riskini art\u0131r\u0131r. \u0130\u015fte tam bu noktada Ansible gibi g\u00fc\u00e7l\u00fc otomasyon ara\u00e7lar\u0131 devreye giriyor. Ansible, \u00f6zellikle altyap\u0131 y\u00f6netimi ve uygulama da\u011f\u0131t\u0131m\u0131 gibi alanlarda, karma\u015f\u0131k s\u00fcre\u00e7leri basitle\u015ftiren, tekrarlanabilir ve g\u00fcvenilir hale getiren bir otomasyon motorudur. Bu makalede, Rocky Linux 9 \u00fczerinde Ansible&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, temel yap\u0131land\u0131rmas\u0131n\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 ve ilk otomasyon g\u00f6revlerinizi nas\u0131l ger\u00e7ekle\u015ftirece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Konuya s\u0131f\u0131rdan ba\u015flayanlar i\u00e7in temel kavramlardan ba\u015flay\u0131p, daha deneyimli kullan\u0131c\u0131lar i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131na kadar geni\u015f bir yelpazede bilgi sunaca\u011f\u0131z. Rocky Linux 9 gibi modern bir i\u015fletim sisteminde Ansible&#8217;\u0131n kurulumu ve kullan\u0131m\u0131, sunucu altyap\u0131n\u0131z\u0131 daha verimli ve y\u00f6netilebilir hale getirmenin anahtar\u0131d\u0131r.<\/p>\n<\/section>\n<section>\n<h2>Ansible Nedir ve Neden Kullanmal\u0131s\u0131n\u0131z? Temel Kavramlar<\/h2>\n<p>Ansible, Red Hat taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir otomasyon, yaz\u0131l\u0131m da\u011f\u0131t\u0131m\u0131, g\u00f6rev y\u00fcr\u00fctme ve konfig\u00fcrasyon y\u00f6netimi arac\u0131d\u0131r. Ansible&#8217;\u0131n en dikkat \u00e7ekici \u00f6zelliklerinden biri, &#8220;agentless&#8221; (ajan gerektirmeyen) yap\u0131s\u0131d\u0131r. Bu, y\u00f6netmek istedi\u011finiz sunuculara herhangi bir ek yaz\u0131l\u0131m veya ajan kurman\u0131za gerek olmad\u0131\u011f\u0131 anlam\u0131na gelir. Ansible, SSH protokol\u00fcn\u00fc kullanarak hedef sistemlerle ileti\u015fim kurar. Bu basitlik, kurulumu ve bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131r. Ansible&#8217;\u0131n temel \u00e7al\u0131\u015fma prensibi, &#8220;playbook&#8221; ad\u0131 verilen YAML format\u0131ndaki dosyalard\u0131r. Bu playbook&#8217;lar, ger\u00e7ekle\u015ftirmek istedi\u011finiz g\u00f6revleri, yap\u0131land\u0131rmalar\u0131 ve s\u0131ralamalar\u0131 tan\u0131mlar. \u00d6rne\u011fin, bir web sunucusunu kurmak, bir veritaban\u0131n\u0131 yap\u0131land\u0131rmak veya bir uygulamay\u0131 da\u011f\u0131tmak gibi g\u00f6revleri playbook&#8217;lar arac\u0131l\u0131\u011f\u0131yla otomatikle\u015ftirebilirsiniz. Ansible&#8217;\u0131n bir di\u011fer \u00f6nemli bile\u015feni ise &#8220;mod\u00fcller&#8221;dir. Mod\u00fcller, belirli g\u00f6revleri yerine getiren k\u00fc\u00e7\u00fck kod par\u00e7ac\u0131klar\u0131d\u0131r. Ansible&#8217;\u0131n y\u00fczlerce yerle\u015fik mod\u00fcl\u00fc bulunur (\u00f6rne\u011fin, <code class=\"language-\">yum<\/code> mod\u00fcl\u00fc paket kurmak i\u00e7in, <code class=\"language-\">service<\/code> mod\u00fcl\u00fc servisleri y\u00f6netmek i\u00e7in, <code class=\"language-\">copy<\/code> mod\u00fcl\u00fc dosya kopyalamak i\u00e7in kullan\u0131l\u0131r). Kendi \u00f6zel mod\u00fcllerinizi de yazabilirsiniz. Ansible&#8217;\u0131n mimarisi genellikle bir &#8220;kontrol d\u00fc\u011f\u00fcm\u00fc&#8221; (control node) ve bir veya daha fazla &#8220;y\u00f6netilen d\u00fc\u011f\u00fcm&#8221;den (managed nodes) olu\u015fur. Kontrol d\u00fc\u011f\u00fcm\u00fc, Ansible&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z makinedir ve playbook&#8217;lar\u0131 y\u00f6netilen d\u00fc\u011f\u00fcmlere g\u00f6nderir. Y\u00f6netilen d\u00fc\u011f\u00fcmler ise otomasyonun uygulanaca\u011f\u0131 sunuculard\u0131r. Ansible&#8217;\u0131n kullan\u0131m\u0131, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli altyap\u0131larda veya s\u0131k g\u00fcncellenen uygulamalarda b\u00fcy\u00fck avantajlar sa\u011flar. Manuel yap\u0131lan i\u015flemlerin getirdi\u011fi yorgunluk ve hata pay\u0131n\u0131 ortadan kald\u0131rarak, ekiplerin daha stratejik i\u015flere odaklanmas\u0131na olanak tan\u0131r. Bu sayede altyap\u0131 tutarl\u0131l\u0131\u011f\u0131 sa\u011flan\u0131r, da\u011f\u0131t\u0131m s\u00fcre\u00e7leri h\u0131zlan\u0131r ve genel operasyonel verimlilik artar. Ansible&#8217;\u0131n bu esnek ve g\u00fc\u00e7l\u00fc yap\u0131s\u0131, onu modern DevOps pratiklerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline getirmi\u015ftir.<\/p>\n<\/section>\n<section>\n<h2>Rocky Linux 9&#8217;da Ansible Kurulumu: Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>Rocky Linux 9 \u00fczerine Ansible&#8217;\u0131 kurmak olduk\u00e7a basittir. Sisteminizin g\u00fcncel oldu\u011fundan emin olmakla ba\u015flayal\u0131m. Ard\u0131ndan, Ansible&#8217;\u0131n paketini kuraca\u011f\u0131z. Genellikle Ansible, Rocky Linux&#8217;un varsay\u0131lan paket depolar\u0131nda bulunur veya EPEL (Extra Packages for Enterprise Linux) deposu arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir hale gelir. \u0130lk ad\u0131m olarak, sisteminizin paket listesini g\u00fcncelleyin. Bu, en son g\u00fcncellemelerin ve paket bilgilerinin \u00e7ekilmesini sa\u011flar. Ard\u0131ndan, Ansible&#8217;\u0131 kurmak i\u00e7in <code class=\"language-\">dnf<\/code> paket y\u00f6neticisini kullanaca\u011f\u0131z. E\u011fer EPEL deposu kurulu de\u011filse, \u00f6ncelikle onu kurman\u0131z gerekebilir. EPEL deposu, Red Hat Enterprise Linux tabanl\u0131 da\u011f\u0131t\u0131mlar i\u00e7in ek yaz\u0131l\u0131m paketleri sunar. Bu depo, Ansible gibi daha fazla say\u0131da ve g\u00fcncel yaz\u0131l\u0131m\u0131 sisteminize eklemenizi sa\u011flar. Kurulum ad\u0131mlar\u0131 a\u015fa\u011f\u0131daki gibidir:<\/p>\n<h3>Ad\u0131m 1: Sistem Paketlerini G\u00fcncelleme<\/h3>\n<p>Herhangi bir kurulum yapmadan \u00f6nce, sisteminizin en g\u00fcncel paketlere sahip oldu\u011fundan emin olmak iyi bir pratiktir. Bu, olas\u0131 uyumluluk sorunlar\u0131n\u0131 \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">sudo dnf update -y<\/code><\/pre>\n<p>Bu komut, mevcut t\u00fcm paketleri g\u00fcncelleyecektir. <code class=\"language-\">-y<\/code> se\u00e7ene\u011fi, t\u00fcm onay istemlerini otomatik olarak kabul eder.<\/p>\n<h3>Ad\u0131m 2: EPEL Deposunu Kurma (Gerekirse)<\/h3>\n<p>Ansible&#8217;\u0131n en g\u00fcncel s\u00fcr\u00fcm\u00fcn\u00fc veya baz\u0131 ek mod\u00fclleri kullanmak i\u00e7in EPEL deposuna ihtiyac\u0131n\u0131z olabilir. E\u011fer sisteminizde EPEL deposu kurulu de\u011filse, a\u015fa\u011f\u0131daki komutla kurabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">sudo dnf install epel-release -y<\/code><\/pre>\n<p>EPEL deposunu kurduktan sonra, paket listesini tekrar g\u00fcncellemeniz \u00f6nerilir.<\/p>\n<pre><code class=\"language-bash\">sudo dnf update -y<\/code><\/pre>\n<h3>Ad\u0131m 3: Ansible&#8217;\u0131 Kurma<\/h3>\n<p>Art\u0131k Ansible&#8217;\u0131 <code class=\"language-\">dnf<\/code> paket y\u00f6neticisi ile kurmaya haz\u0131rs\u0131n\u0131z. Ansible&#8217;\u0131n ana paketi genellikle <code class=\"language-\">ansible<\/code> ad\u0131yla bulunur.<\/p>\n<pre><code class=\"language-bash\">sudo dnf install ansible -y<\/code><\/pre>\n<p>Bu komut, Ansible&#8217;\u0131 ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 sisteminize kuracakt\u0131r. Kurulum tamamland\u0131ktan sonra, Ansible&#8217;\u0131n ba\u015far\u0131yla kuruldu\u011funu do\u011frulamak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">ansible --version<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131, kurulan Ansible s\u00fcr\u00fcm\u00fcn\u00fc ve baz\u0131 ek bilgileri g\u00f6sterecektir. E\u011fer bu komut herhangi bir hata vermeden \u00e7al\u0131\u015f\u0131rsa, Ansible ba\u015far\u0131yla kurulmu\u015f demektir. Bu kurulum s\u00fcreci, Rocky Linux 9 \u00fczerinde Ansible&#8217;\u0131 kullanmaya ba\u015flamak i\u00e7in ilk ve en \u00f6nemli ad\u0131md\u0131r. Basit komutlarla bu i\u015flemi tamamlayarak otomasyon d\u00fcnyas\u0131na ad\u0131m atabilirsiniz.<\/p>\n<\/section>\n<section>\n<h2>Ansible Temel Yap\u0131land\u0131rmas\u0131: Envanter ve SSH Anahtarlar\u0131<\/h2>\n<p>Ansible&#8217;\u0131 kurduktan sonra, onu kullanmaya ba\u015flamadan \u00f6nce baz\u0131 temel yap\u0131land\u0131rmalar\u0131 yapmam\u0131z gerekiyor. Bu yap\u0131land\u0131rmalar, Ansible&#8217;\u0131n hangi sunucular\u0131 y\u00f6netece\u011fi ve bu sunuculara nas\u0131l ba\u011flanaca\u011f\u0131 gibi kritik bilgileri i\u00e7erir. \u0130ki anahtar bile\u015fen vard\u0131r: envanter (inventory) dosyas\u0131 ve SSH anahtar tabanl\u0131 kimlik do\u011frulama. Envanter dosyas\u0131, Ansible&#8217;\u0131n y\u00f6netece\u011fi t\u00fcm sunucular\u0131n bir listesini tutar. Bu sunucular\u0131 grupland\u0131rabilir, onlara de\u011fi\u015fkenler atayabilir ve Ansible komutlar\u0131n\u0131 belirli gruplara veya tekil sunuculara uygulayabilirsiniz. SSH anahtar tabanl\u0131 kimlik do\u011frulama ise, Ansible&#8217;\u0131n y\u00f6netilen sunuculara parola girmeden g\u00fcvenli bir \u015fekilde ba\u011flanmas\u0131n\u0131 sa\u011flar. Bu, otomasyon s\u00fcre\u00e7lerinde b\u00fcy\u00fck kolayl\u0131k sa\u011flar ve g\u00fcvenli\u011fi art\u0131r\u0131r.<\/p>\n<h3>Envanter Dosyas\u0131n\u0131 Yap\u0131land\u0131rma<\/h3>\n<p>Varsay\u0131lan olarak Ansible, envanter bilgilerini <code class=\"language-\">\/etc\/ansible\/hosts<\/code> dosyas\u0131nda saklar. Bu dosyay\u0131 d\u00fczenleyerek veya kendi \u00f6zel envanter dosyan\u0131z\u0131 olu\u015fturarak y\u00f6netmek istedi\u011finiz sunucular\u0131 tan\u0131mlayabilirsiniz. Basit bir envanter dosyas\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-ini\">[webservers]\nwebserver1.example.com\nwebserver2.example.com\n\n[databases]\ndbserver1.example.com ansible_user=root\ndbserver2.example.com ansible_user=admin\n<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<\/p>\n<ul>\n<li><code class=\"language-\">[webservers]<\/code> ve <code class=\"language-\">[databases]<\/code> gibi ba\u015fl\u0131klar, sunucular\u0131 gruplamak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code class=\"language-\">webserver1.example.com<\/code>, <code class=\"language-\">webserver2.example.com<\/code> gibi sat\u0131rlar, y\u00f6netilecek sunucular\u0131n ana bilgisayar adlar\u0131n\u0131 veya IP adreslerini belirtir.<\/li>\n<li><code class=\"language-\">dbserver1.example.com ansible_user=root<\/code> \u00f6rne\u011finde oldu\u011fu gibi, belirli bir sunucu i\u00e7in \u00f6zel de\u011fi\u015fkenler tan\u0131mlayabilirsiniz. <code class=\"language-\">ansible_user<\/code> de\u011fi\u015fkeni, bu sunucuya ba\u011flan\u0131rken kullan\u0131lacak kullan\u0131c\u0131y\u0131 belirtir. E\u011fer belirtilmezse, Ansible varsay\u0131lan olarak mevcut kullan\u0131c\u0131y\u0131 veya yap\u0131land\u0131r\u0131lm\u0131\u015f ba\u015fka bir kullan\u0131c\u0131y\u0131 kullanmaya \u00e7al\u0131\u015f\u0131r.<\/li>\n<\/ul>\n<p>Kendi envanter dosyan\u0131z\u0131 olu\u015fturduysan\u0131z, Ansible komutlar\u0131nda <code class=\"language-\">-i<\/code> se\u00e7ene\u011fi ile bu dosyay\u0131 belirtebilirsiniz. \u00d6rne\u011fin: <code class=\"language-\">ansible -i \/path\/to\/your\/inventory webservers -m ping<\/code>.<\/p>\n<h3>SSH Anahtar Tabanl\u0131 Kimlik Do\u011frulama Kurulumu<\/h3>\n<p>Ansible&#8217;\u0131n y\u00f6netilen sunuculara parola girmeden ba\u011flanabilmesi i\u00e7in SSH anahtar tabanl\u0131 kimlik do\u011frulama kullanmak en iyi pratiktir. Bu, otomasyonu daha ak\u0131c\u0131 ve g\u00fcvenli hale getirir.<\/p>\n<ol>\n<li><strong>SSH Anahtar \u00c7ifti Olu\u015fturma (Kontrol D\u00fc\u011f\u00fcm\u00fcnde):<\/strong> Ansible&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z makinede (kontrol d\u00fc\u011f\u00fcm\u00fc), hen\u00fcz bir SSH anahtar \u00e7iftiniz yoksa, a\u015fa\u011f\u0131daki komutla olu\u015fturabilirsiniz:\n<pre><code class=\"language-bash\">ssh-keygen -t rsa -b 4096<\/code><\/pre>\n<p>                Bu komut, varsay\u0131lan olarak <code class=\"language-\">~\/.ssh\/id_rsa<\/code> (\u00f6zel anahtar) ve <code class=\"language-\">~\/.ssh\/id_rsa.pub<\/code> (genel anahtar) dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r. G\u00fcvenlik i\u00e7in anahtar\u0131n\u0131za bir parola belirlemeniz \u00f6nerilir, ancak otomasyon s\u00fcre\u00e7lerinde parola sorulmas\u0131n\u0131 engellemek i\u00e7in parola belirlemeyebilirsiniz (bu durumda g\u00fcvenlik riski artar, dikkatli olunmal\u0131d\u0131r).<\/li>\n<li><strong>Genel Anahtar\u0131 Y\u00f6netilen Sunuculara Kopyalama:<\/strong> Olu\u015fturdu\u011funuz genel anahtar\u0131, y\u00f6netmek istedi\u011finiz t\u00fcm sunuculara kopyalaman\u0131z gerekir. Bunun i\u00e7in <code class=\"language-\">ssh-copy-id<\/code> komutunu kullanabilirsiniz:\n<pre><code class=\"language-bash\">ssh-copy-id kullanici_adi@yonetilen_sunucu_ip_veya_hostname<\/code><\/pre>\n<p>                \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">ssh-copy-id user@192.168.1.100<\/code><\/pre>\n<p>                Bu komutu, y\u00f6netmek istedi\u011finiz her sunucu i\u00e7in ilgili kullan\u0131c\u0131 ad\u0131 ve IP adresi ile \u00e7al\u0131\u015ft\u0131rman\u0131z gerekecektir. \u0130lk seferde sunucu parolas\u0131n\u0131 girmeniz istenecektir. Bu i\u015flem, genel anahtar\u0131n\u0131z\u0131 y\u00f6netilen sunucudaki <code class=\"language-\">~\/.ssh\/authorized_keys<\/code> dosyas\u0131na ekleyecektir.<\/li>\n<li><strong>Ba\u011flant\u0131y\u0131 Test Etme:<\/strong> Anahtarlar kopyaland\u0131ktan sonra, parola sormadan y\u00f6netilen sunucuya SSH ile ba\u011flanabildi\u011finizi kontrol edin:\n<pre><code class=\"language-bash\">ssh kullanici_adi@yonetilen_sunucu_ip_veya_hostname<\/code><\/pre>\n<p>                E\u011fer parola sormadan ba\u011flanabiliyorsan\u0131z, SSH anahtar tabanl\u0131 kimlik do\u011frulama ba\u015far\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r.<\/li>\n<\/ol>\n<p>Bu temel yap\u0131land\u0131rmalar tamamland\u0131ktan sonra, Ansible&#8217;\u0131 kullanarak ilk otomasyon g\u00f6revlerinizi ger\u00e7ekle\u015ftirmeye haz\u0131rs\u0131n\u0131z. Envanter dosyan\u0131z, Ansible&#8217;\u0131n hangi sistemlerle konu\u015faca\u011f\u0131n\u0131 belirlerken, SSH anahtarlar\u0131n\u0131z bu ileti\u015fimin g\u00fcvenli ve sorunsuz olmas\u0131n\u0131 sa\u011flar.<\/p>\n<\/section>\n<section>\n<h2>\u0130lk Ansible Playbook&#8217;unuzu Yazma: Basit Bir Ping \u00d6rne\u011fi<\/h2>\n<p>Art\u0131k Ansible&#8217;\u0131n kurulumunu tamamlad\u0131k ve temel yap\u0131land\u0131rmalar\u0131n\u0131 yapt\u0131k. \u015eimdi s\u0131ra geldi ilk Ansible playbook&#8217;umuzu yazmaya ve \u00e7al\u0131\u015ft\u0131rmaya. Playbook&#8217;lar, Ansible&#8217;\u0131n otomasyon g\u00f6revlerini tan\u0131mlad\u0131\u011f\u0131 YAML format\u0131ndaki dosyalard\u0131r. Bu dosyalar, okunabilir ve anla\u015f\u0131l\u0131r bir \u015fekilde otomasyon ad\u0131mlar\u0131n\u0131 belirtir. \u0130lk playbook&#8217;umuz, envanterimizdeki sunuculara ping atarak Ansible&#8217;\u0131n \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 ve sunuculara eri\u015fip eri\u015femedi\u011fini kontrol etmek olacakt\u0131r. Bu, en temel ve en yayg\u0131n kullan\u0131lan testlerden biridir.<\/p>\n<h3>Playbook Dosyas\u0131n\u0131 Olu\u015fturma<\/h3>\n<p>Bir metin d\u00fczenleyici kullanarak <code class=\"language-\">check_servers.yml<\/code> ad\u0131nda yeni bir dosya olu\u015ftural\u0131m. Bu dosyan\u0131n i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olacakt\u0131r:<\/p>\n<pre><code class=\"language-yaml\">---\n- name: Sunucular\u0131 Kontrol Etme\n  hosts: all\n  gather_facts: no\n  tasks:\n    - name: Ping sunucular\n      ping:\n<\/code><\/pre>\n<p>Bu playbook&#8217;un a\u00e7\u0131klamas\u0131n\u0131 yapal\u0131m:<\/p>\n<ul>\n<li><code class=\"language-\">---<\/code>: YAML dosyas\u0131n\u0131n ba\u015flang\u0131c\u0131n\u0131 belirtir.<\/li>\n<li><code class=\"language-\">- name: Sunucular\u0131 Kontrol Etme<\/code>: Bu playbook i\u00e7in bir isimdir. Ansible, playbook&#8217;lar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131rken bu ismi ekranda g\u00f6sterecektir.<\/li>\n<li><code class=\"language-\">hosts: all<\/code>: Bu playbook&#8217;un envanterdeki t\u00fcm sunuculara uygulanaca\u011f\u0131n\u0131 belirtir. <code class=\"language-\">all<\/code> yerine belirli bir grup ad\u0131 (\u00f6rne\u011fin, <code class=\"language-\">webservers<\/code>) da kullanabilirsiniz.<\/li>\n<li><code class=\"language-\">gather_facts: no<\/code>: Varsay\u0131lan olarak Ansible, her playbook \u00e7al\u0131\u015ft\u0131\u011f\u0131nda hedef sistemlerden bilgi (facts) toplar. Bu, sistemin i\u015fletim sistemi, a\u011f aray\u00fczleri, y\u00fckl\u00fc paketler gibi bilgilerini i\u00e7erir. Bu basit ping \u00f6rne\u011finde bu bilgiye ihtiyac\u0131m\u0131z olmad\u0131\u011f\u0131 i\u00e7in <code class=\"language-\">no<\/code> olarak ayarlayarak s\u00fcreci h\u0131zland\u0131r\u0131yoruz. Daha karma\u015f\u0131k playbook&#8217;larda <code class=\"language-\">gather_facts: yes<\/code> (veya varsay\u0131lan\u0131) kullanmak faydal\u0131 olacakt\u0131r.<\/li>\n<li><code class=\"language-\">tasks:<\/code>: Bu playbook&#8217;ta ger\u00e7ekle\u015ftirilecek g\u00f6revlerin listesini belirtir.<\/li>\n<li><code class=\"language-\">- name: Ping sunucular<\/code>: Bu g\u00f6revin ad\u0131.<\/li>\n<li><code class=\"language-\">ping:<\/code>: Bu, Ansible&#8217;\u0131n yerle\u015fik <code class=\"language-\">ping<\/code> mod\u00fcl\u00fcn\u00fc kullan\u0131r. <code class=\"language-\">ping<\/code> mod\u00fcl\u00fc, hedef sunucuya ba\u011flan\u0131p ba\u011flanamad\u0131\u011f\u0131n\u0131 ve yan\u0131t verip vermedi\u011fini kontrol eder. Ba\u015far\u0131l\u0131 bir ba\u011flant\u0131 ve yan\u0131t, mod\u00fcl\u00fcn ba\u015far\u0131l\u0131 oldu\u011funu g\u00f6sterir.<\/li>\n<\/ul>\n<h3>Playbook&#8217;u \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Playbook&#8217;u olu\u015fturduktan sonra, onu Ansible komutuyla \u00e7al\u0131\u015ft\u0131rabiliriz. E\u011fer envanter dosyan\u0131z\u0131 varsay\u0131lan konuma (<code class=\"language-\">\/etc\/ansible\/hosts<\/code>) kaydettiyseniz veya \u00f6zel bir envanter dosyas\u0131 kullanm\u0131yorsan\u0131z, komut a\u015fa\u011f\u0131daki gibi olacakt\u0131r:<\/p>\n<pre><code class=\"language-bash\">ansible-playbook check_servers.yml<\/code><\/pre>\n<p>E\u011fer \u00f6zel bir envanter dosyas\u0131 kullan\u0131yorsan\u0131z (\u00f6rne\u011fin, <code class=\"language-\">my_inventory.ini<\/code> ad\u0131nda bir dosya), komut \u015fu \u015fekilde olur:<\/p>\n<pre><code class=\"language-bash\">ansible-playbook -i my_inventory.ini check_servers.yml<\/code><\/pre>\n<p>Ansible, playbook&#8217;u \u00e7al\u0131\u015ft\u0131racak ve envanterinizdeki her sunucu i\u00e7in bir sonu\u00e7 g\u00f6sterecektir. Ba\u015far\u0131l\u0131 bir ping, genellikle ye\u015fil renkte &#8220;SUCCESS&#8221; olarak i\u015faretlenir. E\u011fer bir sunucuya ula\u015f\u0131lamazsa veya bir hata olu\u015fursa, bu durum k\u0131rm\u0131z\u0131 renkte belirtilir.<\/p>\n<p>Bu basit playbook, Ansible&#8217;\u0131n temel \u00e7al\u0131\u015fma mant\u0131\u011f\u0131n\u0131 anlamak i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Playbook&#8217;lar, otomasyonun temel yap\u0131 ta\u015flar\u0131d\u0131r ve daha karma\u015f\u0131k g\u00f6revleri otomatikle\u015ftirmek i\u00e7in bu mant\u0131\u011f\u0131 geni\u015fletebilirsiniz. \u00d6rne\u011fin, sunucuya dosya kopyalamak, paket kurmak veya servisleri ba\u015flatmak gibi g\u00f6revleri ekleyebilirsiniz.<\/p>\n<\/section>\n<section>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Web Sunucusu Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>\u015eimdiye kadar Ansible&#8217;\u0131n temellerini \u00f6\u011frendik ve basit bir ping testi yapt\u0131k. Bu b\u00f6l\u00fcmde, ger\u00e7ek bir senaryo \u00fczerinden Ansible&#8217;\u0131n g\u00fcc\u00fcn\u00fc daha yak\u0131ndan g\u00f6rece\u011fiz: bir web sunucusunu (\u00f6rne\u011fin, Nginx) otomatik olarak kurmak ve yap\u0131land\u0131rmak. Bu, bir\u00e7ok altyap\u0131 y\u00f6netiminin temelini olu\u015fturur. Manuel olarak bir sunucuya ba\u011flan\u0131p Nginx&#8217;i kurmak, yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenlemek ve servisi ba\u015flatmak zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7tir. Ansible ile bu ad\u0131mlar\u0131 birka\u00e7 sat\u0131r YAML kodu ile otomatikle\u015ftirebiliriz.<\/p>\n<h3>Senaryo: Nginx Kurulumu ve Temel Yap\u0131land\u0131rma<\/h3>\n<p>Amac\u0131m\u0131z, envanterimizdeki belirli bir sunucu grubuna (\u00f6rne\u011fin, <code class=\"language-\">webservers<\/code>) Nginx&#8217;i kurmak, varsay\u0131lan Nginx ana sayfas\u0131n\u0131 kendi basit bir HTML dosyas\u0131yla de\u011fi\u015ftirmek ve Nginx servisini ba\u015flatmak olacakt\u0131r. Varsay\u0131lan olarak <code class=\"language-\">webservers<\/code> grubundaki sunucular\u0131m\u0131z\u0131n SSH ile eri\u015filebilir oldu\u011funu ve envanter dosyam\u0131zda tan\u0131ml\u0131 oldu\u011funu varsay\u0131yoruz.<\/p>\n<h3>Nginx Kurulumu \u0130\u00e7in Playbook<\/h3>\n<p>A\u015fa\u011f\u0131daki playbook, bu g\u00f6revi ger\u00e7ekle\u015ftirecektir. <code class=\"language-\">nginx_setup.yml<\/code> ad\u0131nda yeni bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-yaml\">---\n- name: Nginx Web Sunucusu Kurulumu ve Yap\u0131land\u0131rmas\u0131\n  hosts: webservers\n  become: yes\n  vars:\n    nginx_port: 80\n    html_content: \"<h1>Merhaba, Ansible ile Yap\u0131land\u0131r\u0131lm\u0131\u015f Nginx!<\/h1><p>Bu sayfa Ansible taraf\u0131ndan otomatik olarak olu\u015fturuldu.<\/p>\"\n\n  tasks:\n    - name: Nginx paketini kur\n      ansible.builtin.dnf:\n        name: nginx\n        state: present\n\n    - name: Varsay\u0131lan Nginx konfig\u00fcrasyonunu kald\u0131r (iste\u011fe ba\u011fl\u0131 ama temiz bir ba\u015flang\u0131\u00e7 i\u00e7in iyi)\n      ansible.builtin.file:\n        path: \/usr\/share\/nginx\/html\/index.html\n        state: absent\n      notify: Restart Nginx\n\n    - name: Kendi index.html dosyam\u0131z\u0131 olu\u015ftur\n      ansible.builtin.copy:\n        content: \"{{ html_content }}\"\n        dest: \/usr\/share\/nginx\/html\/index.html\n        owner: nginx\n        group: nginx\n        mode: '0644'\n      notify: Restart Nginx\n\n    - name: Nginx servisini ba\u015flat ve etkinle\u015ftir\n      ansible.builtin.service:\n        name: nginx\n        state: started\n        enabled: yes\n\n  handlers:\n    - name: Restart Nginx\n      ansible.builtin.service:\n        name: nginx\n        state: restarted\n<\/code><\/pre>\n<p>Bu playbook&#8217;un detayl\u0131 a\u00e7\u0131klamas\u0131:<\/p>\n<ul>\n<li><code class=\"language-\">hosts: webservers<\/code>: Bu playbook sadece envanterimizdeki <code class=\"language-\">webservers<\/code> grubundaki sunuculara uygulanacakt\u0131r.<\/li>\n<li><code class=\"language-\">become: yes<\/code>: Bu, Ansible&#8217;\u0131n komutlar\u0131 k\u00f6k (root) yetkisiyle \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar. Nginx gibi paketleri kurmak ve servisleri y\u00f6netmek i\u00e7in bu gereklidir.<\/li>\n<li><code class=\"language-\">vars:<\/code>: Bu b\u00f6l\u00fcmde, playbook i\u00e7inde kullanabilece\u011fimiz de\u011fi\u015fkenleri tan\u0131ml\u0131yoruz. <code class=\"language-\">nginx_port<\/code> ve <code class=\"language-\">html_content<\/code> gibi de\u011fi\u015fkenler, playbook&#8217;u daha esnek hale getirir. <code class=\"language-\">html_content<\/code> de\u011fi\u015fkenine yazd\u0131\u011f\u0131m\u0131z metin, olu\u015fturulacak HTML sayfas\u0131n\u0131n i\u00e7eri\u011fini belirler.<\/li>\n<li><code class=\"language-\">tasks:<\/code>: G\u00f6revler b\u00f6l\u00fcm\u00fcnde, s\u0131ras\u0131yla a\u015fa\u011f\u0131daki ad\u0131mlar ger\u00e7ekle\u015ftirilir:\n<ul>\n<li><strong>Nginx paketini kur:<\/strong> <code class=\"language-\">ansible.builtin.dnf<\/code> mod\u00fcl\u00fc kullan\u0131larak <code class=\"language-\">nginx<\/code> paketi kurulur. <code class=\"language-\">state: present<\/code> paketin mevcut olmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Varsay\u0131lan Nginx konfig\u00fcrasyonunu kald\u0131r:<\/strong> <code class=\"language-\">ansible.builtin.file<\/code> mod\u00fcl\u00fc ile varsay\u0131lan <code class=\"language-\">index.html<\/code> dosyas\u0131 kald\u0131r\u0131l\u0131r. <code class=\"language-\">state: absent<\/code> dosyan\u0131n mevcut olmamas\u0131n\u0131 sa\u011flar. <code class=\"language-\">notify: Restart Nginx<\/code> sat\u0131r\u0131, bu g\u00f6rev tamamland\u0131\u011f\u0131nda <code class=\"language-\">Restart Nginx<\/code> handler&#8217;\u0131n\u0131 tetikleyecektir.<\/li>\n<li><strong>Kendi index.html dosyam\u0131z\u0131 olu\u015ftur:<\/strong> <code class=\"language-\">ansible.builtin.copy<\/code> mod\u00fcl\u00fc kullan\u0131larak, <code class=\"language-\">html_content<\/code> de\u011fi\u015fkenindeki i\u00e7erikle yeni bir <code class=\"language-\">index.html<\/code> dosyas\u0131 olu\u015fturulur. <code class=\"language-\">dest<\/code> dosyan\u0131n nereye kaydedilece\u011fini, <code class=\"language-\">owner<\/code> ve <code class=\"language-\">group<\/code> dosya sahipli\u011fini, <code class=\"language-\">mode<\/code> ise dosya izinlerini belirtir. Bu g\u00f6rev de tamamland\u0131\u011f\u0131nda <code class=\"language-\">Restart Nginx<\/code> handler&#8217;\u0131n\u0131 tetikler.<\/li>\n<li><strong>Nginx servisini ba\u015flat ve etkinle\u015ftir:<\/strong> <code class=\"language-\">ansible.builtin.service<\/code> mod\u00fcl\u00fc ile <code class=\"language-\">nginx<\/code> servisi ba\u015flat\u0131l\u0131r (<code class=\"language-\">state: started<\/code>) ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak \u00e7al\u0131\u015fmas\u0131 i\u00e7in etkinle\u015ftirilir (<code class=\"language-\">enabled: yes<\/code>).<\/li>\n<\/ul>\n<\/li>\n<li><code class=\"language-\">handlers:<\/code>: Handlers, g\u00f6revler tamamland\u0131ktan sonra yaln\u0131zca bir kez tetiklenen \u00f6zel g\u00f6revlerdir. Bu \u00f6rnekte, <code class=\"language-\">Restart Nginx<\/code> handler&#8217;\u0131, dosya de\u011fi\u015fiklikleri sonras\u0131nda Nginx&#8217;i yeniden ba\u015flatmak i\u00e7in kullan\u0131l\u0131r. Bu, de\u011fi\u015fikliklerin etkili olmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h3>Playbook&#8217;u \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Bu playbook&#8217;u \u00e7al\u0131\u015ft\u0131rmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">ansible-playbook nginx_setup.yml<\/code><\/pre>\n<p>Playbook \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, <code class=\"language-\">webservers<\/code> grubundaki her sunucuda Nginx kurulacak, varsay\u0131lan sayfa kald\u0131r\u0131lacak, yeni HTML sayfan\u0131z olu\u015fturulacak ve Nginx servisi yeniden ba\u015flat\u0131lacakt\u0131r. \u0130\u015flem tamamland\u0131ktan sonra, web taray\u0131c\u0131n\u0131zdan <code class=\"language-\">http:\/\/sunucu_ip_adresi<\/code> adresine giderek kendi \u00f6zel HTML sayfan\u0131z\u0131 g\u00f6rebilirsiniz. Bu senaryo, Ansible&#8217;\u0131n altyap\u0131 y\u00f6netimi ve uygulama da\u011f\u0131t\u0131m\u0131 gibi alanlarda ne kadar g\u00fc\u00e7l\u00fc ve verimli olabilece\u011fini g\u00f6stermektedir. Tek bir komutla birden fazla sunucuda karma\u015f\u0131k i\u015flemleri tutarl\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<\/section>\n<section>\n<h2>\u0130leri D\u00fczey Ansible Teknikleri: De\u011fi\u015fkenler, \u015eablonlar ve Roller<\/h2>\n<p>Temel Ansible playbook&#8217;lar\u0131n\u0131 olu\u015fturmay\u0131 ve \u00e7al\u0131\u015ft\u0131rmay\u0131 \u00f6\u011frendik. Art\u0131k daha karma\u015f\u0131k ve yeniden kullan\u0131labilir otomasyon \u00e7\u00f6z\u00fcmleri geli\u015ftirmek i\u00e7in ileri d\u00fczey tekniklere g\u00f6z atma zaman\u0131. Ansible&#8217;\u0131n sundu\u011fu de\u011fi\u015fkenler, \u015fablonlar ve roller gibi \u00f6zellikler, playbook&#8217;lar\u0131n\u0131z\u0131 daha dinamik, esnek ve y\u00f6netilebilir hale getirmenizi sa\u011flar. Bu \u00f6zellikler, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli veya karma\u015f\u0131k altyap\u0131lar\u0131 y\u00f6netirken b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.<\/p>\n<h3>Ansible De\u011fi\u015fkenleri<\/h3>\n<p>Daha \u00f6nce <code class=\"language-\">nginx_setup.yml<\/code> playbook&#8217;unda basit de\u011fi\u015fkenler kullanm\u0131\u015ft\u0131k. Ansible&#8217;da de\u011fi\u015fkenler, de\u011ferleri dinamik olarak ayarlamak ve playbook&#8217;lar\u0131 daha genel hale getirmek i\u00e7in kullan\u0131l\u0131r. De\u011fi\u015fkenler farkl\u0131 yerlerde tan\u0131mlanabilir:<\/p>\n<ul>\n<li><strong>Playbook i\u00e7indeki <code class=\"language-\">vars:<\/code> b\u00f6l\u00fcm\u00fc:<\/strong> En basit y\u00f6ntemdir, playbook&#8217;a \u00f6zel de\u011fi\u015fkenler tan\u0131mlar.<\/li>\n<li><strong>Envanter dosyas\u0131:<\/strong> Sunucu baz\u0131nda veya grup baz\u0131nda de\u011fi\u015fkenler tan\u0131mlanabilir.<\/li>\n<li><strong>Harici de\u011fi\u015fken dosyalar\u0131:<\/strong> <code class=\"language-\">vars_files<\/code> anahtar kelimesiyle farkl\u0131 YAML dosyalar\u0131ndan de\u011fi\u015fkenler y\u00fcklenebilir.<\/li>\n<li><strong>Roller:<\/strong> Roller, kendi de\u011fi\u015fken dosyalar\u0131na sahip olabilir.<\/li>\n<li><strong>Komut sat\u0131r\u0131:<\/strong> <code class=\"language-\">ansible-playbook -e \"degisken=deger\"<\/code> \u015feklinde komut sat\u0131r\u0131ndan de\u011fi\u015fken atamas\u0131 yap\u0131labilir.<\/li>\n<\/ul>\n<p>De\u011fi\u015fkenlerin \u00f6nceli\u011fi vard\u0131r. Genellikle komut sat\u0131r\u0131ndan atanan de\u011fi\u015fkenler en y\u00fcksek \u00f6nceli\u011fe sahiptir, ard\u0131ndan playbook i\u00e7indeki <code class=\"language-\">vars:<\/code> b\u00f6l\u00fcm\u00fc ve envanter dosyas\u0131 gelir.<\/p>\n<h3>Ansible \u015eablonlar\u0131 (Templates)<\/h3>\n<p>Ansible \u015fablonlar\u0131, Jinja2 \u015fablon motorunu kullanarak dinamik yap\u0131land\u0131rma dosyalar\u0131 olu\u015fturman\u0131z\u0131 sa\u011flar. Bu, yap\u0131land\u0131rma dosyalar\u0131n\u0131 manuel olarak olu\u015fturmak yerine, playbook&#8217;unuzdaki de\u011fi\u015fkenleri kullanarak otomatik olarak olu\u015fturman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, bir veritaban\u0131 yap\u0131land\u0131rma dosyas\u0131n\u0131 veya bir web sunucusu sanal ana bilgisayar (virtual host) dosyas\u0131n\u0131 olu\u015ftururken bu \u00f6zellikten faydalanabilirsiniz.<\/p>\n<p>Bir \u00f6rnek olarak, bir Nginx sanal ana bilgisayar yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m. \u00d6ncelikle, <code class=\"language-\">templates<\/code> ad\u0131nda bir klas\u00f6r olu\u015fturun ve i\u00e7ine <code class=\"language-\">nginx_vhost.conf.j2<\/code> ad\u0131nda bir dosya ekleyin:<\/p>\n<pre><code class=\"language-jinja2\">server {\n    listen {{ nginx_port }};\n    server_name {{ server_name }};\n    root {{ web_root }};\n\n    index index.html index.htm;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    access_log \/var\/log\/nginx\/{{ server_name }}_access.log;\n    error_log \/var\/log\/nginx\/{{ server_name }}_error.log;\n}\n<\/code><\/pre>\n<p>\u015eimdi, bu \u015fablonu kullanan bir playbook olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-yaml\">---\n- name: Nginx Sanal Ana Bilgisayar Yap\u0131land\u0131rmas\u0131\n  hosts: webservers\n  become: yes\n  vars:\n    nginx_port: 8080\n    server_name: myapp.example.com\n    web_root: \/var\/www\/myapp\n\n  tasks:\n    - name: Sanal ana bilgisayar dizinini olu\u015ftur\n      ansible.builtin.file:\n        path: \"{{ web_root }}\"\n        state: directory\n        owner: nginx\n        group: nginx\n        mode: '0755'\n\n    - name: Nginx sanal ana bilgisayar yap\u0131land\u0131rma dosyas\u0131n\u0131 olu\u015ftur\n      ansible.builtin.template:\n        src: templates\/nginx_vhost.conf.j2\n        dest: \/etc\/nginx\/conf.d\/{{ server_name }}.conf\n        owner: root\n        group: root\n        mode: '0644'\n      notify: Restart Nginx\n\n  handlers:\n    - name: Restart Nginx\n      ansible.builtin.service:\n        name: nginx\n        state: restarted\n<\/code><\/pre>\n<p>Bu playbook, <code class=\"language-\">nginx_vhost.conf.j2<\/code> \u015fablonunu kullanarak belirtilen de\u011fi\u015fkenlerle doldurulmu\u015f bir yap\u0131land\u0131rma dosyas\u0131 olu\u015fturur ve Nginx&#8217;i yeniden ba\u015flat\u0131r.<\/p>\n<h3>Ansible Roller (Roles)<\/h3>\n<p>Roller, Ansible projelerini organize etmenin ve yeniden kullan\u0131labilir hale getirmenin en g\u00fc\u00e7l\u00fc yoludur. Bir rol, belirli bir g\u00f6revi (\u00f6rne\u011fin, bir veritaban\u0131 sunucusu kurmak, bir web sunucusu yap\u0131land\u0131rmak) ger\u00e7ekle\u015ftirmek i\u00e7in gereken t\u00fcm playbook&#8217;lar\u0131, de\u011fi\u015fkenleri, \u015fablonlar\u0131, dosyalar\u0131 ve handler&#8217;lar\u0131 bir araya getirir. Roller, standart bir dizin yap\u0131s\u0131na sahiptir:<\/p>\n<pre><code>rol_adi\/\n\u251c\u2500\u2500 defaults\/       # Varsay\u0131lan de\u011fi\u015fkenler\n\u2502   \u2514\u2500\u2500 main.yml\n\u251c\u2500\u2500 handlers\/       # Handler'lar\n\u2502   \u2514\u2500\u2500 main.yml\n\u251c\u2500\u2500 meta\/           # Rol\u00fcn meta bilgileri\n\u2502   \u2514\u2500\u2500 main.yml\n\u251c\u2500\u2500 tasks\/          # G\u00f6revler\n\u2502   \u2514\u2500\u2500 main.yml\n\u251c\u2500\u2500 templates\/      # \u015eablon dosyalar\u0131\n\u2502   \u2514\u2500\u2500 ...\n\u2514\u2500\u2500 vars\/           # De\u011fi\u015fkenler\n    \u2514\u2500\u2500 main.yml\n<\/code><\/pre>\n<p>Rolleri kullanmak, playbook&#8217;lar\u0131n\u0131z\u0131 daha okunabilir hale getirir ve ayn\u0131 yap\u0131land\u0131rmay\u0131 farkl\u0131 projelerde kolayca tekrar kullanman\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, bir <code class=\"language-\">nginx<\/code> rol\u00fc olu\u015fturabilir ve bunu birden fazla projenizde kullanabilirsiniz. Bir ana playbook (<code class=\"language-\">site.yml<\/code> gibi) olu\u015fturup, bu ana playbook i\u00e7inde farkl\u0131 rollerinizi \u00e7a\u011f\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\">---\n- name: Web Sunucusu Altyap\u0131s\u0131\n  hosts: webservers\n  become: yes\n  roles:\n    - nginx\n    - php\n<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m, karma\u015f\u0131k altyap\u0131lar\u0131 y\u00f6netmeyi \u00e7ok daha kolay ve sistematik hale getirir. Ansible&#8217;\u0131n bu ileri d\u00fczey \u00f6zellikleri, otomasyonu bir sonraki seviyeye ta\u015f\u0131r ve BT operasyonlar\u0131n\u0131zda \u00f6nemli bir verimlilik art\u0131\u015f\u0131 sa\u011flar.<\/p>\n<\/section>\n<section>\n<h2>Mobil Uyumlu HTML \u00dcretimi ve CSS ile Okunabilirlik<\/h2>\n<p>Bu makalede sunulan teknik bilgilerin ve kod \u00f6rneklerinin, farkl\u0131 ekran boyutlar\u0131na sahip cihazlarda sorunsuz bir \u015fekilde g\u00f6r\u00fcnt\u00fclenebilmesi b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Mobil uyumlu HTML \u00fcretimi, g\u00fcn\u00fcm\u00fcz web standartlar\u0131n\u0131n temel bir gereklili\u011fidir. Bu, i\u00e7eri\u011fin yaln\u0131zca masa\u00fcst\u00fc bilgisayarlarda de\u011fil, ayn\u0131 zamanda ak\u0131ll\u0131 telefonlar ve tabletler gibi daha k\u00fc\u00e7\u00fck ekranlarda da okunabilir ve eri\u015filebilir olmas\u0131n\u0131 sa\u011flar. Bu makalede kullan\u0131lan HTML yap\u0131s\u0131, responsive tasar\u0131m prensiplerini temel alacak \u015fekilde tasarlanm\u0131\u015ft\u0131r. Bu, i\u00e7eri\u011fin ekran boyutuna g\u00f6re otomatik olarak yeniden d\u00fczenlenmesini sa\u011flar. \u00d6rne\u011fin, e\u011fer bu makale bir web sitesinde yay\u0131nlansayd\u0131, CSS&#8217;te yer alan media query&#8217;ler sayesinde farkl\u0131 ekran boyutlar\u0131 i\u00e7in \u00f6zel stil kurallar\u0131 tan\u0131mlanabilirdi. Bu, metin boyutlar\u0131n\u0131n, resimlerin ve genel sayfa d\u00fczeninin her cihazda optimum okunabilirlik sunacak \u015fekilde ayarlanmas\u0131na olanak tan\u0131r.<\/p>\n<h3>CSS ile Okunabilirlik: Light ve Dark Mod Deste\u011fi<\/h3>\n<p>\u0130\u00e7eri\u011fin hem a\u00e7\u0131k (light mode) hem de koyu (dark mode) tema tercihlerinde rahat okunabilir olmas\u0131, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde etkiler. Bu makalede, renklerin ve kenarl\u0131klar\u0131n do\u011frudan HTML elementlerine inline stil olarak eklenmesinden ka\u00e7\u0131n\u0131lm\u0131\u015ft\u0131r. Bunun yerine, metin rengi, arka plan rengi ve kenarl\u0131k rengi gibi g\u00f6rsel \u00f6\u011felerin, taray\u0131c\u0131n\u0131n veya i\u015fletim sisteminin varsay\u0131lan CSS temalar\u0131ndan miras al\u0131nmas\u0131 (inherit edilmesi) hedeflenmi\u015ftir. Bu yakla\u015f\u0131m, a\u015fa\u011f\u0131daki avantajlar\u0131 sunar:<\/p>\n<ul>\n<li><strong>Kullan\u0131c\u0131 Tercihlerine Uygunluk:<\/strong> Kullan\u0131c\u0131lar, kendi i\u015fletim sistemlerinde veya taray\u0131c\u0131lar\u0131nda belirledikleri tema tercihlerini (a\u00e7\u0131k veya koyu mod) koruyabilirler. \u0130\u00e7erik, bu tercihlere otomatik olarak uyum sa\u011flar.<\/li>\n<li><strong>Eri\u015filebilirlik:<\/strong> Farkl\u0131 g\u00f6rme yeteneklerine sahip kullan\u0131c\u0131lar i\u00e7in, kendi tercih ettikleri renk kontrast\u0131na sahip bir tema kullanmak, i\u00e7eri\u011fin daha kolay okunmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Bak\u0131m Kolayl\u0131\u011f\u0131:<\/strong> Renkleri do\u011frudan CSS&#8217;te tan\u0131mlamak yerine <code class=\"language-\">inherit<\/code> kullanmak, tasar\u0131m de\u011fi\u015fikliklerini daha merkezi bir yerden y\u00f6netmeyi kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Modern Web Geli\u015ftirme Pratikleri:<\/strong> G\u00fcn\u00fcm\u00fcz web geli\u015ftirme standartlar\u0131, renk ve stil y\u00f6netiminde harici CSS dosyalar\u0131n\u0131 ve temalardan miras almay\u0131 te\u015fvik eder.<\/li>\n<\/ul>\n<p>Bu makalede kullan\u0131lan semantik HTML etiketleri (\u00f6rne\u011fin, <code class=\"language-\"><\/p>\n<section><\/code>, <code class=\"language-\"><\/p>\n<h2><\/code>, <code class=\"language-\"><\/p>\n<h3><\/code>, <code class=\"language-\"><\/p>\n<ul><\/code>, <code class=\"language-\"><\/p>\n<li><\/code>, <code class=\"language-\">\n<pre><\/code>, <code class=\"language-\"><code><\/code>, <code class=\"language-\"><blockquote><\/code>), taray\u0131c\u0131n\u0131n ve stil motorlar\u0131n\u0131n i\u00e7eri\u011fi do\u011fru bir \u015fekilde i\u015flemesine yard\u0131mc\u0131 olur. Kod bloklar\u0131 (<code class=\"language-\"><pre><code>...<\/code><\/pre>\n<p><\/code>) gibi \u00f6zel \u00f6\u011feler de, sabit renkler yerine taray\u0131c\u0131n\u0131n varsay\u0131lan stilini kullanarak, hem a\u00e7\u0131k hem de koyu temalarda iyi g\u00f6r\u00fcnmelerini sa\u011flar. Bu, teknik makalelerin okunabilirli\u011fini ve eri\u015filebilirli\u011fini art\u0131rman\u0131n \u00f6nemli bir yoludur.<\/p>\n<\/section>\n<section>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu kapsaml\u0131 rehberde, Rocky Linux 9 \u00fczerinde Ansible'\u0131 kurma, temel yap\u0131land\u0131rmas\u0131n\u0131 yapma, ilk playbook'unuzu yazma ve ger\u00e7ek d\u00fcnya senaryolar\u0131 \u00fczerinden ileri d\u00fczey teknikleri ke\u015ffetme s\u00fcre\u00e7lerini ad\u0131m ad\u0131m inceledik. Ansible'\u0131n \"agentless\" yap\u0131s\u0131, YAML tabanl\u0131 playbook'lar\u0131 ve mod\u00fcler mimarisi, altyap\u0131 y\u00f6netimi ve uygulama da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini otomatikle\u015ftirmek i\u00e7in g\u00fc\u00e7l\u00fc bir platform sunar. Envanter y\u00f6netimi, SSH anahtar tabanl\u0131 kimlik do\u011frulama, dinamik de\u011fi\u015fkenler, Jinja2 \u015fablonlar\u0131 ve yeniden kullan\u0131labilir roller gibi \u00f6zellikler, karma\u015f\u0131k ortamlar\u0131 bile verimli bir \u015fekilde y\u00f6netmenizi sa\u011flar. Rocky Linux 9 gibi modern bir i\u015fletim sisteminde Ansible'\u0131 etkin bir \u015fekilde kullanmak, BT operasyonlar\u0131n\u0131z\u0131n h\u0131z\u0131n\u0131, g\u00fcvenilirli\u011fini ve verimlili\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n                <strong>Soru: Ansible'\u0131 farkl\u0131 bir Linux da\u011f\u0131t\u0131m\u0131nda da kullanabilir miyim?<\/strong><br \/>\n                <strong>Cevap:<\/strong> Evet, Ansible bir\u00e7ok Linux da\u011f\u0131t\u0131m\u0131nda (Ubuntu, Debian, CentOS, Fedora vb.) ve hatta macOS ve Windows \u00fczerinde de \u00e7al\u0131\u015fabilir. Kurulum y\u00f6ntemi da\u011f\u0131t\u0131ma g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir, ancak temel \u00e7al\u0131\u015fma prensipleri ayn\u0131d\u0131r.\n            <\/li>\n<li>\n                <strong>Soru: Ansible playbook'lar\u0131nda hata ay\u0131klama (debugging) nas\u0131l yap\u0131l\u0131r?<\/strong><br \/>\n                <strong>Cevap:<\/strong> Ansible, hata ay\u0131klama i\u00e7in \u00e7e\u015fitli y\u00f6ntemler sunar. <code class=\"language-\">ansible-playbook<\/code> komutuna <code class=\"language-\">--check<\/code> (dry run) se\u00e7ene\u011fi ile \u00e7al\u0131\u015ft\u0131rarak de\u011fi\u015fiklikleri g\u00f6rmeden \u00f6nce ne olaca\u011f\u0131n\u0131 g\u00f6rebilirsiniz. Ayr\u0131ca, playbook'lara <code class=\"language-\">debugger: on_failed<\/code> veya <code class=\"language-\">debugger: always<\/code> gibi se\u00e7enekler ekleyerek hata olu\u015ftu\u011funda interaktif bir hata ay\u0131klama oturumu ba\u015flatabilirsiniz. Task'lerinize <code class=\"language-\">debug<\/code> mod\u00fcl\u00fc ekleyerek de\u011fi\u015fkenlerin de\u011ferlerini kontrol edebilirsiniz.\n            <\/li>\n<li>\n                <strong>Soru: Ansible ile bulut altyap\u0131lar\u0131n\u0131 (AWS, Azure, GCP) y\u00f6netebilir miyim?<\/strong><br \/>\n                <strong>Cevap:<\/strong> Kesinlikle evet. Ansible'\u0131n bulut sa\u011flay\u0131c\u0131lar\u0131 i\u00e7in \u00f6zel mod\u00fclleri bulunur. Bu mod\u00fcller arac\u0131l\u0131\u011f\u0131yla sanal makineler olu\u015fturabilir, a\u011f yap\u0131land\u0131rmalar\u0131 yapabilir ve bulut kaynaklar\u0131n\u0131z\u0131 otomatikle\u015ftirebilirsiniz.\n            <\/li>\n<li>\n                <strong>Soru: G\u00fcvenlik a\u00e7\u0131s\u0131ndan Ansible playbook'lar\u0131n\u0131 nas\u0131l daha g\u00fcvenli hale getirebilirim?<\/strong><br \/>\n                <strong>Cevap:<\/strong> En \u00f6nemli ad\u0131m, SSH anahtar tabanl\u0131 kimlik do\u011frulamay\u0131 kullanmak ve \u00f6zel anahtarlar\u0131n\u0131z\u0131 g\u00fcvende tutmakt\u0131r. Ayr\u0131ca, hassas bilgileri (\u015fifreler, API anahtarlar\u0131 vb.) do\u011frudan playbook'larda saklamak yerine Ansible Vault gibi \u015fifreleme ara\u00e7lar\u0131n\u0131 kullanmal\u0131s\u0131n\u0131z. <code class=\"language-\">become: yes<\/code> kullan\u0131rken dikkatli olun ve sadece gerekti\u011finde kullan\u0131n.\n            <\/li>\n<li>\n                <strong>Soru: Ansible Galaxy nedir ve ne i\u015fe yarar?<\/strong><br \/>\n                <strong>Cevap:<\/strong> Ansible Galaxy, topluluk taraf\u0131ndan olu\u015fturulan ve payla\u015f\u0131lan Ansible rollerini bulabilece\u011finiz bir platformdur. Haz\u0131r roller indirerek kendi projelerinizde kullanabilir ve geli\u015ftirme s\u00fcrecinizi h\u0131zland\u0131rabilirsiniz.\n            <\/li>\n<\/ul>\n<\/section>\n<p><\/main><\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/ansible-localhost-ping-test\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/ansible-localhost-ping-test<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m&hellip;","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":[241],"tags":[],"class_list":{"0":"post-42791","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","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>Rocky Linux 9&#039;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin<\/title>\n<meta name=\"description\" content=\"G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi.\" \/>\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\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rocky Linux 9&#039;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-23T11:08:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-23T11:08:24+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=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin\",\"datePublished\":\"2026-06-23T11:08:01+00:00\",\"dateModified\":\"2026-06-23T11:08:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\"},\"wordCount\":3963,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\",\"name\":\"Rocky Linux 9'da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-06-23T11:08:01+00:00\",\"dateModified\":\"2026-06-23T11:08:24+00:00\",\"description\":\"G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin\"}]},{\"@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":"Rocky Linux 9'da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin","description":"G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi.","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\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/","og_locale":"tr_TR","og_type":"article","og_title":"Rocky Linux 9'da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin","og_description":"G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi.","og_url":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-06-23T11:08:01+00:00","article_modified_time":"2026-06-23T11:08:24+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin","datePublished":"2026-06-23T11:08:01+00:00","dateModified":"2026-06-23T11:08:24+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/"},"wordCount":3963,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/","url":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/","name":"Rocky Linux 9'da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-06-23T11:08:01+00:00","dateModified":"2026-06-23T11:08:24+00:00","description":"G\u00fcn\u00fcm\u00fcz\u00fcn dinamik BT ortamlar\u0131nda, sunucu y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin verimlili\u011fi her zamankinden daha \u00f6nemli hale geldi.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/rocky-linux-9da-ansible-kurulumu-ve-yapilandirmasi-otomasyon-gucunu-kesfedin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Rocky Linux 9&#8217;da Ansible Kurulumu ve Yap\u0131land\u0131rmas\u0131: Otomasyon G\u00fcc\u00fcn\u00fc Ke\u015ffedin"}]},{"@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\/42791","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=42791"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42791\/revisions"}],"predecessor-version":[{"id":42792,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42791\/revisions\/42792"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}