Bloğa geri dön

CloudInit ile sunucu hazırlamaya giriş

CloudInit ile sunucu hazırlamaya giriş

Bu ay çok heyecan verici bir Canonical ile ortaklık duyurduk, kendileri Ubuntu'nun yapımcısıdır. Her şeyden önce, bu ortaklığın ana unsuru, CloudSigma bulutu ile Ubuntu arasında tam CloudInit desteğinin sunulmasıdır.

CloudInit'e Giriş

CloudInit’e aşina değilseniz, bulut sunucularını başlatmak (bootstrapping) için endüstri standardıdır. Açıklamak gerekirse, basit bir DSL kullanıyorsanız, ilk açılışta görevleri kolayca gerçekleştirmek mümkündür. CloudInit’in yalnızca Ubuntu ile sınırlı olmadığını da belirtmek gerekir. Bugün çoğu modern Linux dağıtımında CloudInit desteği bulabilirsiniz (ancak desteklenen bulutlar değişiklik gösterecektir).

CloudInit ile başlamadan önce, CloudInit'in provizyon (hazırlama) ekosisteminde nereye oturduğunu anlamak önemlidir. CloudInit'i bağımsız bir provizyon sistemi olarak çalıştırmak mümkün olsa da, Ansible, Chef, Puppet veya Salt gibi başka bir provizyon sistemiyle birlikte kullanılması çok daha yaygındır. Bu durumda, yeni sunucunuzu provizyon sisteminin devralabileceği bir duruma getirmek için sadece CloudInit kullanırsınız. Şahsen ben CloudInit'i genellikle Ansible ile birlikte kullanıyorum.

CloudSigma üzerinde CloudInit Kullanımı

CloudSigma üzerinde CloudInit kullanmak oldukça kolaydır.

Ubuntu 14.04 sunucusunda CloudInit kullanmak için aşağıdaki adımları izleyin:

    • Sürücüyü klonlayın: pazaryerinden “Ubuntu 14.04 Cloud Image” (şu anda CloudInit ile tam olarak desteklenen tek sürücü). Klonlanan sürücüyü istediğiniz boyuta göre yeniden boyutlandırdığınızdan emin olun; ilk açılışta dosya sistemini otomatik olarak genişletecektir.
    • Yeni bir sunucu oluşturun.
    • Sunucu oluşturulduğunda, sunucu durumunun altında bir CloudInit düğmesi göreceksiniz.

CloudInit

    • Bu düğmeye tıkladığınızda aşağıdaki iletişim kutusu görünecektir.

CloudInit_activate

  • Sadece CloudInit verilerinizi buraya yapıştırın ve ‘Activate’ (Etkinleştir) tuşuna basın.
  • Sunucunuzu başlatabilirsiniz; betik ilk açılışta çalışacaktır.

CloudInit ile SSH Anahtarı/Anahtarları Kurulumu

Artık bulutumuzda CloudInit'i nasıl kullanacağınızı bildiğinize göre, bu yeni edindiğiniz bilgiyi iki SSH anahtarı kurmak için kullanarak işe koyulalım. Kullanacağımız iki hayali genel (public) SSH anahtarı şunlardır: ‘ssh-rsa AAA[…] user1@host‘ ve ‘ssh-rsa AAA[…] user2@host‘. (SSH anahtarları oluşturma hakkında daha fazla bilgi edinmek için lütfen Github'daki bu sayfaya göz atın.)

Ubuntu Bulut İmajlarında varsayılan kullanıcı adı ‘ubuntu’dur. Bu nedenle anahtarlar bu kullanıcı hesabına kurulacaktır.

Bunun için CloudInit yapılandırması aşağıdaki gibi görünecektir:

[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
[/ruby]

Lütfen unutmayın boşluklar önemlidir. ‘-‘ işaretinden önce iki boşluk vardır. Sadece bir tane koyarsanız, sunucu tarafından okunmayabilir.

CloudInit yapılandırmasını kaydedip sunucuyu başlattıktan sonra, ‘ubuntu’ kullanıcısını kullanarak sunucuya SSH ile bağlanabilmeniz gerekir:

[bash light="true"]
$ ssh ubuntu@aaa.bbb.ccc.ddd
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-36-generic x86_64)

* Documentation: https://help.ubuntu.com/

System information as of Sun Oct 19 21:51:54 UTC 2014

System load: 0.0 Users logged in: 0
Usage of /: 77.4% of 39.34GB IP address for eth0: aaa.bbb.ccc.ddd
Memory usage: 26%
Swap usage: 0%
Processes: 113

Graph this data and manage this system at:
https://landscape.canonical.com/

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.
[...]
ubuntu@myserver:~$
[/bash]

CloudInit ile sistem güncellemelerini yükleme

CloudInit ile kolayca gerçekleştirebileceğiniz bir diğer çok yararlı şey de ilk açılışta sistem güncellemelerini çalıştırmaktır. Disk imajlarımızı sık sık yeniliyor olsak da, sistemlerinizin güncel olduğundan emin olmak için ek önlemler almak yine de iyi bir fikirdir.

İlk açılışta sistem güncellemelerini yüklemek için aşağıdakileri ekleyin:

[ruby]
#cloud-config
apt_update: true
apt_upgrade: true
[/ruby]

Ayrıca, Ubuntu üzerinde ‘apt_update’ için dağıtımdan bağımsız bir takma ad olan ‘package_update’ adında benzer bir seçeneğin olduğunu da fark edebilirsiniz.

Ayrıca, eğer (aşağıdaki) ‘packages’ ayarlanmışsa, ‘apt_update’ varsayılan olarak true olarak ayarlanacaktır, ancak daha belirgin hale getirmek için bunu yukarıya ekledim.

CloudInit ile paketleri yükleme

Sistemleri hazırlamanın (bootstrapping) temel parçalarından biri, açılışta paket yükleyebilmektir. Neyse ki CloudInit bunu da kolaylaştırıyor. Tek yapmamız gereken, ‘packages’ altında yüklemek istediğimiz paketlerin bir listesini belirtmektir. Örneğin, ‘python-pip’, ‘fail2ban’ ve ‘vim’ yüklemek istersek, şu şekilde görünecektir:

[ruby]
#cloud-config
packages:
- python-pip
- fail2ban
- vim
[/ruby]

Tekrar belirtmek gerekirse, lütfen unutmayın boşluklar önemlidir. ‘-‘ işaretinden önce iki boşluk vardır.

CloudInit kullanarak ana bilgisayar adını (hostname) ayarlama

Yeni bir sunucu hazırladığınızda, onun için ana bilgisayar adını da ayarlamak isteyebilirsiniz.

[ruby]
#cloud-config
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
[/ruby]

CloudInit ile ilk açılışta komutları çalıştırma

Sunucularınızla daha karmaşık işler yaptığınızı varsayarsak, ilk açılışta çalıştırmanız gereken bazı komutların olması muhtemeldir.

İşte burada ‘runcmd’ ve ‘bootcmd’ devreye giriyor. Bunların her ikisi de ilk açılışta komut çalıştırmanıza olanak tanır. Aralarındaki fark, ‘bootcmd’ komutunun önyükleme sürecinde ‘runcmd’ komutundan daha önce yürütülmesidir.

Bu komutlardan herhangi birini kullanmak için CloudInit dosyanıza aşağıdakileri ekleyin:

[ruby]
#cloud-config
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]

CloudInit'i bir yapılandırma yöneticisi ile kullanma

Son olarak, daha deneyimli bir bulut kullanıcısıysanız, büyük olasılıkla bir yapılandırma yöneticisi kullanıyorsunuzdur. Neyse ki CloudInit buna hazırlıklı geliyor. Ancak, birçok değişken göz önüne alındığında, ele alınması oldukça karmaşık bir konudur.

İşte sizi doğru yöne yönlendirebilecek bazı örnekler:

Birden fazla öğe birbirine nasıl bağlanır

YAML tarzı dosyalara aşina olmayanlar için, birden fazla CloudInit öğesini birbirine nasıl zincirleyeceğiniz açık olmayabilir. Ancak bu oldukça basittir. İlk satırda şuna ihtiyacınız var: ‘#cloud-config‘. Bundan sonra, sadece yapılandırmanızı eklersiniz.

Örneğin, yukarıdaki tüm örnekleri tek bir yapılandırmada birleştirmek şu şekilde görünecektir:

[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
apt_update: true
apt_upgrade: true
packages:
- python-pip
- fail2ban
- vim
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]

Ek kaynaklar

Bu makalede CloudInit'in yapabileceklerinin sadece yüzeysel bir kısmına değindik. Öğrenmek için yapabileceğiniz daha pek çok şey var, örneğin kullanıcılar ve gruplar oluşturmak, dosyaları diske yazmak ve bittiğinde URL'leri çağırmak (diğer sistemleri bilgilendirmek için).

CloudInit hakkında daha fazla bilgi edinmek istiyorsanız, aşağıdaki kaynakları öneririm:

author

Viktor Petersson

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.