渋谷の片隅で吠える

エンジニアをしています。主にscalaとjavaを書いています。

Macにfabricを入れてherokuへデプロイしたい時につまずいた。

やろうとした事

fablicを使ってherokuにある本番へデプロイをしたい

環境

OS: OS X El Capitan 10.11.6 python : 2.7.0

pipをインストール

まずこのPCにはpipが入っていなかったのでpipをダウンロード。

sudo easy_install pip

動作確認

pip -V
pip 9.0.1 from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (python 2.7)

fabricをインストール

pip install Fabric

インストールの確認

pip freeze

asn1crypto==0.24.0
bcrypt==3.1.4
cffi==1.11.2
cryptography==2.1.4
enum34==1.1.6
Fabric==1.14.0
idna==2.6
ipaddress==1.0.19
paramiko==2.4.0
pyasn1==0.4.2
pycparser==2.18
PyNaCl==1.2.1
six==1.11.0

無事にfabricが入ったのでfabfileをつくる

デプロイのためのfabfile.pyをつくる

# -*- coding: utf-8 -*-
from fabric.api import *
from fabric.decorators import runs_once
from datetime import datetime

env.hosts = ['00.000.000.0']
env.user = 'ec2-user'
env.key_filename = '~/.ssh/deploy_file.pem'
env.project_root = '../'
env.build_path = project_path
env.config_path = project_conf_path
env.branch = 'master'
env.archive = ''
env.server_api_dir = path

@task
@runs_once
def build_play():
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    env.archive = "api-%(timestamp)s.tar.gz" % {"timestamp":timestamp}
    with lcd(env.project_root):
         local("/usr/local/bin/activator clean stage")
         local("tar cvfz %(archive)s target" % {"archive":env.archive})
         put("%(archive)s" % {"archive":env.archive}, "%(dir)s/" % {"dir" : env.server_api_dir})
         local("rm %(archive)s" % {"archive":env.archive})
@task
@runs_once
def unck():
    run("sudo rm -Rf %(dir)s/target" % {"dir" : env.server_api_dir})
    run("tar zxvf %(dir)s/%(archive)s -C %(dir)s" % {"dir" : env.server_api_dir, "archive":env.archive})

@task
@runs_once
def deploy(branch=env.branch):
    execute(build_play)
    execute(unpack)

ここまでは順調

問題発生

fabricは問題なくお登勢てるにもかかわらずfabコマンドが動かない

deployディレクトリに移動してfab deployを叩くも失敗 どうしたもんか。。。 heroku側の設定も問題ないし、何より上のコマンドで先輩はdeployできている。

もうちょい調べる必要がありそうです。