🙌

python fabric1 to fabric2

2023/09/25に公開

お手軽デプロイスクリプトとしてある程度人気だったと思われるfabric

https://www.fabfile.org/

https://github.com/fabric/fabric

python2からpython3への以降で、あまりにも使い勝手に差があったため、小生fabric1を無理やり使ってたのだが
このほど愛用のarchlinuxですらpython2が削除されてしまった。

https://www.archlinux.jp/news/removing-python2-from-the-repositories/

仕方なくfabric2に移行することにした。

類似する機能はあるため早急に必要な部分だけを再現することは容易だった。

ブリッジ関数を立てて書き換えをサボることはある程度は可能と思われる。

  • fabric.api.env => fabric.Config っぽい
  • fabric.api.local => invoke.run
  • サーバへの接続 => fabric.Connect()で明示する必要あり。
  • fabric.api.{run,get,put} => fabric.Connect() の同名メソッド
  • 実行タスク => invoke.task デコレータを付記
  • 実行タスクへの引数 => できないっぽい
  • fabric.api.parallel => apiとしてはないっぽい

fabric1の便利なところは、勝手に接続してくれたり、@parallelデコレータで複数サーバに接続してくれたりだった。
fabric2ではそれらが無くなってるにも関わらずナンバリングが増えてるのが誤解を産んでると思われる。

fabric-mini for python3とかしてくれたほうがよかった。

Discussion