Install aplikasi Linux secara masal? Ga masalah. Ansible jawabannya!

Pada saat kita dihadapkan dengan pilihan harus melakukan installasi secara berulang-ulang ataupun harus melakukan installasi aplikasi yang sama di banyak server, tentu hal ini merupakan hal yang menjemukan, bikin bete, boring, mumet dan lain sebagainya, You count it lah 😀
Bayangkan seandainya ente berada dalam posisi harus menginstall 50 atau 100 server sekaligus, apa ga mabok ***curcol mode =))
Sebenarnya ada cara yang mudah untuk melakukannya, tidak perlu melakukan installasi secara berulang-ulang, selama server sudah bisa di remote, masalah ente bakalan tuntas…tas..tas… Sayangnya ini ga berlaku untuk installasi OS (blom nemu solusi yang enak gimana) *** curcol lagi, hiks….
Mau sistem operasinya pake distro Ubuntu, distro redhat dan keluarganya, debian, atau bahkan gentoo dan slackware ga ada masalah. Cukup menjalankan satu perintah, and simsalabim…..
Ada banyak tools yang bisa dipake bertebaran diluaran sana. Ada puppet (my favorite one), ada chef, salt, dan ansible. Masih banyak lagi tentunya. Namun yang cukup low resource, jadi bisa di install di server dengan spesifikasi rendah dan paling mudah digunakan adalah ansible. Kita cukup bikin yang namanya playbook (istilah untuk kumpulan script ansible).
Mumpung kebetulan gi ada waktu luang, habis kmaren-kmaren pada gontok-gontokan ngedukung capres idola. Kali ini kita akan coba oprek-oprek, menginstall ansible. Distro yang dipake Centos 6, bukan apa-apa, soalnya RedHat termasuk distro yang umumnya digunakan oleh perusahaan soalnya ***alasan aja seh sebenernya, kebetulan aja punya mesin nganggurnya cuman centos kekeke.. Tapi apa yang ane bilang ga salah kok, berdasarkan survey kecil-kecilan dari rata-rata os yang dipake oleh pengguna InfinysCloud dan CloudKilat, mayoritas pakenya Centos.
Ok, langsung aja deh kita mulai oprek-opreknya.
Siapkan satu mesin yang akan kita jadikan master (Ansible) yang akan memerintahkan mesin-mesin target sesuai yang kita inginkan
Update terlebih dulu Centosnya, biar maknyus!

yum update

Kemudian download dan install aplikasi ansible dengan langkah berikut:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install ansible

Klo udah, tinggal kita edit file /etc/ansible/hosts klo ga ada tinggal dibikin. Isinya cuman list IP atau hostname (klo kita udah masukin di /etc/hosts) mesin target.
Jangan lupa, mesin Ansible harus bisa obrol dengen mesin target tanpa ditanyain soal password, klo belum bisa dibuatkan koneksi dengan mengizinkan Ansible ngobrol melalui autentifikasi SSH, alias SSH key. Caranya sebagai berikut (dilakukan dimesin Ansible):

ssh-keygen
ssh-copy-id root@ip-mesin-target

Klo langkah diatas udah dilakukan dengan bener, cobain deh, harusnya Ansible udah bisa kirim perintah yang akan di eksekusi sama mesin target.

ansible all -m ping

Contoh:

root@master:~# ansible all -m ping
192.168.1.1 | success >> {
    "changed": false,
    "ping": "pong"
}
192.168.1.2 | success >> {
    "changed": false,
    "ping": "pong"
}

Whats next?

Selanjutnya tinggal bikin yang namanya playbook deh. Playbook, adalah file bahasa yang digunakan untuk menjalankan mesin target. Berbentuk file YML.
Hmmm… ane nyontohinnya apa ya biar asik…. Gotcha, gimana klo berandai-andai klo kita mesti install 100 webserver yang udah terinstall wordpress? Ngapain juga punya 100 wordpress server ya? wkwkkwk namanya juga berandai-andai….
Kita masukkan IP atau hostname dari mesin yang mau kita install, kemudian bikin file YML dengan nama yang kita mau, contoh: coba.yml

vi coba.yml

Kurang lebih kira-kira kek gini isinya:

- hosts: all
  tasks:
  - name: Install Apache
    yum: name=httpd state=latest
  - name: Selanjutnya Install PHP
    yum: pkg={{ item }} state=latest
    with_items:
    - php
    - php-common
    - php-mysql
  - name: Ini MySQL dan kawan-kawan
    yum: pkg={{ item }} state=latest
    with_items:
    - mysql
    - mysql-server
  - name: Klo ini download wordpress
    get_url: dest=/root/latest.tar.gz url=http://wordpress.org/latest.tar.gz
  - name: Sekarang kita extract wordpressnya
    action: command tar xzf /root/latest.tar.gz -C /var/www/html/

Nah, tinggal jalankan dengan perintah dibawah, tunggu proses selesai dan 100 webserver dengan wordpress siap disajikan.

ansible-playbook coba.yml

Menarik bukan? Modul2 perintah yang bisa digunakan bisa di lihat di http://docs.ansible.com/list_of_all_modules.html
Gampang kan? Rulez your puppets!

5 thoughts on “Install aplikasi Linux secara masal? Ga masalah. Ansible jawabannya!

  1. Have you ever considered publishing an ebook or guest authoring on other sites?
    I have a blog centered on the same subjects you discuss and would really like to have you share
    some stories/information. I know my subscribers would appreciate your work.
    If you’re even remotely interested, feel free to shoot me an e mail.

  2. Ini info keren dan mantapppppzz… Meskipun artikel tentang Linux seringkali terkesan sangar, cryptic dan njlimet tetapi dengan penyampaian gaya bhs Anda yang gaul dan humoris, bikin pembaca jadi enjoy dan lebih mudah memahaminya. Salut dan sukses untuk Anda. Salam kenal dari saya, and I’s like to know you better for more nice sharing and stuffs about Linux. You could drop and see me in FB using this name: Hamami InkaZo.
    Thanks a lot for this nice article/posting.
    Ini info keren dan mantapz.. Meskipun artikel tentang Linux seringkali terkesan sangar, cryptic dan njlimet tetapi dengan penyampaian gaya bhs Anda yang gaul dan humoris, bikin pembaca jadi enjoy dan lebih mudah memahaminya. Saya pribadi lebih banyak dealing with Debian atau Ubuntu Linux. But I’d like to learn other distros as well.
    Salut dan sukses untuk Anda. Salam kenal dari saya, and I’s like to know you better for more nice sharing and stuffs about Linux. You could drop and see me in FB using this name: Hamami InkaZo.
    Thanks a lot for this nice article/posting.

Leave a Reply

Your email address will not be published. Required fields are marked *