読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

Macにfabricをインストールしてみた

fabric Python

スポンサードリンク

Djangoを使い始めました。
Webサイトの完成はまだまだなんだけど
デプロイどうしようか?となりました。


gitでやってもいいんだけど
gitはサーバ自体に.git/が残っていしまう。
※そうならないように階層下げて作ってもいいけど


また、gitの下に、gitを作るとちっと面倒なので(そもそもできるのか?)
gitでもデプロイは諦めました。


つーことで、pythonつながりで
「fabric」っつーのを見つけましたので、メモ。


easy_installを利用して、fabricをインストール

$ sudo easy_install fabric

インストールされているか、確認

$ fab -V
Fabric 1.8.3
Paramiko 1.12.4

うむ

fabricのファイルを作成してみる。

# 最初のファイルなんで
$ vim firstFabric.py
#!/usr/local/bin/python
# -*- coding:utf-8 -*-

from fabric.api import local

def hello():
	local('echo hello')

def uname():
	local('uname')

それでは、はじめてのfabric実行!(;`・ω・)ドキドキドキドキ

$ fab hello

Fatal error: Couldn't find any fabfiles!

Remember that -f can be used to specify fabfile path, and use -h for help.

Aborting.

orz


うーむ?と思うほどでもなかった。
知らなかったけど、どうやら「fabfile.py」という名前じゃないといけないらしい。


修正して、再度実行

$ mv firstFabric.py fabfile.py
$ fab hello
[localhost] local: echo hello
hello

Done.


(;`°Д°)ウォオオオオオオオオオオオオオオオオオオ!!!


なにこれ!!?
めっちゃ簡単やんけ!!!


あ、名前は「fabfile.py」じゃなくてもいいっぽい
デフォルトは「fabfile.py」なんで、変更した場合は指定しなさいってことね

$ fab -f firstFabric.py hello
[localhost] local: echo hello
hello

Done.


いいよ!!いいよ!!
fabricいいよいいよ!!!
ウフフヾ(*´∀`*)ノ キャッキャッ


なんと!複数サーバに向けて実行もできるらしい!!!
試してみる!!!


まずはソースを修正

#!/usr/local/bin/python
# -*- coding:utf-8 -*-

from fabric.api import run # local -> run

def hello():
	run('echo hello') # local -> run

def uname():
	run('uname -a') # local -> run, uname -> uname -a

そして、複数サーバが近くにあったので実行してみる。

# format : fab -u ${user} -H (${host}|${host},${host},...) ${functionName}

$ fab -u username -H 192.168.11.1,192.168.11.2,192.168.11.3 uname
[192.168.11.1] Executing task 'uname'
[192.168.11.1] run: uname -a
[192.168.11.1] Login password for 'username': 
[192.168.11.1] out: Linux localhost.localdomain 2.6.18-308.1.1.el5 #1 SMP Wed Jan 1 04:16:51 EST 20xx x86_64 x86_64 x86_64 GNU/Linux
[192.168.11.1] out: 

[192.168.11.2] Executing task 'uname'
[192.168.11.2] run: uname -a
[192.168.11.2] out: Linux localhost.localdomain 2.6.18-308.4.1.el5 #1 SMP Tue Jan 1 04:17:00 EDT 20xx x86_64 x86_64 x86_64 GNU/Linux
[192.168.11.2] out: 

[192.168.11.3] Executing task 'uname'
[192.168.11.3] run: uname -a
[192.168.11.3] out: Linux localhost.localdomain 2.6.18-308.4.1.el5 #1 SMP Tue Jan 1 05:18:19 EST 20xx x86_64 x86_64 x86_64 GNU/Linux
[192.168.11.3] out: 

Disconnecting from 192.168.11.1... done.
Disconnecting from 192.168.11.2... done.
Disconnecting from 192.168.11.3... done.


・・・・・・・・・・・・・・・・
(声にならない)


・・・・・・・・・・・・・・・・
(声がでないんだ)


・・・・・・・・・・・・・・・・
(なんていうかな・・・・。)


・・・・・・・・・・・・・・・・
(ほらあれだよ。が出すぎて声がでないんだ)


・・・・・・・・・・・・・・・・
悶絶っつーのかな・・・?少し違うかな?)


・・・・・・・・・・・・・・・・
(画像で言うとこんな感じだよ)

f:id:aipacommander:20140603181405j:plain

・・・・・・・・・・・・・・・・
(ね?ちょっとはわかるでしょう?)
・・・・・・・・・・・・・・・・
(今すごく感動しているんだよ。)



ふぅ
ちょっと取り乱しましたが、すごい感動しました。
たったこれだけ?とか、こんなツール知っていないの?情弱。
とか言われるかもしれませんが

そんなのどうでもいい!!取りあえず、すげぇ!すげぇよこれ!


隊長は、あと10年は戦えそうです。