fabric情弱なおれがなんか教わったからてきとーにまとめておく
thx
@xxx ++
おれがかくことはてきとーなのでid:xxx てんてーに聞くように!!!!
fabricとは
Pythonでシェルをラップしてくれる便利的なもの。それだけだったら別にシェルスクリプトでよくね?ってなるけど、
- リモートで複数設定で使える
- Pythonでかける
というのがメリットになるんじゃないかな
インストール
基本的にはシェルをラップしているだけ。
pip install fabric
現在だと1.0.1がはいる。
基本
fabfile.py
def hello(): print(hello hoge-)
定義して実行
fab hello //hello hoge-
注意点!としては、fabfile.pyという名前で保存すること。でなければfabがみつけてくれなくてエラーになる
環境の定義
env.password = 'huga-'
とかなんかenvにいっぱいつめこめる。引数を取るときは
def hoge(name): print('hoge- %s' % name)
fab hoge:name=huga-
とかでできる
って書いたけど
$ fab
hoge は設定ファイルを読んでるわけじゃなくて、hoge と同等の 関数を呼んでるだけ。環境設定をする関数を用意しとくと便利だね、という話。
つまりただの関数だった。だからenvって名前じゃなくてもいい。具体例はググれ。
local, run, sudo
シェルを動作させるときのレベル
- local
ローカルで動く
- run
リモートで動く
- sudo
リモートでsudo権限をつけて動く
ローカルでsudoするなら普通にsudo fab hoge? かな?
設定とか
def relaod(): sudo(/etc/intt.d/apaceh2 reload) sudo(mv /var/log/accsess.log ~/)
とかなんかを
env.username = ore env.password = madoka
とかなんかいろいろ設定ができる。詳しいAPIはググれ
んで、実行時に
fab <env> hoge
みたいに設定ファイルを付けることで複数環境に対応することができる。
hoge-っとした追記
fabric 1.0.1の場合
fab hoge > log
みたいに出力使用とするとIOErrorになる。これは1.0.1のバグらしいよ
ちなみに local で実行する場合は CaptureってオプションがあるからそれをTrueにすればいい。
ってかいたけど
あと補足としては IOError になるのは hoge 内で run() か sudo() を呼んだ時のバグね。
localではなかった。まあどちらにしろリモートで使いたい話なのでこまるのだけど。
@yyyy ++
その他詳しいこと
解説サイトがあるし公式のチュートリアル(英語)があるからやればいいとおもうよ!!!!