いらっしゃいませファブリック!¶
生地とは何ですか。¶
Fabricは、SSHリモートでshellコマンドを実行し、有用なPythonオブジェクトを生成することを目的とした高度なPython(2.7、3.4+)ライブラリです。
>>> from fabric import Connection
>>> result = Connection('web1.example.com').run('uname -s', hide=True)
>>> msg = "Ran {0.command!r} on {0.connection.host}, got stdout:\n{0.stdout}"
>>> print(msg.format(result))
Ran 'uname -s' on web1.example.com, got stdout:
Linux
それは Invoke (サブプロセスコマンド実行およびコマンドライン機能)および Paramiko (SSHプロトコル実装),それらのAPIを拡張して相互に補完し,追加機能を提供する.
これはどうやって使うのですか。¶
交換行列のコア使用例は、限定される訳ではない:
単一のホスト上の単一のコマンド:
>>> result = Connection('web1').run('hostname') web1 >>> result <Result cmd='hostname' exited=0>
複数のホストにまたがる単一のコマンド(異なる方法:シリアル、パラレルなど):
>>> from fabric import SerialGroup >>> result = SerialGroup('web1', 'web2').run('hostname') web1 web2 >>> # Sorting for consistency...it's a dict! >>> sorted(result.items()) [(<Connection host=web1>, <Result cmd='hostname' exited=0>), ...]
各接続に対するPythonコードブロック(関数/方法):
>>> def disk_free(c): ... uname = c.run('uname -s', hide=True) ... if 'Linux' in uname.stdout: ... command = "df -h / | tail -n1 | awk '{print $5}'" ... return c.run(command, hide=True).stdout.strip() ... err = "No idea how to get disk space on {}!".format(uname) ... raise Exit(err) ... >>> print(disk_free(Connection('web1'))) 33%
複数のホスト上のPythonコードブロック:
>>> # NOTE: Same code as above! >>> def disk_free(c): ... uname = c.run('uname -s', hide=True) ... if 'Linux' in uname.stdout: ... command = "df -h / | tail -n1 | awk '{print $5}'" ... return c.run(command, hide=True).stdout.strip() ... err = "No idea how to get disk space on {}!".format(uname) ... raise Exit(err) ... >>> for cxn in SerialGroup('web1', 'web2', 'db1'): ... print("{}: {}".format(cxn, disk_free(cxn))) <Connection host=web1>: 33% <Connection host=web2>: 17% <Connection host=db1>: 2%
これらのアスペクトベースの用例に加えて,FabricはInvokeのコマンドラインタスク機能と容易に統合することができ, fab
バイナリ控え:
Python関数、方法、またはオブジェクト全体をCLIアドレス可能タスク、例えばCLIアドレス可能タスクとして使用することができます。
fab deploy
;タスクは、それ自身が実行する前または後に実行される他のタスク(タスクの前または後)を示すことができる。
タスクは通常のGNUスタイルのパラメータによってパラメータ化され,例えば
fab deploy --env=prod -d
;単一のCLIセッションでは、複数のタスク、例えば、複数のタスクを与えることができる
fab build deploy
;さらに重要なのは-他のすべての呼び出し機能をサポートしています-参照 its documentation もっと細かいことを知っています。
私はFabric 1のユーザーですが、どのようにアップグレードしますか?¶
現代のFabricは、Fabric 1との実装を可能にするようにパッケージ化されていますので、使用事例に必要な任意の速度でアップグレードすることができます。様々な可能な方法があります私たちの detailed upgrade documentation もっと細かいことを知っています。
これは何のサイトですか?¶
www.fabfile.org
ChangeLog,貢献案内,開発路線図,ニュース/ブログなど,Fabricのプロジェクト情報を提供する.
詳細な概念的さとAPI文書は私たちのコード文書サイトで見つけることができます docs.fabfile.org それがそうです。