Bloğa geri dön

Ansible ve Ubuntu 20.04 Kullanarak Sunucu Kurulumunu Otomatikleştirme

Ansible ve Ubuntu 20.04 Kullanarak Sunucu Kurulumunu Otomatikleştirme

Giriş

Günümüzde sunucuların çok sık oluşturulması ve yok edilmesi gerekmektedir. Bunun nedeni, zaman zaman sunucuların çok fazla yürütme yükü alması, diğer zamanlarda ise yükün azalması ve dolayısıyla sistem kaynaklarının boşa gitmesidir. Yaygın bir örnek, tatil sezonlarında yoğun trafik çeken e-ticaret web siteleridir. Uygulamanın doğası ölçeklenebilir olduğunda, sunucu oluşturma sürecini genel olarak kolaylaştırmak için her zaman yapılandırma yönetimi araçlarına ihtiyaç duyulur. Ansible insan hatalarını azaltan standart prosedürler kullanarak sunucu oluşturmayı otomatikleştiren harika bir yapılandırma yönetimi aracıdır.

Ansible, sunucuların düğümlerine özel bir yazılım yüklenmesini gerektirmez. Betiklerin yazılması, oluşturulması ve otomasyonunun kolaylaştırılması için gerekli tüm araçlara sahiptir. Bu eğitim Ansible'ın, şu eğitimimizde yer alan adımları otomatikleştirmek için nasıl kullanılacağını ayrıntılı olarak açıklamaktadır: Ubuntu sunucunuzu nasıl kurarsınız eğitimi.

Önkoşullar

Bu kılavuzu tamamlamak için Ubuntu 20.04. Ayrıca şunlara da ihtiyacınız olacak:

  • Bir Ansible Kontrol Düğümü: En son Ubuntu sürümünü çalıştıran bir Ubuntu makinesi. Ansible'ın ana ikili dosyası (master binary) bu makinede kurulu ve çalışıyor olmalıdır. Bu makine Ansible düğümlerine bağlanabilmelidir. Bu bağlantılar için SSH anahtarlarını kullanmanız gerekir. Bağlanırken sorun yaşamamak için Ansible kontrol düğümünüzde bir güvenlik duvarının etkinleştirildiğinden emin olun. Yardıma ihtiyacınız varsa, şu blog yazımıza göz atın: Ubuntu 20.04 üzerinde Ansible Kurulumu ve Yapılandırılması blogu.

  • Ansible Ana Bilgisayarları (Hosts): Bağlanmak için bir veya daha fazla ana bilgisayar gereklidir. Ana bilgisayarlar esasen Ansible'daki yönetilen düğümlerdir. Bunların Ubuntu sunucuları olması gerekir.

Ansible Playbook'un İşlevleri

Aşağıda belirtilen tüm adımları manuel olarak kurabilirsiniz. Ancak biz bu yürütmeyi otomatikleştireceğiz. Bu playbook'u çalıştırdığınızda, makinenizde aşağıdaki işlemleri gerçekleştirecektir:

  1. Şunu yükleyecektir: aptitude, bu paket yöneticisi Ansible tarafından tercih edilmektedir.

  2. Şu adla bir yönetici grubu oluşturacaktır: wheel (şifresiz sudo izinlerine sahip).

  3. Yeni bir sudo kullanıcısı oluşturacaktır.

  4. Yerel bir SSH anahtarını şuraya kopyalayacaktır: authorized_keys. Bu, uzak bir ana bilgisayardaki yeni bir yönetici kullanıcısı için kullanılacaktır.

  5. Root kullanıcısı için şifre tabanlı kimlik doğrulamayı devre dışı bırakacaktır.

  6. Gerekli paketleri yükleyecektir.

  7. Şunu yapılandıracaktır: UFW güvenlik duvarı (yalnızca SSH bağlantılarına izin verecek şekilde). Diğer tüm bağlantılar durdurulacaktır.

Playbook'un çalışması bittiğinde yeni bir kullanıcı kullanılabilir olacaktır. Sisteme giriş yapmak için bu kullanıcıyı kullanabilirsiniz.

Ansible Playbook'un Kullanımı

Sunucuyu kurmak için ilk sunucu kurulum playbook'una ve bunun bağımlılıklarına ihtiyacınız olacak. İlk kez kullanıyorsanız, aşağıdaki bağlantıyı kullanarak depoyu klonlamanız gerekecektir:

Depo sisteminizde zaten mevcutsa, en son güncellemeleri almak için aşağıdaki komutu çalıştırın:

Makinenizde aşağıdaki dosya yapısını elde edeceksiniz:

Aşağıda dosyaların açıklaması yer almaktadır:

  • vars/default.yml: Bu dosya, Ansible düğümünü yapılandırmak için değişkenleri içerir.

  • playbook.yml: Bu dosya, sunucuda yürütülecek işleri içerir.

Şu dosya: vars/default.yml şuna benzer görünmektedir:

Aşağıda bu değişkenlerin açıklaması yer almaktadır. Bunları düzenlemek isterseniz, değerlerini kendi değerlerinizle değiştirebilirsiniz:

  1. create_user: Bu, oluşturulan kullanıcıdır. Bu kullanıcı şu yetkilere sahiptir: sudo yetkileri.

  2. copy_local_key: Bu, yerel SSH genel anahtarının yolunu içerir. Uzak sunucuya şu şekilde kopyalanacaktır: authorized_key.

  3. sys_packages: Sunucunuza bir veya daha fazla paket kurmak istiyorsanız, bunları burada bir dizi olarak belirtin.

Bu dosyayı düzenledikten sonra içeriği kaydedin. Ardından, nano üzerinde, CTRL+X , Y. Ardından, ENTER tuşlarına basarak dosya içeriğini kaydedin.

Artık bu playbook'u birden fazla sunucuda çalıştırmaya hazırsınız. Varsayılan olarak, Playbook'lar envanterinizdeki sunucularda çalıştırılmaya hazırdır. Playbook'u belirli bazı sunucularda kullanmak istiyorsanız, -l bayrağını kullanabilirsiniz. Şimdi uzak sunucunun birden fazla kullanıcısı olduğunu varsayalım, hangi kullanıcıya bağlanılacağını belirtmek için -u bayrağını kullanabilirsiniz.

Eğer sunucu adınız my_server ve kullanıcı adı my_user ise, Ansible düğümlerinde çalıştırmak için aşağıdaki komutu çalıştırın:

Şuna benzer bir çıktı alacaksınız:

Bu işlem tamamlandıktan sonra, aşağıdaki komutu kullanarak bağlanabilirsiniz:

Unutmayın, my_user, vars/default.yml dosyasında kullandığımız isimdi. Yukarıdaki komutta sunucu IP'sini kendi sunucunuzun IP'si ile değiştirmeniz de gerekecektir. Eğer copy_local_key değişkenini özel bir SSH anahtarını işaret edecek şekilde belirttiyseniz, konumu -i parametresiyle belirtin:

Ardından, UFW güvenlik duvarı kurallarını kontrol etmek için sunucunuza giriş yapın:

Aşağıdaki gibi bir çıktı alacaksınız:

Yukarıdaki çıktı, UFW güvenlik duvarının başarıyla tamamlandığını doğrular. Bu, playbook'umuzdaki son adımdı. Eğer bu doğru bir şekilde gerçekleştirildiyse, işlemin başarılı olduğu anlamına gelir.

Ansible Playbook İçeriği

Bu öğreticide kullandığımız Playbook dosyaları şu adreste barındırılmaktadır: ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub. Her bir dosyanın içeriğini görmek, kullanmak veya düzenlemek isterseniz, her betiğin üstündeki Raw düğmesine tıklayın.

Hızlı başvuru için, Playbook'un tam içeriğini ilgili dosyalarla birlikte paylaşacağız:

  • vars/default.yml

Bu dosya, playbook görevleri tarafından kullanılacak değerleri içerir. Bunlar arasında kullanıcının adı, ayrıcalıklar, SSH anahtarları, ilk kurulumun bir parçası olarak kurulacak paketler vb. değerler yer alır:

  • playbook.yml

İlgili playbook.yml dosyası yürütülecek işleri içerir. İlk olarak dosya, hedeflenecek tüm ana bilgisayarları listeler. Tüm sunucuları belirtmek istiyorsanız, bu anahtarın değerini all yapın. Ardından, sudo ayrıcalıkları kullanılarak yürütülecek görevleri belirtmek istiyorsanız, şu değişkenin değerini ayarlarsınız: become: true. Son olarak, bu dosyanın yukarıdaki vars/default.yml dosyasının içeriğini içermesi gerekir. Bu dosyadan ayarları yüklemek için bunları ekliyoruz:

Sonuç

Bilişim teknolojilerinde (IT) otomasyon, tüm süreçlerin hatasız olmasını ve standart uygulama ile prosedürleri takip etmesini sağlamada kilit rol oynar. Günümüzde çoğu yazılım, dağıtık bir yapıya sahip olarak web üzerinden sunulduğundan, hazırlık (staging) veya üretim (production) gibi farklı ortamlar ya da demo ortamları için yeni sunucular oluşturmak günlük bir görev haline gelmiştir.

Bu eğitimde, size çok zaman kazandırabilecek güçlü ve kullanımı kolay bir araç olan Ansible'ı kullanarak sunucuların otomasyonunu nasıl gerçekleştireceğinizi gösterdik.

Keyifli kodlamalar!

author

Shreyas Patil

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.