Ansible

Ansible Yönetilen Bilgisayarları Yapılandırma ve Ad-hoc Komutları Çalıştırma – 3. Bölüm

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
Ansible 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
Ansible Become User

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:

Ansible Ping All Hosts

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
Ansible Ping Group of Hosts

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
Ansible Check Uptime of Remote Host

Uzak bilgisayarların disk kullanımını kontrol etmek için çalıştırın.

# ansible -a "df -Th" all
Ansible Check Disk Usage of Remote Hosts
Ansible Uzak Ana Bilgisayarların Disk Kullanımını Kontrol Edin

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 Check Yum Module
Ansible Yum Modülü

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"
Ansible Install Apache on Remote Hosts
Ansible ile Uzak Bilgisayarlara Apache Kurulumu

Apache web sunucusunun kurulumunu doğrulamak için uzak istemcide oturum açın ve çalıştırın.

# rpm -qa | grep httpd
Confirm Apache Installation
Apache Kurulumunu Onaylayın

Apache’yi kaldırmak için mevcut durumu yok olarak değiştirin.

# ansible webservers -m yum -a "name=httpd  state=absent"
Ansible Remove Apache
Ansible ile Apache’yi Kaldırma

Yine, httpd’nin kaldırılmasını onaylamak için aşağıdaki komutu çalıştırın.

# rpm -qa | grep httpd
Confirm Removal of Apache
Apache’nin Kaldırılmasını Onaylayın

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"
Ansible Create User on Remote Hosts
Ansible ile Uzak Bilgisayarlarda Kullanıcı Oluşturma

Yeni kullanıcının oluşturulduğunu onaylamak için şu komutu çalıştırın:

# ansible database_servers -a "id james"
Ansible Confirm User Creation

Kullanıcıyı kaldırmak için şu komutu çalıştırın:

# ansible database_servers -m user -a "name=james state=absent"
Ansible Remove User

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
Ansible Privilege Escalation
Ansible Ayrıcalık Yükseltmesi

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
Ansible Become Another User
Ansible ile Başka Bir Kullanıcı Olun

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 
Ansible Gather System Facts
Ansible Sistem Bilgilerini Toplayın

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/"
Ansible Copy Files to Remote Host

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"
Ansible Change File Permissions

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"
Ansible Append User and Group Attributes

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"
Ansible Create a Directory

Yazının orijinalini buradan okuyabilirsiniz.