Kemal Burak Yılmaz

Ansible Nedir? Ansible ile Elasticsearch Kurulumu

Ansible; otomasyon işlemleri için yaygın olarak kullanılan, python temelli bir otomasyon aracıdır. Ansible sayesinde istediğiniz herhangi bir komutu aynı anda, tek bir yerden yüzlerce bilgisayarda çalıştırabilirsiniz. Düşünsenize güncelleme yapmanız gereken 300 tane bilgisayar var, bir sürü vaktinizi harcarsınız değil mi? İşte Ansible ile bunu bir defa kod olarak yazıyoruz, daha sonra tek bir komutla tüm güncellemeleri yapıyoruz. Artık 300 bilgisayar mı 3000 bilgisayar mı olduğu bizi hiç ilgilendirmiyor.

Ansible; host ve playbook dosyaları üzerinden çalışır. Host dosyası içerisinde işlem yapacağımız makineleri tutarız. Playbooklar ise karmaşık işlemleri yaptığımız yaml formatındaki dosyalardır. Playbook içerisinde host dosyasında grupladığımız 10 tane makineyi önce güncelle, ardından hepsine elasticsearch yükle tadında işlemleri yazarız.

Ansible ile tüm alt yapımızı kod olarak yazabilir(Infrastrucute as Code) ve bunu bir git reposunda saklayabiliriz. Bu sayede hatalı kurulum vs gibi işlemlerdeki hata oranını da minimize etmiş oluruz.

Benim de ansible ile çok fazla tecrübem yok açıkcası. Çalıştığım firmada ansible ile elasticsearch clusterı kurmam gerekiyordu, araştıra araştıra izleye izleye kurmayı başardım. Adım adım sizlerle beraber de kuracağız. 


Demo ortamı hazırlanması :

Öncelikle daha sonraki çalışmalarda da kullanabileceğim bir demo ortamı oluşturarak işe başladım. Bunun için kendi bilgisayarımda sanal makineler oluşturdum.

sudo yum install ansible

Host dosyasının hazırlanması :

ifconfig

Playbook dosyasının hazırlanması :

mkdir roles
cd roles
git clone https://github.com/elastic/ansible-elasticsearch.git
- name: Install Elasticsearch Master Node
  hosts: Elasticsearch-Master-Nodes #inventory dosyasında verdiğimiz node ismi
  roles:
    - role: ansible-elasticsearch
  vars:
    es_heap_size: "1g"
    es_config:
      cluster.name: "Test-cluster"
      cluster.initial_master_nodes:
        - "Test-Master-Node"
      node.name: "Mpl-Prod-Master-Node"
      discovery.zen.ping.unicast.hosts: "172.26.83.178" #master node ip
      discovery.zen.minimum_master_nodes: 1
      http.port: 9200
      transport.tcp.port: 9300
      network.host: "0.0.0.0" #{{ansible_host}}
      node.data: false
      node.master: true
      bootstrap.memory_lock: false
    es_plugins:
      - plugin: analysis-icu

- name: Install Elasticsearch Data Nodes
  hosts: Elasticsearch-Data-Nodes #inventory dosyasında verdiğimiz node ismi
  roles:
    - role: ansible-elasticsearch
  vars:
    es_heap_size: "1g"
    es_data_dirs:
      - "/opt/elasticsearch"
    es_config:
      cluster.name: "Test-cluster"
      node.name: "Test-Data-Node"
      discovery.zen.ping.unicast.hosts: "172.26.83.178" #master node ip
      discovery.zen.minimum_master_nodes: 1
      http.port: 9200
      network.host: "0.0.0.0" #{{ansible_host}}
      transport.tcp.port: 9300
      node.data: true
      node.master: false
      bootstrap.memory_lock: false
    es_plugins:
      - plugin: analysis-icu
sudo vi /etc/ansible/ansible.cfg

Çalıştırmamız gereken tek bir komut kaldı. Sonrasında arkanıza yaslanıp ekrandaki kayan logları okuyabilirsiniz 🙂

ansible-playbook playbook.yml -i inventory.txt

Kodları aşağıdaki repodan indirebilirsiniz :
https://github.com/kbylmz/ansible-elasticsearch/tree/master