Bu Ansible Serisinin önceki iki makalesinde, Ansible’ın Temel Bileşenlerini ve Ansible Kontrol Merkezinin Kurulumunu açıklamıştık. Bu 3. bölümde, Ansible tarafından yönetilen uzak bilgisayarlarda ad-hoc komutları çalıştıracak şekilde nasıl yapılandırabileceğinizi göstereceğiz.
Ansible Yönetilen DBilgisayarlara Parolasız SSH Kimlik Doğrulaması Kurma
Son konumuzun bir özeti olarak, uzak bilgisayarları Ansible ile yönetmek, Ansible kontrol merkezi ile yönetilen bilgisayarlar arasında Parolasız SSH kimlik doğrulamasının ayarlanmasını gerektirir. Bu, Ansible kontrol merkezinde bir anahtar çiftinin (Genel ve Özel SSH anahtar çifti) oluşturulmasını ve Genel anahtarın tüm uzak bilgisayarlara kopyalanmasını içerir. Bu ileriye dönük çok önemli bir adım olacak ve işinizi çok daha kolaylaştıracak.
Yönetilen Bilgisayarlarda Ayrıcalık Yükseltmeyi Yapılandırma
Yönetilen bilgisayarlarda, normal bir kullanıcı olarak oturum açtığınızda, yükseltilmiş ayrıcalıklar veya root ayrıcalıkları gerektiren belirli görevleri gerçekleştirmeniz gerekebilir. Bu görevler arasında paket yönetimi, yeni kullanıcılar ve gruplar ekleme ve sistem yapılandırmalarını değiştirme sayılabilir. Bunu başarmak için, görevleri uzak bilgisayarlarda ayrıcalıklı bir kullanıcı olarak, çalışma kitabındaki belirli yönergeleri çalıştırmanız gerekir.
become
Ansible, yönetilen bilgisayarda şu anda oturum açmış olandan farklı bir kullanıcı ‘olmanıza’ izin verir. become:yes yönergesi ayrıcalıklarınızı yükseltir ve paketleri kurmak, güncellemek ve sistemi yeniden başlatmak gibi root ayrıcalıkları gerektiren görevleri gerçekleştirmenize izin verir.
Gösterildiği gibi Apache web sunucusunu kuran ve başlatan bir httpd.yml çalışma kitabı inceleyin:
--- - name: install and start Apache webserver hosts: webservers tasks: - name: install httpd yum: name=httpd state=latest become: yes - name: check httpd status service: name=httpd state=started
become_user
Başka bir kullanıcı olmak için kullanabileceğiniz başka bir yönerge, become_user yönergesidir. Bu, oturum açtıktan sonra uzaktaki bilgisayarda sudo kullanıcısına geçmenizi sağlar.
Örneğin, uzak bilgisayarda tecmint kullanıcısı olarak bir komut çalıştırmak için yönergeyi gösterildiği gibi kullanın.
- name: Run a command as the apache user command: somecommand become: yes become_user: tecmint
become_method
Bu yönerge, genellikle sudo olarak ayarlanan ansible.cfg dosyasında ayarlanan varsayılan yöntemi geçersiz kılar.
become_flags
Örneğin kabuk nologin olarak ayarlandığında bir kullanıcıya geçmeniz gerektiğinde kullanılır.
Örneğin,
- name: Run a command as nobody command: somecommand become: true become_method: su become_user: nobody become_flags: '-s /bin/sh'
Ayrıcalık Arttırmasında Komut Satırı Seçenekleri
Komutları çalıştırırken ayrıcalıklarınızı yükseltmek için kullanabileceğiniz bazı komut satırı seçeneklerine göz atalım:
--ask-become-pass
,-K
– Bu, bağlanmaya çalıştığınız uzak sistemdeki sudo kullanıcısının parolasını ister.
$ ansible-playbook myplaybook.yml --ask-become-pass
--become
,-b
– Bu, görevi parola sormadan root kullanıcısı olarak çalıştırmanıza olanak tanır.
$ ansible-playbook myplaybook.yml --become
--become-user=BECOME_USER
– Görevleri başka bir kullanıcı olarak çalıştırmanıza izin verir.
$ ansible-playbook myplaybook.yml --become-user=tecmint
Ad-Hoc Ansible Komutlarını Kullanarak Çalışan Bir Yapılandırmayı Doğrulayın
Bazen, bir çalışma kitabı oluşturmak zorunda kalmadan Ansible’daki uzak bilgisayarlarda veya sunucularda hızlı ve basit görevler gerçekleştirmek isteyebilirsiniz. Bu durumda, geçici bir komut çalıştırmanız gerekir.
Adhoc Komut nedir?
Ansible ad-hoc komutu, oyun kitapları oluşturmaya gerek kalmadan bazı görevleri basit ama verimli bir şekilde yürütmenize yardımcı olan tek satırlık bir komuttur. Bu tür görevler, bilgisayarlar arasında dosya kopyalama, sunucuları yeniden başlatma, kullanıcı ekleme ve kaldırma ve tek bir paket yüklemeyi içerir.
Bu bölümde, Ansible Ad-Hoc komutlarının çeşitli uygulamalarını keşfediyoruz. Bir gösteri için aşağıdaki envanter dosyasını kullanacağız.
[webservers] 173.82.115.165 [database_servers] 173.82.202.239
Adhoc Komutların Temel Kullanımı
Ansible-Adhoc komutlarının en temel kullanımı, bir bilgisayara veya bir bilgisayar grubuna ping atmaktır.
# ansible -m ping all
Yukarıdaki komutta, -m parametresi modül seçeneğidir. Ping geçici komuttur ve ikinci parametrenin tümü, envanter dosyasındaki tüm ana bilgisayarları temsil eder. Komutun çıktısı aşağıda gösterilmiştir:
Belirli bir bilgisayar grubuna ping atmak için, ‘all’ parametresini grup adıyla değiştirin. Aşağıdaki örnekte, web sunucuları grubu altındaki bilgisayarlarla bağlantıyı test ediyoruz.
# ansible -m ping webservers
Ek olarak, normal Linux komutlarını çift tırnak içinde belirtmek için -a parametresini kullanabilirsiniz. Örneğin, uzak sistemlerin sistem çalışma süresini kontrol etmek için şunu çalıştırın:
# ansible -a "uptime" all
Uzak bilgisayarların disk kullanımını kontrol etmek için çalıştırın.
# ansible -a "df -Th" all
Adhoc komutuyla kullanabileceğiniz yüzlerce ve yüzlerce modül vardır. Açıklamalarıyla birlikte tüm modül listesini görüntülemek için aşağıdaki komutu çalıştırın.
# ansible-doc -l
Belirli bir modül hakkında ayrıntılı bilgileri görüntülemek için komutu çalıştırın.
# ansible-doc module_name
Örneğin, yum modülü çalıştırması hakkında daha fazla ayrıntı aramak için:
# ansible-doc yum
Ansible ile Paketleri / Hizmetleri Yönetme
Ansible adhoc komutları, yum ve apt paket yöneticileri kullanılarak paketlerin yüklenmesi ve kaldırılması için kullanılabilir.
Envanter dosyasındaki web sunucuları grubu altındaki CentOS 7 bilgisayarına Apache web sunucusunu kurmak için şu komutu çalıştırın:
# ansible webservers -m yum -a "name=httpd state=present"
Apache web sunucusunun kurulumunu doğrulamak için uzak istemcide oturum açın ve çalıştırın.
# rpm -qa | grep httpd
Apache’yi kaldırmak için mevcut durumu yok olarak değiştirin.
# ansible webservers -m yum -a "name=httpd state=absent"
Yine, httpd’nin kaldırılmasını onaylamak için aşağıdaki komutu çalıştırın.
# rpm -qa | grep httpd
Gözlemlendiği gibi, Apache web sunucusu paketleri temizlendi.
Ansible Kullanarak Kullanıcılar ve Gruplar Oluşturma
Kullanıcı oluştururken, ‘user’ modülü işe yarar. Database_server istemci sisteminde redhat parolasıyla james isimli yeni bir kullanıcı oluşturmak için aşağıdaki komutu verin.
# ansible database_server -m user -a "name=james password=redhat"
Yeni kullanıcının oluşturulduğunu onaylamak için şu komutu çalıştırın:
# ansible database_servers -a "id james"
Kullanıcıyı kaldırmak için şu komutu çalıştırın:
# ansible database_servers -m user -a "name=james state=absent"
Ayrıcalık Yükseltme
Ansible’ı normal bir kullanıcı olarak çalıştırıyorsanız, Ansible, root ayrıcalıkları elde etmek için –become seçeneğini ve parola istemek için -k seçeneğini kullanarak uzak bilgisayarlarda ayrıcalık yükseltme sağlar.
Örneğin, Ansible adhoc komutu ‘netstat -pnltu’yu ayrıcalıklı –become seçeneği ve root kullanıcısının parolasını sormak üzere -K seçeneği ile çalıştırmak için.
$ ansible webservers -m shell -a 'netstat -pnltu' --become -K
Root dışında başka bir kullanıcı olmak için –become-user niteliğini kullanın.
Örneğin, uzak bilgisayarlarda tecmint kullanıcısı olarak ‘df -Th’ komutunu çalıştırmak ve parola sormasını istemek için:
$ ansible all -m shell -a 'df -Th' --become-user tecmint -K
Ana Bilgisayar Sistemleri Hakkında Bilgi Toplama
Facts, bir sistem hakkında ayrıntılı bilgileri ifade eder. Bu, birkaçından bahsetmek gerekirse, IP adresi, sistem mimarisi, bellek ve CPU hakkındaki bilgileri içerir.
Uzak bilgisayarlar hakkında bilgi almak için şu komutu çalıştırın:
$ ansible all -m setup
Dosya Aktarımı / Dosyaları Kopyalama
Ansible, dosyaları birden fazla uzak bilgisayara güvenli bir şekilde kopyalamak için copy modülünü kullanır.
Aşağıda bir kopyalama işlemi örneği verilmiştir:
# ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"
Komut, Ansible Merkezindeki /var/log/secure dosyasını, webservers grubundaki uzak bilgisayarın /tmp dizinine kopyalar.
İzinleri ve dosya sahipliğini değiştirmek için file modülünü kullanabilirsiniz.
# ansible webservers -m file -a "dest=/tmp/secure mode=600"
Ek olarak, sahip ve grup bağımsız değişkenlerini de gösterildiği gibi ekleyebilirsiniz:
# ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"
Ayrıca gösterildiği gibi mkdir -p’ye benzer şekilde dizinler oluşturabilirsiniz.
$ ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"
Örneğin,
$ ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.