15 Sept (Sat) Fabric 初心使用

Fabric 是一個 command line 的 工具
一個remote ssh 的工具
之前我已經介紹過我在南華早報時deploy 的 scripts
使用的是 rsync + mysqldump + ssh tunneling
沒有辦法記住全部命令的情況下使用copy & paste commands
也使用得很好
只是 fabric 的好處是你可以將這些 command 簡單的包裝起來
你便可以fab deploy來完成

先定義 user, host:

env.user = 'joe'
env.host = 'example.com'

def deploy():
  domain = 'example.com'

  with cd('/srv/www/' + domain + '/public_html'):
    run('git pull')
    run('git checkout master')

以上的代碼便會在指定的資料夾內執行 git pull
使用 git 代替 rsync 將代碼上傳到伺服器

又或者

def restart():
  run('sudo service apache2 restart')

重新啟動伺服器

然後可以直接串起: fab deploy restart

你也可以定義環境變數:

def staging():
  env.host = 'dev.example.com'

def live():
  env.host = 'example.com'

然後fab staging deploy restart deploy 到 staging
fab live deploy restart deploy 到 live

Fabric 還有很多方便的進階功能可以使用
但以上的簡單代碼已經可以帶來使用的快感,令你喜歡它
其他的階用法還是以後再談

(文為16日後補)

Google