{"id":31195,"date":"2025-10-07T03:41:34","date_gmt":"2025-10-07T00:41:34","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31195"},"modified":"2025-10-07T03:41:34","modified_gmt":"2025-10-07T00:41:34","slug":"yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/","title":{"rendered":"Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme"},"content":{"rendered":"<p><body><\/p>\n<h2>Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme<\/h2>\n<p>Modern bulut altyap\u0131lar\u0131nda, sunucular (veya DigitalOcean&#8217;da &#8220;Droplet&#8221;ler) dinamik olarak olu\u015fturulur, \u00f6l\u00e7eklendirilir ve sonland\u0131r\u0131l\u0131r. Bu dinamizm, geleneksel manuel sunucu y\u00f6netimini pratik olmaktan \u00e7\u0131kar\u0131r. Konfig\u00fcrasyon y\u00f6netim sistemleri (Ansible, Chef, Puppet, SaltStack gibi) bu sorunu \u00e7\u00f6zmek i\u00e7in tasarlanm\u0131\u015ft\u0131r, ancak bu sistemlerin yeni olu\u015fturulan sunuculardan otomatik olarak haberdar olmas\u0131 ve onlar\u0131 y\u00f6netmeye ba\u015flamas\u0131 kritik bir ad\u0131md\u0131r. Bu rehberde, DigitalOcean Droplet&#8217;lar\u0131n\u0131 konfig\u00fcrasyon y\u00f6netim sisteminize nas\u0131l otomatik olarak ekleyece\u011finizi, \u00f6zellikle Ansible \u00f6rne\u011fi \u00fczerinden pratik bilgilerle ele alaca\u011f\u0131z.<\/p>\n<h3>Dinamik Altyap\u0131 Y\u00f6netimi ve Konfig\u00fcrasyon Y\u00f6netiminin Temelleri<\/h3>\n<p>Geleneksel olarak, bir sunucu kuruldu\u011funda, IP adresi veya hostname bir envanter dosyas\u0131na manuel olarak eklenir ve ard\u0131ndan konfig\u00fcrasyon y\u00f6netim arac\u0131 bu sunucuya SSH \u00fczerinden ba\u011flanarak gerekli ayarlamalar\u0131 yapar. Ancak bulut ortamlar\u0131nda, \u00f6zellikle otomatik \u00f6l\u00e7eklendirme gruplar\u0131 veya ge\u00e7ici geli\u015ftirme ortamlar\u0131 kullan\u0131ld\u0131\u011f\u0131nda, bu yakla\u015f\u0131m s\u00fcrd\u00fcr\u00fclemez hale gelir.<\/p>\n<h4>Dinamik Envanter Nedir?<\/h4>\n<p>Dinamik envanter, konfig\u00fcrasyon y\u00f6netim sisteminizin, y\u00f6netece\u011fi sunucular\u0131n listesini statik bir dosyadan okumak yerine, bir bulut sa\u011flay\u0131c\u0131n\u0131n (\u00f6rne\u011fin DigitalOcean) API&#8217;sini sorgulayarak veya harici bir kaynaktan (CMDB gibi) almas\u0131n\u0131 sa\u011flayan bir y\u00f6ntemdir. Bu sayede, yeni bir sunucu olu\u015fturuldu\u011funda veya mevcut bir sunucu silindi\u011finde, konfig\u00fcrasyon y\u00f6netim sisteminiz en g\u00fcncel durumu otomatik olarak \u00f6\u011frenir ve buna g\u00f6re hareket eder.<\/p>\n<h4>DigitalOcean API ve Entegrasyonun \u00d6nemi<\/h4>\n<p>DigitalOcean, Droplet&#8217;lar\u0131 ve di\u011fer kaynaklar\u0131 programatik olarak y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc bir RESTful API sunar. Bu API sayesinde, Droplet olu\u015fturabilir, silebilir, bilgilerini alabilir ve hatta \u00fczerlerinde etiketleme gibi i\u015flemleri yapabilirsiniz. Konfig\u00fcrasyon y\u00f6netim sisteminizin bu API ile etkile\u015fime girmesi, Droplet&#8217;lar\u0131n\u0131z\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca tutarl\u0131 bir \u015fekilde y\u00f6netilmesini sa\u011flar.<\/p>\n<p>Entegrasyonun temel ad\u0131mlar\u0131 \u015funlar\u0131 i\u00e7erir:<br \/>\n1.  <strong>API Token Olu\u015fturma:<\/strong> DigitalOcean hesab\u0131n\u0131zda bir API token&#8217;\u0131 olu\u015fturman\u0131z gereklidir. Bu token, API \u00e7a\u011fr\u0131lar\u0131n\u0131z i\u00e7in kimlik do\u011frulama sa\u011flar.<br \/>\n2.  <strong>API Sorgulama:<\/strong> Konfig\u00fcrasyon y\u00f6netim arac\u0131n\u0131z veya \u00f6zel bir betik, DigitalOcean API&#8217;sini kullanarak mevcut Droplet&#8217;lar\u0131n listesini, IP adreslerini, etiketlerini ve di\u011fer meta verilerini sorgular.<br \/>\n3.  <strong>Envanter Olu\u015fturma:<\/strong> Sorgudan d\u00f6nen veriler, konfig\u00fcrasyon y\u00f6netim sisteminizin anlayaca\u011f\u0131 bir envanter format\u0131na (genellikle JSON veya YAML) d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr.<br \/>\n4.  <strong>Konfig\u00fcrasyon Uygulama:<\/strong> Konfig\u00fcrasyon y\u00f6netim sistemi, bu dinamik envanteri kullanarak Droplet&#8217;lara SSH \u00fczerinden ba\u011flan\u0131r ve tan\u0131mlanan rolleri veya g\u00f6revleri uygular.<\/p>\n<h3>Ansible ile DigitalOcean Dinamik Envanter Kullan\u0131m\u0131<\/h3>\n<p>Ansible, dinamik envanter konusunda olduk\u00e7a yeteneklidir ve DigitalOcean i\u00e7in do\u011frudan bir eklenti sunar. Bu eklenti, DigitalOcean API&#8217;sini kullanarak Droplet&#8217;lar\u0131n\u0131z\u0131 otomatik olarak alg\u0131lar ve Ansible envanteri olarak sunar.<\/p>\n<h4>DigitalOcean API Token Olu\u015fturma<\/h4>\n<p>1.  DigitalOcean kontrol panelinize giri\u015f yap\u0131n.<br \/>\n2.  Sol men\u00fcden &#8220;API&#8221; b\u00f6l\u00fcm\u00fcne gidin.<br \/>\n3.  &#8220;Tokens\/Keys&#8221; sekmesinde &#8220;Generate New Token&#8221; butonuna t\u0131klay\u0131n.<br \/>\n4.  Token&#8217;\u0131n\u0131za anlaml\u0131 bir isim verin (\u00f6rn. <code>ansible-inventory-token<\/code>) ve <code>Read<\/code> ve <code>Write<\/code> izinlerini verin. <code>Write<\/code> izni genellikle Droplet olu\u015fturma veya etiketleme gibi i\u015flemler i\u00e7in gereklidir, ancak sadece envanter listelemek i\u00e7in <code>Read<\/code> yeterlidir.<br \/>\n5.  Olu\u015fturulan token&#8217;\u0131 kopyalay\u0131n. Bu token sadece bir kez g\u00f6sterilecektir, bu y\u00fczden g\u00fcvenli bir yerde saklay\u0131n.<\/p>\n<h4>Ansible Dinamik Envanter Kurulumu ve Konfig\u00fcrasyonu<\/h4>\n<p>Ansible&#8217;\u0131n DigitalOcean dinamik envanter eklentisini kullanmak i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyin:<\/p>\n<p>1.  <strong>Gereksinimler:<\/strong> Ansible&#8217;\u0131n y\u00fckl\u00fc oldu\u011fundan ve Python&#8217;\u0131n <code>apache-libcloud<\/code> veya <code>doapi<\/code> k\u00fct\u00fcphanelerinden birinin y\u00fckl\u00fc oldu\u011fundan emin olun. Genellikle <code>doapi<\/code> daha g\u00fcncel ve tercih edilir.<\/p>\n<pre><code class=\"language-bash\">pip install doapi<\/code><\/pre>\n<p>2.  <strong>Envanter Dosyas\u0131 Olu\u015fturma:<\/strong> Ansible&#8217;\u0131n DigitalOcean envanter eklentisini kullanmak i\u00e7in bir YAML dosyas\u0131 olu\u015fturun, \u00f6rne\u011fin <code>digital_ocean.yml<\/code>:<\/p>\n<pre><code class=\"language-yaml\">plugin: digital_ocean\n    api_token: \"{{ lookup('env', 'DO_API_TOKEN') }}\" # API token'\u0131 ortam de\u011fi\u015fkeninden al\n    keyed_groups:\n      - key: tags\n        prefix: tag_\n      - key: region\n        prefix: region_\n    filters:\n      - status: active # Sadece aktif Droplet'lar\u0131 listele<\/code><\/pre>\n<p>    *   <code>plugin: digital_ocean<\/code>: Bu, Ansible&#8217;a DigitalOcean eklentisini kullanmas\u0131n\u0131 s\u00f6yler.<br \/>\n    *   <code>api_token<\/code>: API token&#8217;\u0131n\u0131z\u0131 buraya do\u011frudan yap\u0131\u015ft\u0131rabilirsiniz, ancak g\u00fcvenlik amac\u0131yla bir ortam de\u011fi\u015fkeninden almak daha iyidir.<br \/>\n    *   <code>keyed_groups<\/code>: Bu \u00f6zellik, Droplet&#8217;lar\u0131 belirli anahtarlara g\u00f6re otomatik olarak gruplaman\u0131z\u0131 sa\u011flar. Yukar\u0131daki \u00f6rnekte, Droplet&#8217;lar <code>tags<\/code> (etiketler) ve <code>region<\/code> (b\u00f6lge) \u00f6zelliklerine g\u00f6re gruplanacakt\u0131r (\u00f6rn. <code>tag_webserver<\/code>, <code>region_nyc1<\/code>).<br \/>\n    *   <code>filters<\/code>: Yaln\u0131zca belirli kriterleri kar\u015f\u0131layan Droplet&#8217;lar\u0131 dahil etmek i\u00e7in filtreler kullanabilirsiniz. Burada sadece <code>active<\/code> (aktif) durumdaki Droplet&#8217;lar listelenir.<\/p>\n<p>3.  <strong>API Token&#8217;\u0131 Ortam De\u011fi\u015fkeni Olarak Ayarlama:<\/strong> G\u00fcvenlik nedeniyle API token&#8217;\u0131n\u0131z\u0131 do\u011frudan dosyaya yazmak yerine bir ortam de\u011fi\u015fkeni olarak ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">export DO_API_TOKEN=\"sizin_digitalocean_api_tokeniniz\"<\/code><\/pre>\n<p>    Bu komutu her terminal oturumunda \u00e7al\u0131\u015ft\u0131rman\u0131z veya <code>.bashrc<\/code> ya da <code>.zshrc<\/code> dosyan\u0131za eklemeniz gerekebilir.<\/p>\n<h4>Dinamik Envanteri Kullanma<\/h4>\n<p>Art\u0131k Ansible, <code>digital_ocean.yml<\/code> dosyas\u0131n\u0131 kullanarak DigitalOcean Droplet&#8217;lar\u0131n\u0131z\u0131 otomatik olarak alg\u0131layabilir.<\/p>\n<p>1.  <strong>Envanteri Listeleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">ansible-inventory -i digital_ocean.yml --list<\/code><\/pre>\n<p>    Bu komut, Ansible&#8217;\u0131n DigitalOcean API&#8217;sinden ald\u0131\u011f\u0131 t\u00fcm Droplet&#8217;lar\u0131 ve onlar\u0131n \u00f6zelliklerini JSON format\u0131nda g\u00f6sterecektir. Gruplamalar\u0131, IP adreslerini ve di\u011fer meta verileri burada g\u00f6rebilirsiniz.<\/p>\n<p>2.  <strong>Droplet&#8217;lara Komut \u00c7al\u0131\u015ft\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-bash\">ansible -i digital_ocean.yml -m ping all<\/code><\/pre>\n<p>    Bu komut, DigitalOcean&#8217;daki t\u00fcm aktif Droplet&#8217;lar\u0131n\u0131za bir <code>ping<\/code> mod\u00fcl\u00fc \u00e7al\u0131\u015ft\u0131rarak eri\u015filebilir olup olmad\u0131klar\u0131n\u0131 kontrol eder.<\/p>\n<p>    Belirli bir gruba komut \u00e7al\u0131\u015ft\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">ansible -i digital_ocean.yml -m setup tag_webserver # 'webserver' etiketli Droplet'lar i\u00e7in bilgi toplama\n    ansible -i digital_ocean.yml -m shell -a \"hostname\" region_nyc1 # 'nyc1' b\u00f6lgesindeki Droplet'lar\u0131n hostname'ini alma<\/code><\/pre>\n<p>3.  <strong>Playbook&#8217;larda Kullan\u0131m:<\/strong> Playbook&#8217;lar\u0131n\u0131zda do\u011frudan dinamik envanteri kullanabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\"># my_playbook.yml\n    - name: Web sunucular\u0131n\u0131 yap\u0131land\u0131r\n      hosts: tag_webserver\n      become: yes\n      tasks:\n        - name: Nginx'i kur\n          apt:\n            name: nginx\n            state: present\n        - name: Nginx servisini ba\u015flat\n          service:\n            name: nginx\n            state: started\n            enabled: yes<\/code><\/pre>\n<p>    Bu playbook&#8217;u a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">ansible-playbook -i digital_ocean.yml my_playbook.yml<\/code><\/pre>\n<h3>Alternatif Yakla\u015f\u0131m: \u00d6zel Betiklerle Envanter Y\u00f6netimi<\/h3>\n<p>Ansible&#8217;\u0131n yerle\u015fik dinamik envanter eklentisi \u00e7o\u011fu senaryo i\u00e7in yeterli olsa da, bazen daha fazla kontrol veya farkl\u0131 bir konfig\u00fcrasyon y\u00f6netim sistemi kullan\u0131yorsan\u0131z \u00f6zel bir betik yazmak isteyebilirsiniz. Bu betik, DigitalOcean API&#8217;sini sorgulayacak ve \u00e7\u0131kt\u0131y\u0131 konfig\u00fcrasyon y\u00f6netim sisteminizin anlayaca\u011f\u0131 bir formata d\u00f6n\u00fc\u015ft\u00fcrecektir.<\/p>\n<p>A\u015fa\u011f\u0131da, DigitalOcean API&#8217;sinden Droplet&#8217;lar\u0131 \u00e7eken ve Ansible&#8217;\u0131n bekledi\u011fi JSON format\u0131nda \u00e7\u0131kt\u0131 veren basit bir Python betik \u00f6rne\u011fi bulunmaktad\u0131r:<\/p>\n<pre><code class=\"language-python\">#!\/usr\/bin\/env python3\n\nimport os\nimport requests\nimport json\nimport sys\n\n<h2>DigitalOcean API token'\u0131n\u0131 ortam de\u011fi\u015fkeninden al<\/h2>\nDO_API_TOKEN = os.getenv(\"DO_API_TOKEN\")\nif not DO_API_TOKEN:\n    print(\"HATA: DO_API_TOKEN ortam de\u011fi\u015fkeni ayarlanmam\u0131\u015f.\", file=sys.stderr)\n    sys.exit(1)\n\nDO_API_URL = \"https:\/\/api.digitalocean.com\/v2\/droplets\"\nHEADERS = {\n    \"Authorization\": f\"Bearer {DO_API_TOKEN}\",\n    \"Content-Type\": \"application\/json\"\n}\n\ndef get_droplets():\n    \"\"\"DigitalOcean API'sinden Droplet'lar\u0131 \u00e7eker.\"\"\"\n    droplets = []\n    page = 1\n    while True:\n        try:\n            response = requests.get(f\"{DO_API_URL}?page={page}&per_page=200\", headers=HEADERS)\n            response.raise_for_status() # HTTP hatalar\u0131n\u0131 kontrol et\n            data = response.json()\n            droplets.extend(data['droplets'])\n            \n            # Son sayfaya ula\u015f\u0131ld\u0131 m\u0131 kontrol et\n            if 'pages' not in data['links'] or 'next' not in data['links']['pages']:\n                break\n            page += 1\n        except requests.exceptions.RequestException as e:\n            print(f\"DigitalOcean API \u00e7a\u011fr\u0131s\u0131 s\u0131ras\u0131nda hata olu\u015ftu: {e}\", file=sys.stderr)\n            sys.exit(1)\n    return droplets\n\ndef generate_ansible_inventory(droplets):\n    \"\"\"Droplet listesinden Ansible dinamik envanterini olu\u015fturur.\"\"\"\n    inventory = {\n        \"_meta\": {\n            \"hostvars\": {}\n        }\n    }\n    \n    for droplet in droplets:\n        # Sadece aktif Droplet'lar\u0131 dahil et\n        if droplet['status'] != 'active':\n            continue\n\n        # Genel host bilgileri\n        host_name = droplet['name']\n        host_ip = None\n        for network in droplet['networks']['v4']:\n            if network['type'] == 'public':\n                host_ip = network['ip_address']\n                break\n        \n        if not host_ip:\n            print(f\"Uyar\u0131: {host_name} i\u00e7in genel IP adresi bulunamad\u0131, atlan\u0131yor.\", file=sys.stderr)\n            continue\n\n        # Hostvars (de\u011fi\u015fkenler) ekle\n        inventory[\"_meta\"][\"hostvars\"][host_name] = {\n            \"ansible_host\": host_ip,\n            \"digitalocean_id\": droplet['id'],\n            \"digitalocean_region\": droplet['region']['slug'],\n            \"digitalocean_tags\": droplet['tags'],\n            \"ansible_user\": \"root\" # veya SSH kullan\u0131c\u0131n\u0131z\n        }\n\n        # Etiketlere g\u00f6re gruplama\n        for tag in droplet['tags']:\n            tag_group_name = f\"tag_{tag}\"\n            if tag_group_name not in inventory:\n                inventory[tag_group_name] = {\"hosts\": []}\n            inventory[tag_group_name][\"hosts\"].append(host_name)\n\n        # B\u00f6lgeye g\u00f6re gruplama\n        region_group_name = f\"region_{droplet['region']['slug']}\"\n        if region_group_name not in inventory:\n            inventory[region_group_name] = {\"hosts\": []}\n        inventory[region_group_name][\"hosts\"].append(host_name)\n\n        # T\u00fcm Droplet'lar i\u00e7in bir 'all_droplets' grubu\n        if \"all_droplets\" not in inventory:\n            inventory[\"all_droplets\"] = {\"hosts\": []}\n        inventory[\"all_droplets\"][\"hosts\"].append(host_name)\n\n    return inventory\n\nif __name__ == \"__main__\":\n    droplets_data = get_droplets()\n    ansible_inventory = generate_ansible_inventory(droplets_data)\n    print(json.dumps(ansible_inventory, indent=2))<\/code><\/pre>\n<p>Bu betik:<br \/>\n*   <code>DO_API_TOKEN<\/code> ortam de\u011fi\u015fkeninden API anahtar\u0131n\u0131 al\u0131r.<br \/>\n*   DigitalOcean API&#8217;sini \u00e7a\u011f\u0131rarak t\u00fcm Droplet&#8217;lar\u0131 listeler.<br \/>\n*   Her Droplet&#8217;\u0131n genel IP adresini bulur.<br \/>\n*   Droplet&#8217;lar\u0131 etiketlerine ve b\u00f6lgelerine g\u00f6re gruplar.<br \/>\n*   Ansible&#8217;\u0131n bekledi\u011fi JSON format\u0131nda bir dinamik envanter \u00e7\u0131kt\u0131s\u0131 verir.<\/p>\n<p>Bu beti\u011fi <code>do_inventory.py<\/code> olarak kaydedip \u00e7al\u0131\u015ft\u0131r\u0131labilir hale getirdikten (<code>chmod +x do_inventory.py<\/code>) sonra Ansible ile kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">export DO_API_TOKEN=\"sizin_digitalocean_api_tokeniniz\"\nansible-inventory -i .\/do_inventory.py --list\nansible -i .\/do_inventory.py -m ping all_droplets<\/code><\/pre>\n<p>Bu beti\u011fi <code>cron<\/code> gibi bir zamanlay\u0131c\u0131 ile d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rarak statik bir envanter dosyas\u0131n\u0131 g\u00fcncelleyebilir veya do\u011frudan Ansible&#8217;\u0131n <code>inventory<\/code> parametresi olarak kullanabilirsiniz.<\/p>\n<h3>En \u0130yi Uygulamalar ve G\u00fcvenlik<\/h3>\n<p>Otomatik envanter y\u00f6netimi, verimlili\u011fi art\u0131r\u0131rken baz\u0131 g\u00fcvenlik ve y\u00f6netim pratiklerini de beraberinde getirir:<\/p>\n<p>1.  <strong>API Token G\u00fcvenli\u011fi:<\/strong> API token&#8217;\u0131n\u0131z, DigitalOcean hesab\u0131n\u0131za tam eri\u015fim sa\u011flayabilir. Bu nedenle:<br \/>\n    *   Asla kod taban\u0131na veya genel bir depoya commit etmeyin.<br \/>\n    *   Ortam de\u011fi\u015fkenleri (yukar\u0131daki \u00f6rnekte oldu\u011fu gibi) veya s\u0131r y\u00f6netimi ara\u00e7lar\u0131 (Ansible Vault, HashiCorp Vault gibi) kullanarak saklay\u0131n.<br \/>\n    *   Gereksiz izinler vermeyin. Sadece envanter listeleme i\u00e7in <code>Read<\/code> izni yeterlidir.<br \/>\n    *   D\u00fczenli olarak yenileyin veya denetleyin.<\/p>\n<p>2.  <strong>SSH Anahtar Y\u00f6netimi:<\/strong> Yeni Droplet&#8217;lar\u0131n konfig\u00fcrasyon y\u00f6netim sisteminiz taraf\u0131ndan y\u00f6netilebilmesi i\u00e7in SSH ile eri\u015filebilir olmas\u0131 gerekir.<br \/>\n    *   Droplet olu\u015ftururken DigitalOcean kontrol panelinden veya API \u00fczerinden SSH anahtarlar\u0131n\u0131z\u0131 ekleyin.<br \/>\n    *   <code>user_data<\/code> kullanarak Droplet ba\u015flat\u0131l\u0131rken ek konfig\u00fcrasyonlar (\u00f6rn. ek kullan\u0131c\u0131 olu\u015fturma, SSH ayarlar\u0131) yapabilirsiniz.<\/p>\n<p>3.  <strong>Etiketleme (Tagging):<\/strong> DigitalOcean&#8217;da Droplet&#8217;lar\u0131 etiketlemek, onlar\u0131 mant\u0131ksal gruplara ay\u0131rman\u0131n en etkili yoludur. Bu etiketleri dinamik envanterinizde kullanarak belirli Droplet gruplar\u0131na \u00f6zel konfig\u00fcrasyonlar uygulayabilirsiniz (\u00f6rn. <code>webserver<\/code>, <code>database<\/code>, <code>monitoring<\/code>).<\/p>\n<p>4.  <strong>Idempotency:<\/strong> Konfig\u00fcrasyon y\u00f6netim playbook&#8217;lar\u0131n\u0131z\u0131n idempotent oldu\u011fundan emin olun. Yani, bir playbook&#8217;u birden fazla kez \u00e7al\u0131\u015ft\u0131rmak, sistemin durumunu de\u011fi\u015ftirmez veya istenmeyen yan etkilere neden olmaz. Bu, dinamik envanterle s\u00fcrekli de\u011fi\u015fen bir ortamda kritik \u00f6neme sahiptir.<\/p>\n<p>5.  <strong>Eri\u015fim Kontrol\u00fc:<\/strong> Konfig\u00fcrasyon y\u00f6netim arac\u0131n\u0131 \u00e7al\u0131\u015ft\u0131ran kullan\u0131c\u0131n\u0131n veya servisin yaln\u0131zca gerekli kaynaklara eri\u015fim izni oldu\u011fundan emin olun (Least Privilege Prensibi).<\/p>\n<h3>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p>Yeni Droplet&#8217;lar\u0131 konfig\u00fcrasyon y\u00f6netim sisteminize otomatik olarak eklemek, modern bulut altyap\u0131lar\u0131nda verimli ve hatas\u0131z bir y\u00f6netim i\u00e7in vazge\u00e7ilmezdir. Ansible&#8217;\u0131n dinamik envanter eklentisi veya \u00f6zel betikler arac\u0131l\u0131\u011f\u0131yla DigitalOcean API&#8217;sini kullanarak bu otomasyonu kolayca kurabilirsiniz. Bu sayede, altyap\u0131n\u0131z ne kadar dinamik olursa olsun, konfig\u00fcrasyonlar\u0131n\u0131z\u0131n tutarl\u0131 ve g\u00fcncel kalmas\u0131n\u0131 sa\u011flars\u0131n\u0131z.<\/p>\n<h4>SSS<\/h4>\n<p><H3>S1: Hangi konfig\u00fcrasyon y\u00f6netim sistemleri dinamik envanteri destekler?<\/H3><\/p>\n<p>Hemen hemen t\u00fcm modern konfig\u00fcrasyon y\u00f6netim sistemleri (Ansible, Chef, Puppet, SaltStack, Terraform) dinamik envanter konseptini farkl\u0131 \u015fekillerde destekler. Genellikle bulut sa\u011flay\u0131c\u0131lar i\u00e7in yerle\u015fik eklentileri bulunur veya harici betiklerle entegre edilebilirler.<\/p>\n<p><H3>S2: DigitalOcean API token&#8217;\u0131m\u0131 nas\u0131l g\u00fcvende tutar\u0131m?<\/H3><\/p>\n<p>API token&#8217;\u0131n\u0131z\u0131 asla do\u011frudan kodunuza veya versiyon kontrol sistemine (Git) commit etmeyin. Ortam de\u011fi\u015fkenleri, Ansible Vault, HashiCorp Vault veya di\u011fer s\u0131r y\u00f6netimi ara\u00e7lar\u0131 gibi g\u00fcvenli y\u00f6ntemlerle saklay\u0131n ve sadece gerekti\u011finde eri\u015fime a\u00e7\u0131n.<\/p>\n<p><H3>S3: Mevcut Droplet&#8217;lar\u0131m otomatik olarak envantere eklenecek mi?<\/H3><\/p>\n<p>Evet, dinamik envanter eklentisi veya beti\u011fi her \u00e7al\u0131\u015ft\u0131\u011f\u0131nda DigitalOcean API&#8217;sini sorgulayarak o anki t\u00fcm aktif Droplet&#8217;lar\u0131 (veya belirledi\u011finiz filtrelere uyanlar\u0131) listeler. Mevcut Droplet&#8217;lar\u0131n\u0131z zaten \u00e7al\u0131\u015f\u0131yorsa, otomatik olarak alg\u0131lanacaklard\u0131r.<\/p>\n<p><H3>S4: Yeni Droplet&#8217;lar i\u00e7in SSH anahtar\u0131 nas\u0131l eklenir?<\/H3><\/p>\n<p>Yeni bir Droplet olu\u015ftururken, DigitalOcean API&#8217;si veya kontrol paneli arac\u0131l\u0131\u011f\u0131yla SSH anahtarlar\u0131n\u0131z\u0131 belirtmeniz gerekir. Bu anahtarlar, Droplet&#8217;\u0131n ilk ba\u015flat\u0131lmas\u0131nda otomatik olarak <code>root<\/code> kullan\u0131c\u0131s\u0131 (veya ilk olu\u015fturulan kullan\u0131c\u0131) i\u00e7in ayarlan\u0131r. Konfig\u00fcrasyon y\u00f6netim sisteminiz bu anahtarlar\u0131 kullanarak Droplet&#8217;a ba\u011flan\u0131r.<\/p>\n<p><H3>S5: Bir Droplet silindi\u011finde ne olur?<\/H3><\/p>\n<p>Bir Droplet silindi\u011finde, bir sonraki dinamik envanter sorgusunda DigitalOcean API&#8217;sinden d\u00f6nen listede yer almayacakt\u0131r. Dolay\u0131s\u0131yla, konfig\u00fcrasyon y\u00f6netim sisteminiz de onu otomatik olarak envanterinden \u00e7\u0131karacak ve art\u0131k ona komut g\u00f6ndermeye \u00e7al\u0131\u015fmayacakt\u0131r. Bu, envanterinizin her zaman g\u00fcncel kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme\nModern bulut altyap\u0131lar\u0131nda, sunucular (veya DigitalOcean&#8217;da &#8220;Dropl","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":[1],"tags":[],"class_list":{"0":"post-31195","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Yeni Droplet&#039;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme - 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\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Yeni Droplet&#039;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme\" \/>\n<meta property=\"og:description\" content=\"Yeni Droplet&#039;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme Modern bulut altyap\u0131lar\u0131nda, sunucular (veya DigitalOcean&#039;da &quot;Dropl\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-07T00:41:34+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=\"11 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme\",\"datePublished\":\"2025-10-07T00:41:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\"},\"wordCount\":1713,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\",\"name\":\"Yeni Droplet'lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-07T00:41:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme\"}]},{\"@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":"Yeni Droplet'lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme - 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\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/","og_locale":"tr_TR","og_type":"article","og_title":"Yeni Droplet'lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme","og_description":"Yeni Droplet'lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme Modern bulut altyap\u0131lar\u0131nda, sunucular (veya DigitalOcean'da \"Dropl","og_url":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-07T00:41:34+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme","datePublished":"2025-10-07T00:41:34+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/"},"wordCount":1713,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/","url":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/","name":"Yeni Droplet'lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-07T00:41:34+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/yeni-dropletlari-konfigurasyon-yonetim-sisteminize-otomatik-olarak-ekleme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Yeni Droplet&#8217;lar\u0131 Konfig\u00fcrasyon Y\u00f6netim Sisteminize Otomatik Olarak Ekleme"}]},{"@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\/31195","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=31195"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31195\/revisions"}],"predecessor-version":[{"id":31196,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31195\/revisions\/31196"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}