cloud-init ile VPS İlk Kurulumda Otomatik Rol Atamaları Nasıl Yapılır?

cloud-init Nedir?

cloud-init, bulut servislerinde (OpenStack, Proxmox, DigitalOcean, vs.) başlatılan sanal makinelerde ilk konfigürasyon işlemlerini gerçekleştirmek için kullanılan bir araçtır. YAML formatında hazırlanan bir dosya aracılığıyla aşağıdaki işlemleri otomatikleştirebilir:

  • Kullanıcı oluşturma
  • SSH anahtarı ekleme
  • Paket yükleme
  • Script çalıştırma
  • Dosya kopyalama
  • Servis başlatma

Rol Ataması Ne Demektir?

“Rol”, bir sunucunun görevini tanımlar. Örneğin:

  • web: Apache veya NGINX + PHP
  • db: MySQL veya PostgreSQL
  • cache: Redis veya Memcached
  • monitoring: Netdata, Prometheus Agent

Cloud-init kullanılarak sunucular bu rollerle ilk boot sırasında otomatik yapılandırılabilir.


Örnek cloud-init Yapılandırması: Web Sunucusu Rolü

#cloud-config
hostname: web01
users:
- name: deploy
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh-authorized-keys:
- ssh-rsa AAAAB3Nza...

package_update: true
package_upgrade: true
packages:
- nginx
- php-fpm
- unzip

runcmd:
- systemctl enable nginx
- systemctl start nginx
- echo "<?php phpinfo(); ?>" > /var/www/html/index.php

Rol Bazlı Otomasyon İçin Dinamik cloud-init Kullanımı

Aşağıdaki yapı, sunucuya role=db şeklinde bir meta veri atanarak veritabanı sunucusu kurulumu yapılmasını sağlar:

#cloud-config
write_files:
- path: /usr/local/bin/setup-role.sh
permissions: '0755'
content: |
#!/bin/bash
ROLE=$(curl -s http://169.254.169.254/latest/meta-data/role)
if [[ "$ROLE" == "db" ]]; then
apt update && apt install -y mysql-server
systemctl enable mysql && systemctl start mysql
fi

runcmd:
- bash /usr/local/bin/setup-role.sh

Not: VPS paneliniz, role gibi özel meta veriler tanımlamaya izin veriyorsa (örn. OpenStack user-data), bu yöntemle farklı görevler otomatikleştirilebilir.


cloud-init’in Avantajları

  • Sunucular birkaç saniyede üretime hazır hale gelir.
  • Aynı imaj üzerinden çok farklı görevler yüklenebilir.
  • Konfigürasyonlar versiyon kontrol sistemlerine dahil edilebilir (örneğin Git).
  • DevOps süreçleri, özellikle Ansible, Terraform gibi araçlarla entegre çalışabilir.

Sonuç

Cloud-init, ilk kurulumda VPS sunucularına otomatik roller atamak ve sunucuları belirli görevler için hazır hale getirmek açısından çok değerlidir. Özellikle çok sayıda sunucuyu yöneten sistem yöneticileri ve otomasyon odaklı DevOps ekipleri, bu yapıyı kullanarak zamandan tasarruf ederken altyapılarını daha tutarlı bir şekilde yönetebilir.

Vps.com.tr