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 + PHPdb
: MySQL veya PostgreSQLcache
: Redis veya Memcachedmonitoring
: 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.