Packer ve Ansible ile Golden AMI: Otomatik, İzlenebilir Sunucular
AWS'de EC2 provisioning'i standartlaştırmak için Packer ve Ansible-local kullanımı; SSM ile güvenli build bağlantısı, Parameter Store ile merkezi konfigürasyon ve disaster recovery avantajları.
Manuel olarak kurulan EC2 makineleri zamanla birbirinden farklılaşan, izlenmesi zor ve hataya açık sistemlere dönüşüyor. Bu içerik, Packer ile AMI build sürecini otomatikleştirip Ansible'ı 'ansible-local' modunda doğrudan build instance'ı içinde çalıştırarak dışarıdan SSH bağlantısına ihtiyaç duymadan tekrarlanabilir, versiyonlanmış imajlar üretmenin pratik bir yöntemini anlatıyor. Packer'ın amazon-ebs builder'ında SSH yerine Session Manager (SSM) üzerinden tünel kurulması, build sürecinde SSH portunu açık tutma ya da genel internet erişimi gerektirme zorunluluğunu ortadan kaldırıyor ve saldırı yüzeyini küçültüyor.
Yaklaşımın asıl kritik noktası, uygulamaya özgü konfigürasyonun imajın içine gömülmemesi. Packer/Ansible sadece paketler, hardening ve servis yapılarını içeren yapısal katmanı inşa ederken, ortam bazlı ayarlar AWS Systems Manager Parameter Store'da tutuluyor ve instance açılışında bir systemd servisi bu değerleri çekip yerel konfigürasyona uyguluyor. Bu ayrım sayesinde aynı golden AMI farklı ortamlarda (dev, UAT, prod) kullanılabiliyor, konfigürasyon değişiklikleri imaj yeniden build edilmeden yapılabiliyor ve Parameter Store'un doğal geçmiş takibi sayesinde kim neyi ne zaman değiştirdi sorusu kolayca yanıtlanabiliyor.
Beklenmeyen ama değerli bir sonuç olarak, bu mimari disaster recovery senaryolarını da basitleştiriyor: AMI başka bir AZ veya bölgeye kopyalanıp instance ayağa kaldırıldığında, config-sync servisi doğru parametreleri otomatik çekiyor. Böylece felaket kurtarma süreci manuel adımlara bağımlı olmaktan çıkıp, günlük build sürecinin doğal bir uzantısı haline geliyor; yapılan AZ arızası simülasyonlarında Packer ile provizyonlanan katmanın en öngörülebilir şekilde toparlanan bileşen olduğu görülmüş.