Esitliklerle Ansible – Giris

Ansible  = orchestration engine

Ansible gelistirilmistir = python

Calisir = Windows / Mac / Unix-like

Baska toollarla beraber calisabilir mi = Ansible ile birseyler yonetip/kurarken ayni zamanda puppet ile konfigrasyon yonetimi yapabilirsiniz

Ansible = agentless / ajan yok = SSH var ise hersey tamam

Ansible = merkezi bir kurulum sunucusu yok

puppet/Chef = agent-based ama ayni zamanda Serverless Chef ve Masterless Puppet ile merkeziyetden uzakta calisabilirler.

Ansible varsayili olarak = push mode calisir / up to 500 makine diyorlar / merkezden yonetim sekli

Ansible ayni zamanda = pull mode‘da calisabilir playbook dedikleri (ki bu powershell kullaniyorsaniz oradada benzer deyim var) scriptler local’e cekilip oradan calistiriliyor

Ansible module = mesela ping

Install Ansible = GitHub source code / pip / system package manager (apt-get)

Ansible gerektirmez = database veya herhangi bir deamon calismasina gerek yok (Yoda tarzi dusuk cumle🙂 )

Ornek Kurulum / Command Center veya Ansible Workstation = ilk kurulum yapacagimiz makineyi bu sekilde adlandiracagiz.

Ornek Kurulum / pip ile deneyelim = {

Oncesinde” :

"sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging python-pyrex python-pyside.qtopengl idle-python2.7 qt4-dev-tools qt4-designer libqtgui4 libqtcore4 libqt4-xml libqt4-test libqt4-script libqt4-network libqt4-dbus python-qt4 python-qt4-gl libgle3 python-dev"

anis “Sonrasinda” : [

“noroot@ansible:~$ sudo pip install ansible” ,

noroot@ansible:~$ sudo pip install markupsafe

” ]

Ref : http://python-packaging-user-guide.readthedocs.org/en/latest/pip_easy_install/

Belkide apt-get ile kurmak daha iyi🙂

}

Kurulumu kontrol edelim = {

noroot@ansible:~$ ansible –version

ansible 2.0.0.2

config file =

configured module search path = Default w/o overrides

}

Test = Simdi ufak bir test zaman’i fakat bu islemi gerceklestiremeden once bilinmesi gereken birkac konu var ;

  1. Inventory Nerede : Oncelikle ansible ile hangi hostlari yonetiyor olacagimiz onemli , default inventory yolu /etc/ansible/hosts veya komut calistiriken -i ile belirtebilirsiniz .
    • ansible testsunucular –inventory-file=/home/noroot/a -m ping -u noroot -vvvv
    • Inventory asagidaki gibi olmali [arasina] gurup adi , altina sunucu bilgisi
      [testsunucular]
      sunucu1
    • Inventory’de alt alta FQDN , hostname veya IP adresi verebilirsiniz
    • hostname[100:200] gibi hostname100 , hostname101,hostname199 anlaminda kullanabilirsiniz
    • Gurup olayinda birde master group olayi var , bir tag acip altina diger guruplari eklediginizde is tamam;
      1.  [kapsar_gurup:childeren]
      2. testsunucular
      3. dbsuncular
  2. DNS / Hosts Dosyasi : sunucu1 dosyasi /etc/hosts dosyasinda olmali veya FQDN kullanin
  3. SSH : Master node uzerinde ssh-keygen ile dosya olusuturup ilgili yonetilecek makine yayin (direkt login olabilsin command center / ansible workstation)noroot@ansible:~$ ssh-copy-id noroot@10.111.21.231

Simdi test edelim , ping module ile ve  noroot kullanicisini kullanaraktan . Burada yaptigimiz sey su , uzaktaki makineye SSH baglan , pyhton kullanimini kontrol et ve geriye pong don!

noroot@ansible:~$ ansible testsunucular -m ping -u noroot

sunucu1 | SUCCESS => {

“changed”: false,

“ping”: “pong”

}

Uzaktan komut calistiralim = Burada onemli olan -a (argument) -m ile birsey set etmedik cunku default -m command geliyor yani aagidaki komutu soyle yazabilirdiniz –> ansible testsunucular -m command -a ‘echo gecen yaz ne yaptigini biliyorum‘{

noroot@ansible:~$ ansible testsunucular -aecho gecen yaz ne yaptigini biliyorum

sunucu1 | SUCCESS | rc=0 >>

gecen yaz ne yaptigini biliyorum

}

ansible all = guzel komut , tum makinelerde calistirmak icin — > mesela;

noroot@ansible:~$ ansible all -a ‘echo vahric’

sunucu1 | SUCCESS | rc=0 >>

vahric

Double check yapalim , sunucu1 e baglanin ve syslog ciktisini kontrol edin = {

Jan 18 11:59:45 ansibleclient01ubuntu ansible-command: Invoked with warn=True executable=None chdir=None _raw_params=echo vahric removes=None creates=None _uses_shell=False

}

Kus bakisi Ansible = {

Screen Shot 2016-01-18 at 12.04.59

}

Playbook dedigimizde aklimiza = Plays

Play dedigimizde aklimiza = tasks

Task dedgimizde aklimiza = bir isi yaptirmak icin cagirdigimiz module ve argumanlar gelmeli

Uzaktaki sunucuda = python kurulu olmali , simplejson kutuphanesi olmali

Ad-Hoc Komutlar = Ad-hoc deyimi aslinda planlanmamis ama gerektiginde , sonradan ihtiyac olmayacak komutlara denir bu case icin meselaasagidaki komut bir ad-hoc komut olarak adlandirabiliriz ama devamli yapacagimiz ve playbook yaratacagimiz bir islem icin ad-hoc tanimini kullanmayiz

noroot@ansible:~$ ansible testsunucular -a ‘reboot’ -u noroot –sudo –ask-sudo-pass

veya

noroot@ansible:~/playbooks$ ansible localhost -m setup

SUDO password:

sunucu1 | SUCCESS | rc=0 >>

Tekrardan Playbook nedir dedigimizde = bir veya birden fazla task i calistiran , hatta bunu bir sarta baglayabilen , bildigimiz linux bash scripting aksine ansible script kullanan bir nevi script dosyasi diyebiliriz.

Ansible Script = YAML dosyasi , mesela cumulusnetworks switchleri icin yazmis

{

cumulus@wbench:~$ cat sample-playbook.yml
---
- hosts: leaf1
  vars:
    description: “this is a leaf switch”
  remote_user: root
  tasks:
  - name: write the quagga config file
    template: src=quagga.j2 dest=/etc/quagga/Quagga.conf
    notify:
    - restart quagga
  - name: ensure quagga is running
    service: name=quagga state=started
  handlers:
    - name: restart quagga
      service: name=quagga state=restarted

}

Ansible PlayBook ise = Chef -> Cookbook , Puppet -> Manifest

Ansible API destekler = Python Api http://docs.ansible.com/ansible/developing_api.html

Provisioning = Ansible makine yaratmak icinde kullanilabilir

ansible.cfg = Benim kurulumumda herhangi bir inventory veya ansible.cfg dosyasi olusmadi , onun icin ekstra birsey diyemiyorum ama environment variable olarak ANSIBLE_CONFIG , bulundugunuz dizindeki ansible.cfg veya kullanici home diznindeki .ansible.cfg veya /etc/ansible/ansible.cfg ki bunu apt-get kurulumu yaratiyor olmaliyimis nuda gorecegiz.   Bu konfigrasyon dosyasi ;

  • hostfile yolu
  • kutuphane yolu
  • Ayni anda parallel islem sayisi
  • sudo kullanicisi
  • ssh default portu
  • timeout
  • log yolunu gosteriyor

Bu arada belki sonda olmasi kotu oldu ama ansible kullanicilari gordugum kadariyla kendi home dizinleri altina gerekli hosts ve ansible.cfg yaratarak devem ediyorlar

Posted on 18/01/2016, in Ansible and tagged , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: