{"id":38572,"date":"2026-02-03T09:40:49","date_gmt":"2026-02-03T06:40:49","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38572"},"modified":"2026-02-03T09:40:49","modified_gmt":"2026-02-03T06:40:49","slug":"mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/","title":{"rendered":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>DigitalOcean, geli\u015ftiricilere ve i\u015fletmelere bulut altyap\u0131s\u0131 sa\u011flamak i\u00e7in pop\u00fcler ve kullan\u0131m\u0131 kolay bir platformdur. Ancak, zamanla manuel olarak olu\u015fturulmu\u015f veya farkl\u0131 ara\u00e7larla da\u011f\u0131t\u0131lm\u0131\u015f bir\u00e7ok kaynak birikebilir. Altyap\u0131 kod olarak (Infrastructure as Code &#8211; IaC) prensiplerini benimsemek, bu kaynaklar\u0131 y\u00f6netmeyi, s\u00fcrd\u00fcrmeyi ve \u00f6l\u00e7eklendirmeyi \u00e7ok daha verimli hale getirir. Terraform, IaC d\u00fcnyas\u0131nda lider ara\u00e7lardan biridir ve mevcut DigitalOcean varl\u0131klar\u0131n\u0131z\u0131 Terraform y\u00f6netimine almak, altyap\u0131n\u0131z\u0131n gelece\u011fi i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, mevcut DigitalOcean kaynaklar\u0131n\u0131z\u0131 Terraform&#8217;a nas\u0131l aktaraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m, kapsaml\u0131 bir \u015fekilde a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h3>Neden Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarmal\u0131y\u0131z?<\/h3>\n<p>Mevcut bulut kaynaklar\u0131n\u0131 Terraform&#8217;a aktarmak, ilk bak\u0131\u015fta ek bir i\u015f y\u00fck\u00fc gibi g\u00f6r\u00fcnebilir, ancak uzun vadede bir\u00e7ok stratejik avantaj sunar:<\/p>\n<h4>Altyap\u0131 Kod Olarak (IaC) Yakla\u015f\u0131m\u0131n\u0131n Benimsenmesi<\/h4>\n<p>IaC, altyap\u0131y\u0131 kod dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla tan\u0131mlama ve y\u00f6netme prati\u011fidir. Bu, sunucular, veritabanlar\u0131, a\u011f yap\u0131land\u0131rmalar\u0131 gibi t\u00fcm altyap\u0131n\u0131z\u0131n versiyon kontrol sistemlerinde (Git gibi) saklanabilece\u011fi, g\u00f6zden ge\u00e7irilebilece\u011fi ve otomatikle\u015ftirilebilece\u011fi anlam\u0131na gelir. Mevcut kaynaklar\u0131 Terraform&#8217;a aktararak, bu IaC felsefesini eski altyap\u0131n\u0131za da uygulam\u0131\u015f olursunuz.<\/p>\n<h4>Versiyon Kontrol\u00fc ve Denetlenebilirlik<\/h4>\n<p>Altyap\u0131n\u0131z\u0131n kodda olmas\u0131, her de\u011fi\u015fikli\u011fin izlenebilir olmas\u0131n\u0131 sa\u011flar. Kimin ne zaman hangi de\u011fi\u015fikli\u011fi yapt\u0131\u011f\u0131n\u0131 g\u00f6rebilir, gerekti\u011finde \u00f6nceki bir s\u00fcr\u00fcme geri d\u00f6nebilirsiniz. Bu, \u00f6zellikle uyumluluk gereksinimleri olan veya b\u00fcy\u00fck ekiplerle \u00e7al\u0131\u015fan kurulu\u015flar i\u00e7in paha bi\u00e7ilmezdir.<\/p>\n<h4>Tekrarlanabilirlik ve Ola\u011fan\u00fcst\u00fc Durum Kurtarma<\/h4>\n<p>T\u00fcm altyap\u0131n\u0131z kodda tan\u0131mland\u0131\u011f\u0131nda, ayn\u0131 ortam\u0131 farkl\u0131 bir b\u00f6lgede veya tamamen yeni bir hesapta h\u0131zl\u0131ca yeniden olu\u015fturabilirsiniz. Bu, felaket kurtarma senaryolar\u0131nda veya geli\u015ftirme\/test ortamlar\u0131n\u0131 olu\u015ftururken b\u00fcy\u00fck bir avantaj sa\u011flar. Manuel olarak olu\u015fturulmu\u015f altyap\u0131y\u0131 yeniden olu\u015fturmak ise zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve eksik olabilir.<\/p>\n<h4>Tutarl\u0131l\u0131k ve Drift Tespiti<\/h4>\n<p>Terraform, tan\u0131mlad\u0131\u011f\u0131n\u0131z konfig\u00fcrasyon ile buluttaki ger\u00e7ek durum aras\u0131ndaki tutars\u0131zl\u0131klar\u0131 (drift) tespit edebilir. Mevcut kaynaklar\u0131 Terraform&#8217;a aktard\u0131\u011f\u0131n\u0131zda, bu kaynaklar \u00fczerinde yap\u0131lan manuel de\u011fi\u015fiklikler &#8220;drift&#8221; olarak alg\u0131lan\u0131r ve d\u00fczeltilebilir. Bu, altyap\u0131n\u0131z\u0131n her zaman bekledi\u011finiz durumda kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Ekip \u0130\u015fbirli\u011fi ve Verimlilik<\/h4>\n<p>Birden fazla geli\u015ftirici veya operasyon m\u00fchendisinin ayn\u0131 altyap\u0131 \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 durumlarda, Terraform merkezi bir y\u00f6netim arac\u0131 g\u00f6revi g\u00f6r\u00fcr. Herkes ayn\u0131 kod taban\u0131n\u0131 kullan\u0131r, bu da ileti\u015fimi kolayla\u015ft\u0131r\u0131r, hatalar\u0131 azalt\u0131r ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r.<\/p>\n<h3>Terraform&#8217;a Aktar\u0131m \u00d6n Ko\u015fullar\u0131<\/h3>\n<p>Aktar\u0131m i\u015flemine ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<h4>Terraform Kurulumu<\/h4>\n<p>Terraform&#8217;un sisteminizde kurulu ve g\u00fcncel bir s\u00fcr\u00fcm\u00fcn\u00fcn (tercihen 1.5 veya \u00fczeri, zira import komutunda \u00f6nemli iyile\u015ftirmeler var) oldu\u011fundan emin olun. HashiCorp&#8217;un resmi web sitesinden kurulum talimatlar\u0131na ula\u015fabilirsiniz.<\/p>\n<h4>DigitalOcean Hesab\u0131 ve API Token\u0131<\/h4>\n<p>DigitalOcean hesab\u0131n\u0131z\u0131n olmas\u0131 ve Terraform&#8217;un DigitalOcean kaynaklar\u0131n\u0131z\u0131 y\u00f6netebilmesi i\u00e7in bir API token\u0131na ihtiyac\u0131n\u0131z vard\u0131r. Bu token\u0131 DigitalOcean kontrol panelinizden &#8220;API&#8221; b\u00f6l\u00fcm\u00fcnden olu\u015fturabilirsiniz. Token\u0131n okuma ve yazma izinlerine sahip oldu\u011fundan emin olun. Bu token\u0131 ortam de\u011fi\u015fkeni olarak (<code>DIGITALOCEAN_TOKEN<\/code>) veya Terraform sa\u011flay\u0131c\u0131 blo\u011funda (<code>token = \"...\"<\/code>) belirtebilirsiniz. Ortam de\u011fi\u015fkeni kullanmak, g\u00fcvenlik a\u00e7\u0131s\u0131ndan daha iyi bir yakla\u015f\u0131md\u0131r.<\/p>\n<h4>Terraform Temel Bilgisi<\/h4>\n<p>Terraform sa\u011flay\u0131c\u0131lar\u0131 (providers), kaynaklar (resources), veri kaynaklar\u0131 (data sources) ve durum dosyas\u0131 (state file) gibi temel kavramlara a\u015fina olman\u0131z, aktar\u0131m s\u00fcrecini daha iyi anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h4><code>doctl<\/code> CLI (\u0130ste\u011fe Ba\u011fl\u0131 ama Faydal\u0131)<\/h4>\n<p>DigitalOcean CLI arac\u0131 olan <code>doctl<\/code>, mevcut kaynaklar\u0131n\u0131z\u0131n ID&#8217;lerini ve detaylar\u0131n\u0131 h\u0131zl\u0131ca sorgulamak i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r. Kurulumu basit olup, API token\u0131n\u0131z ile yap\u0131land\u0131r\u0131ld\u0131ktan sonra t\u00fcm DigitalOcean kaynaklar\u0131n\u0131za komut sat\u0131r\u0131ndan eri\u015febilirsiniz.<\/p>\n<h3>Terraform Aktar\u0131m Mekanizmas\u0131n\u0131 Anlama: <code>terraform import<\/code><\/h3>\n<p>Terraform&#8217;un mevcut kaynaklar\u0131 y\u00f6netimine alma arac\u0131 <code>terraform import<\/code> komutudur. Bu komutun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve neyi yap\u0131p neyi yapmad\u0131\u011f\u0131n\u0131 anlamak \u00e7ok \u00f6nemlidir.<\/p>\n<h4><code>terraform import<\/code> Komutunun S\u00f6z Dizimi<\/h4>\n<p>Temel s\u00f6z dizimi \u015f\u00f6yledir:<\/p>\n<pre><code class=\"language-bash\">terraform import [options] ADRES ID<\/code><\/pre>\n<p>*   <strong><code>ADRES<\/code><\/strong>: Bu, Terraform yap\u0131land\u0131rman\u0131zda tan\u0131mlanacak olan kayna\u011f\u0131n adresidir. \u00d6rne\u011fin, <code>digitalocean_droplet.my_droplet<\/code>. Buradaki <code>digitalocean_droplet<\/code>, Terraform DigitalOcean sa\u011flay\u0131c\u0131s\u0131n\u0131n bir kaynak t\u00fcr\u00fcd\u00fcr ve <code>my_droplet<\/code> ise bu kayna\u011fa verdi\u011finiz yerel isimdir. Bu isim, Terraform state dosyas\u0131nda ve HCL konfig\u00fcrasyonunuzda kayna\u011f\u0131 referans almak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong><code>ID<\/code><\/strong>: Bu, bulut sa\u011flay\u0131c\u0131n\u0131n (bu durumda DigitalOcean) mevcut kayna\u011fa atad\u0131\u011f\u0131 benzersiz tan\u0131mlay\u0131c\u0131d\u0131r. \u00d6rne\u011fin, bir Droplet&#8217;in ID&#8217;si say\u0131sal bir de\u011ferdir (\u00f6rn. <code>12345678<\/code>). Bir domain i\u00e7in ise ID genellikle domain ad\u0131n\u0131n kendisidir (\u00f6rn. <code>example.com<\/code>). Bu ID&#8217;yi DigitalOcean kontrol panelinden veya <code>doctl<\/code> komutlar\u0131 arac\u0131l\u0131\u011f\u0131yla bulabilirsiniz.<\/p>\n<h4><code>terraform import<\/code> Ne Yapar, Ne Yapmaz?<\/h4>\n<p>*   <strong>Ne Yapar?<\/strong> <code>terraform import<\/code> komutu, yaln\u0131zca belirtilen bulut kayna\u011f\u0131n\u0131 Terraform durum dosyas\u0131na (<code>terraform.tfstate<\/code>) ekler. Bu, Terraform&#8217;un art\u0131k bu kayna\u011f\u0131n varl\u0131\u011f\u0131ndan haberdar oldu\u011fu ve gelecekteki <code>terraform plan<\/code> ve <code>terraform apply<\/code> i\u015flemlerinde bu kayna\u011f\u0131 dikkate alaca\u011f\u0131 anlam\u0131na gelir.<br \/>\n*   <strong>Ne Yapmaz?<\/strong> <strong>\u00c7ok \u00f6nemli bir nokta:<\/strong> <code>terraform import<\/code> komutu, bu kayna\u011f\u0131 tan\u0131mlayan HCL (HashiCorp Configuration Language) kodunu otomatik olarak olu\u015fturmaz! HCL kodunu sizin manuel olarak yazman\u0131z veya Terraform 1.5+ s\u00fcr\u00fcmlerindeki yeni \u00f6zelliklerden faydalanarak otomatik olu\u015fturmas\u0131n\u0131 sa\u011flaman\u0131z gerekir. Bu, aktar\u0131m s\u00fcrecinin en kritik ve genellikle en \u00e7ok zaman alan ad\u0131m\u0131d\u0131r. HCL kodunuz, DigitalOcean&#8217;daki kayna\u011f\u0131n mevcut durumuyla tam olarak e\u015fle\u015fmelidir. Aksi takdirde, <code>terraform plan<\/code> \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda &#8220;de\u011fi\u015fiklikler&#8221; g\u00f6receksiniz.<\/p>\n<h3>Ad\u0131m Ad\u0131m Mevcut DigitalOcean Kaynaklar\u0131n\u0131 Terraform&#8217;a Aktarma S\u00fcreci<\/h3>\n<p>\u015eimdi, genel bir i\u015f ak\u0131\u015f\u0131yla mevcut DigitalOcean kaynaklar\u0131n\u0131 Terraform&#8217;a aktarma ad\u0131mlar\u0131n\u0131 inceleyelim.<\/p>\n<h4>Ad\u0131m 1: Mevcut Varl\u0131klar\u0131 Tan\u0131mlama ve ID&#8217;lerini Bulma<\/h4>\n<p>Aktarmak istedi\u011finiz DigitalOcean kaynaklar\u0131n\u0131 (Droplet&#8217;ler, VPC&#8217;ler, Load Balancer&#8217;lar, Domain&#8217;ler vb.) belirleyin. Her bir kaynak i\u00e7in benzersiz ID&#8217;sini not al\u0131n.<\/p>\n<p>*   <strong>DigitalOcean Kontrol Paneli:<\/strong> \u00c7o\u011fu kayna\u011f\u0131n detay sayfas\u0131nda ID&#8217;sini bulabilirsiniz.<br \/>\n*   <strong><code>doctl<\/code> CLI:<\/strong><br \/>\n    *   Droplet&#8217;ler i\u00e7in: <code>doctl compute droplet list<\/code><br \/>\n    *   VPC&#8217;ler i\u00e7in: <code>doctl compute vpc list<\/code><br \/>\n    *   Load Balancer&#8217;lar i\u00e7in: <code>doctl compute load-balancer list<\/code><br \/>\n    *   Domain&#8217;ler i\u00e7in: <code>doctl compute domain list<\/code> (ID yerine do\u011frudan domain ad\u0131n\u0131 kullanacaks\u0131n\u0131z)<br \/>\n    *   Volume&#8217;ler i\u00e7in: <code>doctl compute volume list<\/code><\/p>\n<h4>Ad\u0131m 2: Yeni Bir Terraform Projesi Ba\u015flatma<\/h4>\n<p>Aktar\u0131lacak kaynaklar i\u00e7in yeni bir dizin olu\u015fturun ve i\u00e7ine girin:<\/p>\n<pre><code class=\"language-bash\">mkdir digitalocean-import\ncd digitalocean-import<\/code><\/pre>\n<p>Bu dizin i\u00e7inde, Terraform yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131 (\u00f6rne\u011fin, <code>main.tf<\/code>, <code>provider.tf<\/code>) olu\u015fturacaks\u0131n\u0131z.<\/p>\n<p>\u00d6ncelikle DigitalOcean sa\u011flay\u0131c\u0131s\u0131n\u0131 tan\u0131mlayan bir dosya olu\u015ftural\u0131m (\u00f6rne\u011fin, <code>provider.tf<\/code>):<\/p>\n<pre><code class=\"language-terraform\"># provider.tf\nterraform {\n  required_providers {\n    digitalocean = {\n      source = \"digitalocean\/digitalocean\"\n      version = \"~> 2.0\" # Kulland\u0131\u011f\u0131n\u0131z versiyona g\u00f6re g\u00fcncelleyin\n    }\n  }\n}\n\nprovider \"digitalocean\" {\n  # API token'\u0131n\u0131z\u0131 do\u011frudan buraya yazmak yerine ortam de\u011fi\u015fkeni kullanmak daha g\u00fcvenlidir.\n  # token = var.do_token \n}\n\n<h2>vars.tf (iste\u011fe ba\u011fl\u0131, token\u0131 tan\u0131mlamak i\u00e7in)<\/h2>\nvariable \"do_token\" {\n  description = \"DigitalOcean API Token\"\n  type        = string\n  sensitive   = true\n}<\/code><\/pre>\n<p>Ard\u0131ndan, <code>terraform init<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak sa\u011flay\u0131c\u0131y\u0131 indirin ve projenizi ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">terraform init<\/code><\/pre>\n<p>E\u011fer <code>do_token<\/code> de\u011fi\u015fkenini kullan\u0131yorsan\u0131z, <code>TF_VAR_do_token<\/code> ortam de\u011fi\u015fkenini ayarlayarak token\u0131 sa\u011flayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">export TF_VAR_do_token=\"your_digitalocean_api_token\"<\/code><\/pre>\n<h4>Ad\u0131m 3: Terraform Kaynak Bloklar\u0131n\u0131 Olu\u015fturma (Bo\u015f veya Minimal)<\/h4>\n<p>Bu ad\u0131m, <code>terraform import<\/code> komutunun \u00e7al\u0131\u015fabilmesi i\u00e7in kritik bir \u00f6n ko\u015fuldur. Terraform, aktar\u0131lacak kayna\u011f\u0131 hangi HCL blo\u011funa ba\u011flayaca\u011f\u0131n\u0131 bilmelidir. Ba\u015flang\u0131\u00e7ta, sadece kaynak t\u00fcr\u00fcn\u00fc ve yerel ad\u0131n\u0131 i\u00e7eren bo\u015f veya minimal bir blok olu\u015fturabilirsiniz.<\/p>\n<p>\u00d6rne\u011fin, bir Droplet&#8217;i aktarmak i\u00e7in <code>main.tf<\/code> dosyan\u0131za \u015funlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-terraform\"># main.tf\nresource \"digitalocean_droplet\" \"my_existing_droplet\" {\n  # Bu blo\u011fu ba\u015flang\u0131\u00e7ta bo\u015f b\u0131rakabiliriz\n}<\/code><\/pre>\n<p>Burada <code>digitalocean_droplet<\/code> Terraform DigitalOcean sa\u011flay\u0131c\u0131s\u0131n\u0131n Droplet kaynak t\u00fcr\u00fcn\u00fc, <code>my_existing_droplet<\/code> ise bu Droplet&#8217;e Terraform projenizde verece\u011fimiz yerel ad\u0131 temsil eder.<\/p>\n<h4>Ad\u0131m 4: Kayna\u011f\u0131 Terraform State&#8217;ine Aktarma<\/h4>\n<p>\u015eimdi <code>terraform import<\/code> komutunu kullanarak DigitalOcean&#8217;daki mevcut kayna\u011f\u0131 Terraform durum dosyas\u0131na aktaral\u0131m. \u00d6nceki ad\u0131mdaki Droplet \u00f6rne\u011fini kullanarak:<\/p>\n<pre><code class=\"language-bash\">terraform import digitalocean_droplet.my_existing_droplet 12345678<\/code><\/pre>\n<p>Burada <code>12345678<\/code> yerine kendi Droplet&#8217;inizin ID&#8217;sini yazmal\u0131s\u0131n\u0131z. Komut ba\u015far\u0131yla tamamland\u0131\u011f\u0131nda, Terraform durum dosyan\u0131zda bu Droplet&#8217;in bir giri\u015fi olacakt\u0131r.<\/p>\n<p><code>terraform state list<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak aktar\u0131lan kayna\u011f\u0131 g\u00f6rebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">terraform state list\n<h2>digitalocean_droplet.my_existing_droplet<\/code><\/pre>\n<\/h2>\n<h4>Ad\u0131m 5: Aktar\u0131lan Kayna\u011f\u0131n Konfig\u00fcrasyonunu Olu\u015fturma\/Do\u011frulama<\/h4>\n<p>Bu, aktar\u0131m s\u00fcrecinin en \u00f6nemli ve genellikle en zorlu k\u0131sm\u0131d\u0131r. <code>terraform import<\/code> komutu yaln\u0131zca kayna\u011f\u0131 state dosyas\u0131na ekler, ancak HCL yap\u0131land\u0131rmas\u0131n\u0131 sizin i\u00e7in olu\u015fturmaz. Art\u0131k <code>main.tf<\/code> dosyas\u0131ndaki bo\u015f kaynak blo\u011funu, DigitalOcean&#8217;daki ger\u00e7ek kayna\u011f\u0131n mevcut \u00f6zelliklerini yans\u0131tacak \u015fekilde doldurman\u0131z gerekmektedir.<\/p>\n<p>Bunu yapman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<p>1.  <strong>Manuel Olarak Yazma:<\/strong> DigitalOcean kontrol panelinden veya <code>doctl<\/code> komutlar\u0131ndan kayna\u011f\u0131n t\u00fcm \u00f6zelliklerini (isim, b\u00f6lge, boyut, imaj, etiketler, VPC ID&#8217;si vb.) alarak HCL blo\u011funu manuel olarak yazabilirsiniz.<br \/>\n2.  <strong><code>terraform state show<\/code> Komutunu Kullanma:<\/strong> Aktar\u0131lan kayna\u011f\u0131n Terraform state dosyas\u0131ndaki detaylar\u0131n\u0131 g\u00f6rmek i\u00e7in <code>terraform state show<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">terraform state show digitalocean_droplet.my_existing_droplet<\/code><\/pre>\n<p>    Bu komutun \u00e7\u0131kt\u0131s\u0131, Terraform&#8217;un bu Droplet hakk\u0131nda bildi\u011fi t\u00fcm \u00f6zellikleri g\u00f6sterecektir. Bu \u00e7\u0131kt\u0131y\u0131 referans alarak <code>main.tf<\/code> dosyan\u0131zdaki <code>digitalocean_droplet.my_existing_droplet<\/code> blo\u011funu doldurabilirsiniz.<\/p>\n<p>3.  <strong>Terraform 1.5+ ile Otomatik HCL \u00dcretimi (\u00d6nerilen):<\/strong> Terraform 1.5 s\u00fcr\u00fcm\u00fcyle birlikte <code>terraform import<\/code> komutuna <code>-generate-config-out<\/code> bayra\u011f\u0131 eklendi. Bu bayrak, import i\u015flemi s\u0131ras\u0131nda otomatik olarak bir HCL yap\u0131land\u0131rma dosyas\u0131 olu\u015fturman\u0131za olanak tan\u0131r. Bu, manuel yazma y\u00fck\u00fcn\u00fc b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<p>    E\u011fer Terraform 1.5 veya daha yeni bir s\u00fcr\u00fcm kullan\u0131yorsan\u0131z, Ad\u0131m 3&#8217;teki bo\u015f HCL blo\u011funu olu\u015fturmaya gerek kalmadan do\u011frudan \u015fu komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">terraform import -generate-config-out=generated_droplet.tf digitalocean_droplet.my_existing_droplet 12345678<\/code><\/pre>\n<p>    Bu komut, <code>generated_droplet.tf<\/code> ad\u0131nda bir dosya olu\u015fturacak ve i\u00e7ine <code>my_existing_droplet<\/code> ad\u0131nda bir <code>digitalocean_droplet<\/code> kayna\u011f\u0131n\u0131n HCL kodunu yazacakt\u0131r. Bu dosyay\u0131 daha sonra <code>main.tf<\/code> dosyan\u0131za ta\u015f\u0131yabilir veya mevcut <code>main.tf<\/code> dosyan\u0131zdaki blo\u011fu bu \u00e7\u0131kt\u0131ya g\u00f6re g\u00fcncelleyebilirsiniz.<\/p>\n<p>HCL konfig\u00fcrasyonunuzu tamamlad\u0131ktan sonra, <code>terraform plan<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak konfig\u00fcrasyonunuzun DigitalOcean&#8217;daki ger\u00e7ek durumla e\u015fle\u015fti\u011finden emin olun:<\/p>\n<pre><code class=\"language-bash\">terraform plan<\/code><\/pre>\n<p>E\u011fer her \u015fey do\u011fruysa, <code>terraform plan<\/code> \u00e7\u0131kt\u0131s\u0131 &#8220;No changes. Your infrastructure matches the configuration.&#8221; (De\u011fi\u015fiklik yok. Altyap\u0131n\u0131z konfig\u00fcrasyonla e\u015fle\u015fiyor.) veya benzeri bir mesaj g\u00f6stermelidir. E\u011fer de\u011fi\u015fiklikler g\u00f6steriyorsa, HCL konfig\u00fcrasyonunuzda eksik veya yanl\u0131\u015f parametreler var demektir. Bu durumda, <code>terraform plan<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 dikkatlice inceleyerek HCL kodunuzu g\u00fcncelleyin ve tekrar <code>terraform plan<\/code> \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<h3>Yayg\u0131n DigitalOcean Kaynaklar\u0131 i\u00e7in Detayl\u0131 Aktar\u0131m \u00d6rnekleri<\/h3>\n<p>\u015eimdi, farkl\u0131 DigitalOcean kaynak t\u00fcrleri i\u00e7in ad\u0131m ad\u0131m aktar\u0131m \u00f6rneklerini inceleyelim.<\/p>\n<h4>Droplet (Sanal Sunucu) Aktar\u0131m\u0131<\/h4>\n<p>1.  <strong>Droplet ID&#8217;sini Bulma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet list\n    # ID       Name          Public IPv4     Memory    VCPUs    Disk    Region    Status    Tags\n    # 12345678 my-web-server 192.0.2.10      2GB       1        50GB    nyc3      active    web<\/code><\/pre>\n<p>    ID: <code>12345678<\/code><br \/>\n2.  <strong>Minimal HCL Blo\u011fu (Terraform < 1.5 i\u00e7in):<\/strong><\/p>\n<pre><code class=\"language-terraform\"># main.tf\n    resource \"digitalocean_droplet\" \"my_web_server\" {}<\/code><\/pre>\n<p>3.  <strong>Aktar\u0131m Komutu:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import digitalocean_droplet.my_web_server 12345678<\/code><\/pre>\n<p>4.  <strong>HCL Konfig\u00fcrasyonunu Tamamlama (Manuel veya <code>terraform state show<\/code> ile):<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform state show digitalocean_droplet.my_web_server<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131ya g\u00f6re <code>main.tf<\/code> dosyas\u0131n\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_droplet\" \"my_web_server\" {\n      image    = \"ubuntu-22-04-x64\"\n      name     = \"my-web-server\"\n      region   = \"nyc3\"\n      size     = \"s-1vcpu-2gb\"\n      ssh_keys = [\"your_ssh_key_fingerprint_or_id\"] # Varsa ekleyin\n      vpc_uuid = \"your_vpc_uuid\" # Varsa ekleyin\n      tags     = [\"web\", \"production\"] # Varsa ekleyin\n      # Di\u011fer t\u00fcm ilgili parametreleri ekleyin\n    }<\/code><\/pre>\n<p>    <strong>Terraform 1.5+ i\u00e7in Otomatik HCL \u00dcretimi:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import -generate-config-out=droplet_config.tf digitalocean_droplet.my_web_server 12345678<\/code><\/pre>\n<p>    <code>droplet_config.tf<\/code> dosyas\u0131n\u0131 inceleyin ve gerekirse d\u00fczenleyin.<br \/>\n5.  <strong>Do\u011frulama:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform plan<\/code><\/pre>\n<h4>VPC (Sanal \u00d6zel Bulut) Aktar\u0131m\u0131<\/h4>\n<p>1.  <strong>VPC ID&#8217;sini Bulma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute vpc list\n    # ID                                    Name           Region    IP Range        Description\n    # 9a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d  my-production-vpc nyc3      10.10.0.0\/20    Production network<\/code><\/pre>\n<p>    ID: <code>9a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d<\/code><br \/>\n2.  <strong>Minimal HCL Blo\u011fu:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_vpc\" \"my_production_vpc\" {}<\/code><\/pre>\n<p>3.  <strong>Aktar\u0131m Komutu:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import digitalocean_vpc.my_production_vpc 9a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d<\/code><\/pre>\n<p>4.  <strong>HCL Konfig\u00fcrasyonunu Tamamlama:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_vpc\" \"my_production_vpc\" {\n      name        = \"my-production-vpc\"\n      region      = \"nyc3\"\n      ip_range    = \"10.10.0.0\/20\"\n      description = \"Production network\"\n    }<\/code><\/pre>\n<p>    <strong>Terraform 1.5+ i\u00e7in Otomatik HCL \u00dcretimi:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import -generate-config-out=vpc_config.tf digitalocean_vpc.my_production_vpc 9a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d<\/code><\/pre>\n<p>5.  <strong>Do\u011frulama:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform plan<\/code><\/pre>\n<h4>Load Balancer Aktar\u0131m\u0131<\/h4>\n<p>1.  <strong>Load Balancer ID&#8217;sini Bulma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute load-balancer list\n    # ID                                    Name         Status    IP                 Algorithm    Region    Droplet IDs\n    # f1e2d3c4-b5a6-9d8c-7e6f-5a4b3c2d1e0f  my-lb        active    192.0.2.20         round_robin  nyc3      [12345678, 87654321]<\/code><\/pre>\n<p>    ID: <code>f1e2d3c4-b5a6-9d8c-7e6f-5a4b3c2d1e0f<\/code><br \/>\n2.  <strong>Minimal HCL Blo\u011fu:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_load_balancer\" \"my_lb\" {}<\/code><\/pre>\n<p>3.  <strong>Aktar\u0131m Komutu:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import digitalocean_load_balancer.my_lb f1e2d3c4-b5a6-9d8c-7e6f-5a4b3c2d1e0f<\/code><\/pre>\n<p>4.  <strong>HCL Konfig\u00fcrasyonunu Tamamlama:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_load_balancer\" \"my_lb\" {\n      name      = \"my-lb\"\n      region    = \"nyc3\"\n      vpc_uuid  = digitalocean_vpc.my_production_vpc.id # E\u011fer VPC'niz de Terraform taraf\u0131ndan y\u00f6netiliyorsa\n      forwarding_rules {\n        entry_protocol    = \"http\"\n        entry_port        = 80\n        target_protocol   = \"http\"\n        target_port       = 80\n        # certificate_id    = \"your_certificate_id\" # HTTPS i\u00e7in\n        # tls_passthrough   = false\n      }\n      healthcheck {\n        protocol = \"tcp\"\n        port     = 80\n        path     = \"\/\"\n        check_interval_seconds = 10\n        response_timeout_seconds = 5\n        unhealthy_threshold = 3\n        healthy_threshold = 5\n      }\n      droplet_ids = [\n        digitalocean_droplet.my_web_server.id, # E\u011fer Droplet'leriniz de Terraform taraf\u0131ndan y\u00f6netiliyorsa\n        # E\u011fer Droplet'ler manuel olarak y\u00f6netiliyorsa ID'lerini do\u011frudan buraya yazabilirsiniz\n      ]\n      # Di\u011fer ilgili parametreleri ekleyin (sticky_sessions, firewall, vb.)\n    }<\/code><\/pre>\n<p>    <strong>Terraform 1.5+ i\u00e7in Otomatik HCL \u00dcretimi:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import -generate-config-out=lb_config.tf digitalocean_load_balancer.my_lb f1e2d3c4-b5a6-9d8c-7e6f-5a4b3c2d1e0f<\/code><\/pre>\n<p>5.  <strong>Do\u011frulama:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform plan<\/code><\/pre>\n<h4>Domain (Alan Ad\u0131) Aktar\u0131m\u0131<\/h4>\n<p>DigitalOcean&#8217;da domainler i\u00e7in ID yerine do\u011frudan domain ad\u0131n\u0131 kullan\u0131rs\u0131n\u0131z.<\/p>\n<p>1.  <strong>Domain Ad\u0131n\u0131 Bulma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute domain list\n    # Name          TTL\n    # example.com   1800<\/code><\/pre>\n<p>    Domain Ad\u0131: <code>example.com<\/code><br \/>\n2.  <strong>Minimal HCL Blo\u011fu:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_domain\" \"my_domain\" {}<\/code><\/pre>\n<p>3.  <strong>Aktar\u0131m Komutu:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import digitalocean_domain.my_domain example.com<\/code><\/pre>\n<p>4.  <strong>HCL Konfig\u00fcrasyonunu Tamamlama:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_domain\" \"my_domain\" {\n      name = \"example.com\"\n    }<\/code><\/pre>\n<p>    <strong>Terraform 1.5+ i\u00e7in Otomatik HCL \u00dcretimi:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform import -generate-config-out=domain_config.tf digitalocean_domain.my_domain example.com<\/code><\/pre>\n<p>    <strong>Not:<\/strong> Domain aktar\u0131m\u0131 sadece domain kayd\u0131n\u0131 state&#8217;e ekler. \u0130\u00e7indeki DNS kay\u0131tlar\u0131n\u0131 (A, CNAME, MX vb.) ayr\u0131ca <code>digitalocean_record<\/code> kaynaklar\u0131n\u0131 kullanarak aktarman\u0131z veya olu\u015fturman\u0131z gerekecektir. Her bir DNS kayd\u0131 i\u00e7in ayr\u0131 bir <code>digitalocean_record<\/code> kayna\u011f\u0131 olu\u015fturup <code>terraform import<\/code> etmeniz gerekir.<\/p>\n<p>    \u00d6rnek DNS kayd\u0131 aktar\u0131m\u0131:<br \/>\n    *   <strong>Kay\u0131t ID&#8217;sini bulma:<\/strong> <code>doctl compute domain records list example.com<\/code><br \/>\n    *   <strong>Minimal HCL Blo\u011fu:<\/strong> <code>resource \"digitalocean_record\" \"www_record\" {}<\/code><br \/>\n    *   <strong>Aktar\u0131m Komutu:<\/strong> <code>terraform import digitalocean_record.www_record <record_id><\/code><br \/>\n    *   <strong>HCL Tamamlama:<\/strong><\/p>\n<pre><code class=\"language-terraform\">resource \"digitalocean_record\" \"www_record\" {\n          domain = digitalocean_domain.my_domain.name\n          type   = \"A\"\n          name   = \"www\"\n          value  = digitalocean_droplet.my_web_server.ipv4_address # Veya do\u011frudan IP adresi\n          ttl    = 3600\n        }<\/code><\/pre>\n<p>5.  <strong>Do\u011frulama:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform plan<\/code><\/pre>\n<h3>Geli\u015fmi\u015f Hususlar ve En \u0130yi Uygulamalar<\/h3>\n<p>Aktar\u0131m s\u00fcreci sadece teknik ad\u0131mlardan ibaret de\u011fildir; ayn\u0131 zamanda uzun vadeli s\u00fcrd\u00fcr\u00fclebilirlik i\u00e7in baz\u0131 en iyi uygulamalar\u0131 ve geli\u015fmi\u015f konular\u0131 da g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir.<\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Y\u00f6netimi<\/h4>\n<p>Kaynaklar genellikle birbirine ba\u011f\u0131ml\u0131d\u0131r (\u00f6rne\u011fin, bir Droplet bir VPC i\u00e7inde bulunur). Aktar\u0131m yaparken, bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak kaynaklar\u0131 mant\u0131ksal bir s\u0131rayla aktarmak iyi bir uygulamad\u0131r. \u00d6rne\u011fin, \u00f6nce VPC&#8217;yi, sonra VPC i\u00e7indeki Droplet&#8217;leri veya Load Balancer&#8217;lar\u0131 aktar\u0131n. Terraform HCL&#8217;de bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 <code>depends_on<\/code> meta-arg\u00fcman\u0131 ile veya kaynaklar\u0131n \u00e7\u0131kt\u0131lar\u0131n\u0131 (output) kullanarak ifade edebilirsiniz.<\/p>\n<h4>Uzaktan Durum Y\u00f6netimi (Remote State)<\/h4>\n<p><code>terraform import<\/code> i\u015flemi yerel bir <code>terraform.tfstate<\/code> dosyas\u0131 olu\u015fturur. Ancak, ekip i\u00e7inde \u00e7al\u0131\u015f\u0131rken veya daha sa\u011flam bir \u00e7\u00f6z\u00fcm ararken, durum dosyas\u0131n\u0131 uzaktan bir depoda (DigitalOcean Spaces, AWS S3, Azure Blob Storage, Terraform Cloud gibi) saklamak esast\u0131r. Bu, durum dosyas\u0131n\u0131n kaybolmas\u0131n\u0131 \u00f6nler, e\u015f zamanl\u0131 eri\u015fimi y\u00f6netir ve durum kilitlenmesini sa\u011flar.<\/p>\n<p>\u00d6rnek DigitalOcean Spaces ile uzaktan durum yap\u0131land\u0131rmas\u0131 (<code>backend.tf<\/code>):<\/p>\n<pre><code class=\"language-terraform\">terraform {\n  backend \"s3\" {\n    endpoint                    = \"nyc3.digitaloceanspaces.com\" # B\u00f6lgenize g\u00f6re de\u011fi\u015fir\n    region                      = \"nyc3\"\n    bucket                      = \"my-terraform-state-bucket\"\n    key                         = \"digitalocean\/terraform.tfstate\"\n    access_key                  = \"your_spaces_access_key\" # Ortam de\u011fi\u015fkeni olarak ayarlay\u0131n\n    secret_key                  = \"your_spaces_secret_key\" # Ortam de\u011fi\u015fkeni olarak ayarlay\u0131n\n    skip_region_validation      = true\n    skip_credentials_validation = true\n  }\n}<\/code><\/pre>\n<p><code>TF_VAR_spaces_access_key<\/code> ve <code>TF_VAR_spaces_secret_key<\/code> gibi ortam de\u011fi\u015fkenlerini kullanmay\u0131 unutmay\u0131n.<\/p>\n<h4>Mod\u00fclerle\u015ftirme<\/h4>\n<p>B\u00fcy\u00fck ve karma\u015f\u0131k altyap\u0131lar\u0131 tek bir <code>main.tf<\/code> dosyas\u0131nda y\u00f6netmek zorla\u015fabilir. Kaynaklar\u0131 mant\u0131ksal gruplara ay\u0131rarak (\u00f6rne\u011fin, a\u011f, i\u015flem, veritaban\u0131 gibi) Terraform mod\u00fclleri olu\u015fturmak, kodun okunabilirli\u011fini, yeniden kullan\u0131labilirli\u011fini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini art\u0131r\u0131r. Aktar\u0131m sonras\u0131, bu mod\u00fcler yap\u0131y\u0131 uygulamak i\u00e7in kaynaklar\u0131n\u0131z\u0131 yeniden d\u00fczenlemeyi d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h4>Hassas Verilerin Y\u00f6netimi<\/h4>\n<p>API tokenlar\u0131, veritaban\u0131 \u015fifreleri gibi hassas verileri do\u011frudan HCL dosyalar\u0131n\u0131za yazmaktan ka\u00e7\u0131n\u0131n. Bunun yerine, ortam de\u011fi\u015fkenleri, Terraform de\u011fi\u015fkenleri (<code>sensitive = true<\/code> ile) veya bir s\u0131r y\u00f6neticisi (Vault gibi) kullan\u0131n.<\/p>\n<h4>Test ve Do\u011frulama<\/h4>\n<p>Her <code>terraform import<\/code> ve HCL konfig\u00fcrasyonu g\u00fcncellemesinden sonra mutlaka <code>terraform plan<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. <code>terraform plan<\/code> \u00e7\u0131kt\u0131s\u0131 &#8220;No changes&#8221; g\u00f6stermiyorsa, konfig\u00fcrasyonunuz DigitalOcean&#8217;daki ger\u00e7ek durumu yans\u0131tm\u0131yor demektir. Bu durumda, HCL kodunuzu dikkatlice g\u00f6zden ge\u00e7irmeniz ve d\u00fczeltmeniz gerekir. M\u00fcmk\u00fcnse, aktar\u0131m i\u015flemlerini \u00fcretim d\u0131\u015f\u0131 bir ortamda test edin.<\/p>\n<h4>Hatalarla Ba\u015fa \u00c7\u0131kma<\/h4>\n<p>*   <strong>Kaynak Bulunamad\u0131:<\/strong> <code>terraform import<\/code> komutu &#8220;resource not found&#8221; hatas\u0131 veriyorsa, ID&#8217;nin do\u011fru oldu\u011fundan ve kayna\u011f\u0131n ger\u00e7ekten mevcut oldu\u011fundan emin olun.<br \/>\n*   <strong>HCL Uyu\u015fmazl\u0131\u011f\u0131:<\/strong> <code>terraform plan<\/code> komutu s\u00fcrekli de\u011fi\u015fiklikler g\u00f6steriyorsa, HCL kodunuzdaki parametrelerin DigitalOcean&#8217;daki ger\u00e7ek de\u011ferlerle birebir e\u015fle\u015fti\u011finden emin olun. \u00d6zellikle varsay\u0131lan de\u011ferler, bo\u015f dizeler veya say\u0131sal tiplerdeki farkl\u0131l\u0131klar sorunlara yol a\u00e7abilir.<br \/>\n*   <strong>Ba\u011f\u0131ml\u0131l\u0131k Hatalar\u0131:<\/strong> Bir kayna\u011f\u0131 aktarmaya \u00e7al\u0131\u015f\u0131rken ba\u011f\u0131ml\u0131l\u0131k hatas\u0131 al\u0131yorsan\u0131z, \u00f6nce ba\u011f\u0131ml\u0131 oldu\u011fu kaynaklar\u0131 (\u00f6rne\u011fin, bir Droplet&#8217;i aktarmadan \u00f6nce VPC&#8217;sini) aktarmay\u0131 deneyin.<\/p>\n<h3>S\u0131n\u0131rlamalar ve Alternatifler<\/h3>\n<p>Her ne kadar <code>terraform import<\/code> g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, baz\u0131 s\u0131n\u0131rlamalar\u0131 ve alternatif yakla\u015f\u0131mlar\u0131 vard\u0131r:<\/p>\n<p>*   <strong>T\u00fcm Kaynaklar Desteklenmeyebilir:<\/strong> DigitalOcean sa\u011flay\u0131c\u0131s\u0131 kapsaml\u0131 olsa da, \u00e7ok yeni veya nadir kullan\u0131lan baz\u0131 DigitalOcean kaynak t\u00fcrleri i\u00e7in do\u011frudan Terraform deste\u011fi hen\u00fcz olmayabilir. Bu durumda, bu kaynaklar\u0131 manuel olarak y\u00f6netmeye devam etmek veya \u00f6zel sa\u011flay\u0131c\u0131lar\/null_resource gibi \u00e7\u00f6z\u00fcmler aramak gerekebilir.<br \/>\n*   <strong>Karma\u015f\u0131k Kaynaklar:<\/strong> Baz\u0131 kaynaklar (\u00f6rne\u011fin, \u00e7ok say\u0131da kurala sahip g\u00fcvenlik duvarlar\u0131 veya karma\u015f\u0131k veritaban\u0131 yap\u0131land\u0131rmalar\u0131) o kadar karma\u015f\u0131k olabilir ki, HCL kodunu manuel olarak yazmak veya otomatik \u00fcretilen kodu d\u00fczenlemek bile hataya a\u00e7\u0131k ve zaman al\u0131c\u0131 olabilir.<br \/>\n*   <strong>Manuel Yeniden Olu\u015fturma:<\/strong> \u00c7ok basit ve az say\u0131da kayna\u011f\u0131n\u0131z varsa, bunlar\u0131 <code>terraform import<\/code> ile aktarmak yerine do\u011frudan Terraform HCL&#8217;de yeniden tan\u0131mlay\u0131p mevcut kaynaklar\u0131 silip ba\u015ftan olu\u015fturmak bazen daha h\u0131zl\u0131 ve daha az karma\u015f\u0131k olabilir. Ancak bu, kesinti gerektirebilir ve dikkatli planlama ister.<br \/>\n*   <strong><code>terraform state mv<\/code> ve <code>terraform state rm<\/code>:<\/strong> Aktar\u0131m sonras\u0131 veya genel olarak Terraform state y\u00f6netimi s\u0131ras\u0131nda, kaynaklar\u0131 yeniden adland\u0131rmak (<code>mv<\/code>) veya state dosyas\u0131ndan kald\u0131rmak (<code>rm<\/code>) i\u00e7in bu komutlar\u0131 kullanman\u0131z gerekebilir. Dikkatli kullan\u0131lmalar\u0131 gerekir zira yanl\u0131\u015f kullan\u0131m altyap\u0131n\u0131zda istenmeyen de\u011fi\u015fikliklere yol a\u00e7abilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Mevcut DigitalOcean varl\u0131klar\u0131n\u0131 Terraform&#8217;a aktarmak, ilk ba\u015fta g\u00f6z korkutucu g\u00f6r\u00fcnebilen ancak uzun vadede altyap\u0131 y\u00f6netim s\u00fcre\u00e7lerinizi devrim niteli\u011finde de\u011fi\u015ftirecek kritik bir ad\u0131md\u0131r. Bu s\u00fcre\u00e7, altyap\u0131n\u0131z\u0131n versiyon kontrol\u00fc alt\u0131na al\u0131nmas\u0131n\u0131, tutarl\u0131 ve tekrarlanabilir olmas\u0131n\u0131, ekipler aras\u0131 i\u015fbirli\u011fini geli\u015ftirmesini ve gelecekteki de\u011fi\u015fikliklerin daha g\u00fcvenli bir \u015fekilde yap\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Terraform&#8217;un <code>import<\/code> komutunu ve \u00f6zellikle Terraform 1.5+ ile gelen <code>-generate-config-out<\/code> bayra\u011f\u0131n\u0131 kullanarak, bu s\u00fcreci daha verimli hale getirebilirsiniz. Her ad\u0131mda dikkatli olmak, <code>terraform plan<\/code> ile do\u011frulamalar yapmak ve en iyi uygulamalar\u0131 takip etmek, ba\u015far\u0131l\u0131 bir ge\u00e7i\u015f i\u00e7in anahtard\u0131r. Altyap\u0131n\u0131z\u0131 kod olarak y\u00f6netmek, bulut \u00e7a\u011f\u0131nda modern ve dayan\u0131kl\u0131 sistemler kurman\u0131n temelidir ve mevcut varl\u0131klar\u0131n\u0131z\u0131 bu felsefeye dahil etmek, bu yolculukta \u00f6nemli bir kilometre ta\u015f\u0131d\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber\nDigitalOcean, geli\u015ftiricilere ve i\u015fletmelere bulut altyap\u0131s\u0131 sa\u011fla","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1401],"tags":[],"class_list":{"0":"post-38572","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","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>Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#039;a Aktarma: Kapsaml\u0131 Bir Rehber - 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\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#039;a Aktarma: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#039;a Aktarma: Kapsaml\u0131 Bir Rehber DigitalOcean, geli\u015ftiricilere ve i\u015fletmelere bulut altyap\u0131s\u0131 sa\u011fla\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-03T06:40:49+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=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2026-02-03T06:40:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\"},\"wordCount\":2822,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\",\"name\":\"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform'a Aktarma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-03T06:40:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber\"}]},{\"@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":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform'a Aktarma: Kapsaml\u0131 Bir Rehber - 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\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform'a Aktarma: Kapsaml\u0131 Bir Rehber","og_description":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform'a Aktarma: Kapsaml\u0131 Bir Rehber DigitalOcean, geli\u015ftiricilere ve i\u015fletmelere bulut altyap\u0131s\u0131 sa\u011fla","og_url":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-03T06:40:49+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber","datePublished":"2026-02-03T06:40:49+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/"},"wordCount":2822,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/","name":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform'a Aktarma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-03T06:40:49+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mevcut-digitalocean-varliklarini-terraforma-aktarma-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mevcut DigitalOcean Varl\u0131klar\u0131n\u0131 Terraform&#8217;a Aktarma: Kapsaml\u0131 Bir Rehber"}]},{"@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\/38572","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=38572"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38572\/revisions"}],"predecessor-version":[{"id":38573,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38572\/revisions\/38573"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}