alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/57263f6c5074106b168b4569/belajar-dan-mengenal-fabric
Belajar dan Mengenal Fabric
Belajar dan Mengenal Fabric

Fabric adalah suatu pustaka bahasa python yang biasa digunakan oleh para system administrator untuk melakukan proses deployment maupun persiapan sebelum deployment dilakukan. Selain Fabric, ada juga yang dinamakan Ansible yang sudah dibuat thread-nya oleh agan mombasa87.

Berbeda dengan Ansible, Fabric dikontrol dengan menggunakan sebuat file berbahasa python yang tentunya bisa kita modifikasi selama kita mengerti bahasa pemrograman python. File tersebut yang biasa disebut dengan fabfile, hanya memerlukan 3 baris kode untuk membuat sebuah task, 2 baris jika kita mengasumsikan bahwa baris import tidak dihitung. Berikut contoh sebuat task pada Fabric:
Code:
from fabric.api import run

def hello():
return run('echo "hello"')


Fungsi run di atas digunakan untuk menjalankan sebuah perintah echo di remote server. Tentu saja kita bisa menjalankan perintah apapun selama perintah tersebut dapat dikenali oleh sistem yang dituju. Selain fungsi run, ada beberapa fungsi lain yang bisa digunakan di Fabric. Beberapa diantaranya yang pernah saya gunakan adalah sebagai berikut:
  • env: fungsi ini berfungsi untuk mengatur environment saat program dijalankan. Beberapa hal yang bisa kita atur dengan env adalah user, password, dan hosts.
  • put: fungsi put berfungsi untuk melakukan proses upload ke remote server dari local. Tentu saja lokasi folder di remote server harus kita tentukan terlebih dahulu.
  • with: fungsi with biasanya digunakan berdampingan dengan fungsi lain seperti cd, lcd, settings, dan masih banyak lagi. Fungsi ini berfungsi untuk memberikan suatu kondisi yang nantinya hanya berlaku dalam 1 blok kode tersebut saja. Fungsi cd berfungsi untuk berpindah folder di remote server dan lcd untuk berpindah folder di komputer local. Fungsi setting sendiri berfungsi untuk mengatur environment secara temporal untuk blok kode tertentu saja.
  • execute: fungsi ini berfungsi untuk mengeksekusi suatu task dari task yang lain. Dengan ini kita bisa melakukan chaining task untuk memudahkan alur deployment.
  • local: fungsi local berfungsi untuk menjalankan suatu perintah di komputer local yang kita gunakan.
  • run: berbeda dengan fungsi local, fungsi run berfungsi untuk menjalankan suatu perintah di remote server yang akan kita gunakan pada proses deployment.
  • runs_once: fungsi runs_once berfungsi untuk mengatur agar suatu task dieksekusi sebanyak 1 kali saja.
  • task: fungsi ini berfungsi untuk menunjukan bahwa fungsi tersebut (yang memiliki tanda anotasi task) adalah sebuah task yang nantinya bisa kita jalankan dengan menggunakan Fabric.


Masih banyak fungsi - fungsi / perintah - perintah lain yang bisa kita gunakan, semua itu kembali kepada kebutuhan dan kreativitas kita saat melakukan pekerjaan menggunakan Fabric. Selain untuk proses deployment, Fabric juga dapat digunakan untuk melakukan fungsi otomatisasi pada komputer local, misalnya penginstalan aplikasi dan aplikasi - aplikasi pendukung environment kerja. Berikut saya sertakan contoh beberapa baris kode yang saya gunakan untuk pengaturan environment kerja di sisi server:
Code:
from getpass import getpass
import os

from fabric.api import *

__author__ = 'renodesper'

env.user = 'root'
env.password = 'password'
env.hosts = [
'192.168.1.xxx',
'192.168.1.xxx',
]

@runs_once
@task
def help():
print "How to run:"
print " > fab task1 # Without any argument"
print " > fab task1:mode='mode1' # With 1 argument"
print " > fab set_hosts:worker='1;2;3' task1:mode='mode1' # With multiple arguments"
print " > fab set_hosts:worker='4;5' task2:mode='mode2',engine='engine1' # With multiple task & arguments"

@runs_once
@task
def set_hosts(workers=None):
host_list = list()

if workers:
workers = str(workers).split(';')
for worker in workers:
host_list.append('192.168.1.{}'.format(worker))
env.hosts = host_list

@task
def history_format():
run("echo 'export HISTTIMEFORMAT="%d-%m-%y %T "' >> ~/.bashrc")
run("awk '!x[$0]++' ~/.bashrc > ~/.bashrc.temp && mv -f ~/.bashrc.temp ~/.bashrc")

@task
def cron(mode='status', cron_file='cron-job'):
if mode == 'update':
working_directory = '/path/to/working/directory/'
put(cron_file, working_directory)
with cd(working_directory):
run('crontab {0}'.format(cron_file))
else:
run('/etc/init.d/crond {}'.format(mode))


Semoga thread ini bisa membantu agan - agan dalam menjalankan pekerjaannya, mohon maaf jika saya yang newbie ini memiliki kesalahan dalam penyampaian. Saya sangat menerima saran dan kritik agar thread ini dapat menjadi lebih baik dan lebih bermanfaat untuk semua orang. emoticon-Shakehand2
ninggalin jejak dulu
Quote:Original Posted By crushing.kit
ninggalin jejak dulu


silakan om, semoga bermanfaat thread-nya, terutama untuk orang - orang yang terbiasa berkecimpung dengan server baik itu remote ataupun local emoticon-Toast
Mantep om ijin duduk emoticon-linux2 sambil ngopi emoticon-coffee biar baca baca tulisannya semakin joss
ikut nimbrung gan siapa tau suatu hari nanti butuh emoticon-Hai