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 -Thtecmint 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.