このサイトのデプロイにはFabricに任せることにしました
TOP > てきとうにこらむ > このサイトについて。 > このサイトのデプロイにはFabricに任せることにしました
デプロイもAnsibleにしようか…
DevOpsにすることはできた。とはいえ、デプロイがまだである。一つのコマンドで本番反映されてほしい。
ツール
調べてみると、デプロイツールにはCapistranoとFabricが主流?のようだ。
Capistrano
Rubyでできている。見てみた感じ、簡単そう。
Fabric
Pythonでできている。
Fabricにした理由
Python製であるAnsibleを使っていることから、同じPython製のFabricに任せたほうがいいかなというだけ。特に理由はなし。どっちも良さそうだったし。
コード
以下のコードを書く。
$ cat fabfile.py
# -*- coding: utf-8 -*-
from fabric.api import local, settings, abort, run, cd, env, hosts
# コレはただのテスト
def hello():
print("Hello World!")
# originの設定を行う
def init_origin():
local("git remote remove origin")
local(“git remote add origin host_dev1:path/to/repo“)
# デプロイを行う
@hosts(“host_dev1")
def deploy():
# ssh_configを使えるようにする
env.use_ssh_config = True
local("git push origin master")
# 文字通りcd
with cd(“path/to/”):
# 本番環境へgit pullする
run("git pull origin master")
fabfile.pyというファイルを置いてコミット、それをデプロイしてみる。
$ fab deploy
[host_dev1] Executing task 'deploy'
[localhost] local: git push origin master
Counting objects: 3, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 373 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To host_dev1:path/to
da7c10f..29fc19d master -> master
[host_dev1] run: git pull origin master
[host_dev1] out: remote: Counting objects: 3, done.
[host_dev1] out: remote: Compressing objects: 33% (1/3)
[host_dev1] out: remote: Compressing objects: 66% (2/3)
[host_dev1] out: remote: Compressing objects: 100% (3/3)
[host_dev1] out: remote: Compressing objects: 100% (3/3), done.
[host_dev1] out: remote: Total 3 (delta 2), reused 0 (delta 0)
[host_dev1] out: Unpacking objects: 33% (1/3)
[host_dev1] out: Unpacking objects: 66% (2/3)
[host_dev1] out: Unpacking objects: 100% (3/3)
[host_dev1] out: Unpacking objects: 100% (3/3), done.
[host_dev1] out: From /path/to/repo
[host_dev1] out: * branch master -> FETCH_HEAD
[host_dev1] out: da7c10f..29fc19d master -> origin/master
[host_dev1] out: Updating da7c10f..29fc19d
[host_dev1] out: Fast-forward
[host_dev1] out: fabfile.py | 1 +
[host_dev1] out: 1 file changed, 1 insertion(+)
[host_dev1] out:
Done.
追記
shipitという、りすさんを紹介してもらった。かわいい