Ansible Yönetilen Düğümleri Yapılandırma ve Özel Komutları Çalıştırma - Bölüm 3
Bu Ansible Serisinin önceki iki makalesinde, Ansible'ın Temel Bileşenlerini ve Ansible Kontrol Düğümünü Ayarlamayı açıkladık. Bu 3. bölümde, Ansible tarafından yönetilen düğümleri uzak ana bilgisayarlarda geçici komutlar çalıştıracak şekilde nasıl yapılandırabileceğinizi göstereceğiz.
Ansible Yönetilen Düğümlere Parolasız SSH Kimlik Doğrulaması Kurulumu
Son konumuza dair bir özet olarak, uzak ana bilgisayarları Ansible ile yönetmek, Ansible kontrol düğümü ile yönetilen ana bilgisayarlar arasında Parolasız SSH kimlik doğrulamasının ayarlanmasını gerektirir. Bu, Ansible Control düğümünde bir anahtar çiftinin (Genel ve Özel SSH anahtar çifti) oluşturulmasını ve Genel anahtarın tüm uzak ana bilgisayarlara kopyalanmasını içerir. Bu ileriye yönelik çok önemli bir adım olacak ve işinizi çok daha kolaylaştıracak.
Yönetilen Düğümlerde Ayrıcalık Yükseltmeyi Yapılandırma
Normal bir kullanıcı olarak oturum açtığınızda, yönetilen düğümlerde yükseltilmiş ayrıcalıklar veya kök 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 yer alıyor. Bunu başarmak için, görevleri uzak ana bilgisayarlarda ayrıcalıklı bir kullanıcı olarak çalıştırmak üzere oyun kitabındaki belirli yönergeleri çağırmanız gerekir.
haline gelmek
Ansible, yönetilen düğümde halihazırda oturum açmış olandan farklı başka bir kullanıcı 'olmanıza' olanak tanır. become:yes
yönergesi ayrıcalıklarınızı yükseltir ve aşağıdaki görevleri gerçekleştirmenize olanak tanır: paketleri kurma, güncelleme ve sistemi yeniden başlatma gibi kök ayrıcalıkları gerektirir.
Apache web sunucusunu gösterildiği gibi yükleyen ve başlatan bir httpd.yml
taktik kitabını düşünün:
---
- 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: yes
yönergesi, uzak ana makinede kök kullanıcı olarak komutları yürütmenize olanak tanır.
kullanıcı_olur
Başka bir kullanıcı olmak için kullanabileceğiniz başka bir yönerge de become_user'dir. Bu, oturum açtığınız kullanıcıya değil, oturum açtıktan sonra uzaktaki ana bilgisayardaki bir sudo kullanıcısına geçiş yapmanızı sağlar.
Örneğin, bir komutu uzaktan kumandada tecmint kullanıcısı olarak çalıştırmak için, gösterildiği gibi yönergeyi kullanın.
- name: Run a command as the apache user
command: somecommand
become: yes
become_user: tecmint
olma_yöntemi
Bu yönerge ansible.cfg dosyasında ayarlanan ve genellikle sudo olarak ayarlanan varsayılan yöntemi geçersiz kılacaktır.
ol_flags
Bunlar oyun veya görev düzeyinde kullanılır; örneğin, kabuk oturum açmaya ayarlıyken bir kullanıcıya geçmeniz gerektiğinde.
Ö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 Yükseltmede 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 şifresini ister.
ansible-playbook myplaybook.yml --ask-become-pass
--become
,-b
– Bu, parola sormadan görevi kök kullanıcı 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 olanak tanır.
ansible-playbook myplaybook.yml --become-user=tecmint
Geçici Ansible Komutlarını Kullanarak Çalışan Bir Yapılandırmayı Doğrulama
Bazen Ansible'daki uzak ana bilgisayarlarda veya sunucularda, mutlaka bir oyun kitabı oluşturmanıza gerek kalmadan hızlı ve basit görevleri gerçekleştirmek isteyebilirsiniz. Bu durumda geçici bir komut çalıştırmanız gerekir.
Adhoc Komut nedir?
Ansible geçici komut, başucu kitapları oluşturmaya gerek kalmadan basit görevleri basit ama etkili bir şekilde yürütmenize yardımcı olan tek satırlık bir komuttur. Bu tür görevler, ana bilgisayarlar arasında dosya kopyalamayı, sunucuları yeniden başlatmayı, kullanıcı ekleme ve kaldırmayı ve tek bir paketin kurulmasını içerir.
Bu eğitimde Ansible Ad-Hoc komutlarının çeşitli uygulamalarını inceliyoruz. Gösterim amacıyla aşağıdaki envanter dosyasını kullanacağız.
[webservers]
173.82.115.165
[database_servers]
173.82.202.239
Adhoc Komutlarının Temel Kullanımı
Ansible-Adhoc komutlarının en temel kullanımı, bir ana bilgisayara veya bir ana bilgisayar grubuna ping atmaktır.
ansible -m ping all
Yukarıdaki komutta -m
parametresi modül seçeneğidir. Ping geçici bir komuttur ve ikinci parametrenin tamamı envanter dosyasındaki tüm ana bilgisayarları temsil eder. Komutun çıktısı aşağıda gösterilmiştir:
Belirli bir ana makine grubuna ping işlemi yapmak için 'all' parametresini grup adıyla değiştirin. Aşağıdaki örnekte web sunucuları grubu altındaki ana bilgisayarlarla bağlantıyı test ediyoruz.
ansible -m ping webservers
Ayrıca, normal Linux komutlarını çift tırnak içinde belirtmek için -a
özelliğini kullanabilirsiniz. Örneğin, uzak sistemlerin sistem çalışma süresini kontrol etmek için şunu çalıştırın:
ansible -a "uptime" all
Uzak ana 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 modül vardır. Modüllerin tam listesini açıklamalarıyla birlikte görüntülemek için aşağıdaki komutu çalıştırın.
ansible-doc -l
Belirli bir modül hakkındaki 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
yum ve apt paket yöneticileri kullanılarak paketlerin kurulması ve kaldırılması için Ansible adhoc komutları kullanılabilir.
Apache web sunucusunu CentOS 7 ana bilgisayarına kurmak için envanter dosyasındaki web sunucuları grubu altında ş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 durumu mevcut yerine yok olarak değiştirmeniz yeterlidir.
ansible webservers -m yum -a "name=httpd state=absent"
Tekrar httpd run'un kaldırılmasını onaylamak için.
rpm -qa | grep httpd
Görüldüğü gibi Apache web sunucusu paketleri temizlendi.
Ansible'ı Kullanarak Kullanıcı ve Grup Oluşturma
Kullanıcı oluştururken "kullanıcı" modülü kullanışlıdır. İstemci sistemi veritabanı_sunucusunda redhat parolasıyla yeni bir james kullanıcısı oluşturmak için komutu verin.
ansible database_server -m user -a "name=james password=redhat"
Yeni kullanıcının oluşturulmasını 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ükseltmesi
Ansible'ı normal bir kullanıcı olarak çalıştırıyorsanız, Ansible, kök ayrıcalıklarını almak için --become
seçeneğini ve parola istemek için -k
seçeneğini kullanarak uzak ana bilgisayarlarda ayrıcalık yükseltme sağlar.
Örneğin, Ansible adhoc komutunu 'netstat -pnltu' ayrıcalıklı –-become
seçeneğiyle ve -K
seçeneğiyle çalıştırmak için, komutu çalıştırmak için root kullanıcının şifresi.
ansible webservers -m shell -a 'netstat -pnltu' --become -K
Root dışında başka bir kullanıcı olmak için --become-user
özelliğini kullanın.
Örneğin, uzak ana makinelerde 'df -Th'ı tecmint kullanıcısı olarak çalıştırmak ve parola çalıştırmasını istemek için:
ansible all -m shell -a 'df -Th' --become-user tecmint -K
Ana Bilgisayar Sistemleri Hakkında Gerçekleri Toplama
Gerçekler bir sistem hakkındaki ayrıntılı bilgileri ifade eder. Bu, birkaçından bahsetmek gerekirse IP adresi, sistem mimarisi, bellek ve CPU hakkındaki bilgileri içerir.
Uzak ana bilgisayarlar hakkında bilgi almak için şu komutu çalıştırın:
ansible all -m setup
Dosya Aktarımı/Dosya Kopyalama
Ansible, dosyaları Ansible kontrolünden birden fazla uzak ana bilgisayara güvenli bir şekilde kopyalamak için kopyalama 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 Control düğümündeki /var/log/secure dosyasını /tmp hedefindeki web sunucuları grubundaki uzak ana bilgisayarlara kopyalar.
İzinleri ve dosya sahipliğini değiştirmek için dosya 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 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 de 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"
Çözüm
Bu makalede, yönetilen düğümleri uzak ana bilgisayarları yönetmek için Ansible geçici komutlarını çalıştıracak şekilde nasıl yapılandırabileceğinize ışık tuttuk. Faydalı bulduğunuzu umuyoruz. Bir şans verin ve nasıl gittiğini bize bildirin.