4月1日に新卒で入社したエンジニアの宮副です。
入社してすでに3ヶ月が過ぎました。
今回は、業務の中でもよく使われている「fabric」について書いていきます。
fabricとは
fabricはpythonのライブラリで、コマンドラインで関数を実行できるツールです。
さらに、SSH経由でシェルコマンドを実行することでもできます。
fabricをに定義することで、デプロイ時などで毎回打つ幾つものコマンドを省略することができるのでとても便利です。
実際にやってみる
実際にどういう風に使っているかを書いていきます。
まずはfabric(fabric3)をインストールします。
$pip3 install fabric3
次にfabric.py
か fabfile/__initi__.py
内に関数を書くことでコマンドを実行できるようになります。
会社では fabfile/__init__.py
使っています。
例
def hello():
print("Hello world!")
と書くと、
$fab hello
これで print()
が実行されます。
では、次に少し応用してみます。
from fabric.api import local
def deploy_git():
local("git add . && git commit -m 'commit message'")
local("git push")
実行してみましょう。
$fab deploy_git
これでgitコマンドを打たなくても、pushすることができます。
また、
from fabric.api import local
def add():
local("git add .")
def commit():
local("git commit -m 'commit message'")
def push():
local("git push")
def deploy_git():
add()
commit()
push()
このように構造化することで便利になります。
それぞれの環境にデプロイするときには、hostを指定してデプロイすることもできます。
from fabric.api import local
#開発環境
def dev():
env.hosts = ['dev.example.com']
#本番環境
def production():
env.hosts = ['www.example.com']
def deploy_env():
#デプロイ処理
$fab dev deploy_env
#開発環境にデプロイ
$fab production deploy_env
#本番環境にデプロイ
に書いてるコマンドを見たいときには、
__init__.py
$fab -l
とするとfabコマンドを一覧で見ることができます。
まとめ
今回は業務のデプロイ作業で使っているfabricについて紹介しました。
入社して3ヶ月経ちましたが、まだまだ分からないことだらけの毎日です。
そんな僕でも、先輩エンジニアの方々に質問すれば丁寧に優しくわかりやすく教えていただけるので楽しく業務をすることができています。