joppot

コピペで絶対動く。説明を妥協しない

サーバ プログラミング

pythonのfabricでファイルを分割しfabfileに読み込む方法

投稿日:2014年11月2日 更新日:


ogoier

概要

皆さんこんにちはcandleです。今回はfabricで分割したpythonファイルを読み込んでみましょう。
fabricはfabfile.pyというファイルに実行したいコマンドを書くのですが、
いくつかファイルを分割したい場合があります。
例えば、共通する設定を記述したり、メソッドをまとめたファイルを作成したり、グローバル変数を書いたファイルを作ったりします。
そのように、分たファイルを読み込む方法を紹介します。

前提

fabricのがインストールされている


ファイルを読み込む

まずは基本となるfabfile.pyを用意します。

touch fabfile.py

fabfile.pyにはfabricAPIのインポートの設定を書いておきます。

# -*- encoding:utf-8 -*-
from fabric.api import *
from fabric.colors import *

ネットワークの設定は各自の環境に合わせておいてください。
fabricdeffff

次に、別のpythonファイルを用意します。
例えば、共通のグローバル変数を書くファイルを作ってみましょう。

touch global_value.py

そのファイルにグローバル変数を作ってみましょう。

# -*- encoding:utf-8 -*-

HELLO_FILE = "~/hello.txt"

batako

保存しましょう。

fabfile.pyにglobal_value.pyを読み込みます。

私はpythonネイティブプログラマーじゃ無いので、この方法が本当にベストなのか分からないのですが、一応動くのでこれでやっています。
fabfile.pyに下のコードを加えます。

execfile("./global_value.py")

fabricinportfile

先ほどのHELLO_FILEグローバル変数が使えるか試してみましょう。

fabfile.pyに下の内容を加えます。

def show_global_value():
    print(HELLO_FILE)

showglobalvaluefunc

printしているのは先ほど、global_value.pyで書いたグローバル変数です。
保存しましょう。

実行して確認する

show_global_valueを実行します。

fab -l
fab show_global_value

fabricglobalresult

外部ファイルを読み込んだ先のグローバル変数を参照できていますね。

まとめ

応用としては、冒頭にも書いた様に、sshやmysqlの設定を外部ファイルにしたり、グローバル変数別ファイルにしたり、共通して使う関数を別ファイルにしたりするとよいでしょう。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-サーバ, プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

centosのfluentdをdaemon toolsを使って自動起動する

概要 みなさんこんにちはcandleです。今回は、fluentdの自動起動を試したいと思います。 centosかつfluentdかつdaemon toolsって誰に需要があるのか分からない記事ですがよ …

centos6.5にtd-agentサーバを構築する

English 日本語 概要 みなさん、こんにちはcandleです。 今回はcentos6.5にtd-agentサーバを構築してみたいと思います。 td-agentとは要はfluentdの事だと思いま …

memcachedサーバとruby on railsのdalliを使用してセッションを管理する

概要 みなさんこんにちはcandleです。今回はmemcachedサーバを利用してrailsのセッションを管理してみたいと思います。 一般にrailsでセッション管理をしていると、ブラウザのcooki …

railsのcarrierwaveとremotipartで画像のアップロードを非同期にしjsonを受け取る

概要 みなさんこんにちはcandleです。今回はremotipartとcarrierwaveを使って画像のアップロードをajax化したいと思います。 railsのフォームはremote設定をするだけで …

sshコマンドをaliasかssh configを使って短縮する

概要 みなさんこんにちはcandleです。今回はsshの接続先のホスト名を短くする方法です。 ssh接続は非常に強力なネットワークツールですが、接続先の指定がやや面倒ですね。それを単純にする方法をまと …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー