Python Fabricで複数台のNginxのキャッシュクリアをする小ネタ

前回にNginxのキャッシュについて書いたので、今回は複数台のNginxキャッシュクリアをするコードスニペット的なのを書いてみます。
自動実行でも良いのですが、今回は手動でコマンドを叩いて消します。
キャッシュクリアに使うのはPython Fabricです。
Fabricを使えば、簡単に複数サーバでキャッシュクリアを実行出来るので本当に便利ですね。

# -*- coding: utf-8 -*-
from fabric.api import env, run, roles, cd, sudo
from fabric.contrib import console
def nginx():
        env.roledefs.update({'nginx':['192.168.0.1','192.168.0.2','192.168.0.3']})
@roles('nginx')
def cache_clear():
    with cd('/var/cache/nginx'):
       sudo('ls -la')
       if console.confirm('Do you really want to delete the cache?', default=True):
           sudo('rm -rf ./*')

そして以下のコマンドで実行します。

$ fab nginx cache_clear

結局やってるのは「sudo rm -rf ./*」なのですが、間違うとかなり危険なので一応、一覧参照と確認を入れてます。
たったこれだけで複数台のサーバで、横断的にキャッシュクリアできるのは良いですね。

Python Fabricでデプロイしてみた

最近デプロイツールを探していたのだけど、やはりPythonで書きたいなと思い、勉強がてらFabricを使ってデプロイスクリプトを書いてみました。
設定とコードをなるべく切り分けたかったので、このあいだ知ったConfigParser使って設定を外部化させてみました。
Fabricのrolesを使いたかったので、Keyに対して、カンマ区切りで複数のValueを持たせられるようにしてみました。とりあえず動く程度なのでも
う少し綺麗にまとめるかも、っというかもっとスマートな方法があるはず・・・。