いらっしゃいませファブリック!

生地とは何ですか。

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 それがそうです。