遠隔配置ツールFabric詳細(Python 3対応)
前言
もしあなたが「Fabric」のキーワードを検索したら、90%の資料は全部時代遅れです。今はFabricはPython 3を支持していますが、旧版Fabricに対応していません。ですから、それらの教程に従って操作したら全然だめです。
もしファブリックを使ったことがないなら、この文章はすぐにファブリックを上手にしてくれます。今使ってもいいですか?先に調べても大丈夫です。
普段の開発プロセスはこのようにして、数ヶ月の奮闘を経て、プロジェクトはついに開発されました。テストも大丈夫です。コードをGitHubのような委託管理プラットフォームに提出して、正式な環境に配置するつもりです。慎重に正式サーバにログインして、プロジェクトディレクトリに入り、コードをリモート倉庫からおろして、プログラムを起動します。後には毎回新しい機能が発行されます。或いは、小さなBugを修正した時に、繰り返しの操作を実行して、サーバーに登録して、指定されたディレクトリに切り替えて、コードを引き出して、サービスを再開します。
実はこのような操作はとても複雑で、技術的な内容もあまりなくて、問題も出やすくて、ファブリックが登場しました。Fabricはリモートに神器を配置し、リモートサーバのコマンドをローカルに実行することができます。
どうしますか?簡単です。いくつかのステップだけです。
ファブリックの取り付け
最新のFabfile.pyファイルは必要ないです。fab命令も必要ないです。今はほとんどの教程、資料はfabric 1に基づいて書いています。これらの教程を見ている時、選別に注意してください。新版のFabricが提供するAPIはとても簡単です。
コマンドを実行
まず例を見てください。次は配置台本です。
FabricはLinuxだけではなく、Windowsプラットフォームでもよく実行されています。中小プロジェクトでは、非常に良好なオペレーティングツールです。
接続を構築する
ファイルをアップロード
runメソッドはコマンドを実行するために使用され、cdは指定されたディレクトリに入り、putメソッドはファイルをアップロードするために使用されます。
複数のサーバでコマンドを実行する場合、簡単な方法は反復を使用して、サーバごとにコマンドを実行することです。*hosts:複数のホスト名またはIP に入ることができます。**kwargs受信したパラメータはConnectionと同じようにパスワード を指定できます。
この文章は終わりました。ゲットしましたか?
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
もしあなたが「Fabric」のキーワードを検索したら、90%の資料は全部時代遅れです。今はFabricはPython 3を支持していますが、旧版Fabricに対応していません。ですから、それらの教程に従って操作したら全然だめです。
もしファブリックを使ったことがないなら、この文章はすぐにファブリックを上手にしてくれます。今使ってもいいですか?先に調べても大丈夫です。
普段の開発プロセスはこのようにして、数ヶ月の奮闘を経て、プロジェクトはついに開発されました。テストも大丈夫です。コードをGitHubのような委託管理プラットフォームに提出して、正式な環境に配置するつもりです。慎重に正式サーバにログインして、プロジェクトディレクトリに入り、コードをリモート倉庫からおろして、プログラムを起動します。後には毎回新しい機能が発行されます。或いは、小さなBugを修正した時に、繰り返しの操作を実行して、サーバーに登録して、指定されたディレクトリに切り替えて、コードを引き出して、サービスを再開します。
実はこのような操作はとても複雑で、技術的な内容もあまりなくて、問題も出やすくて、ファブリックが登場しました。Fabricはリモートに神器を配置し、リモートサーバのコマンドをローカルに実行することができます。
どうしますか?簡単です。いくつかのステップだけです。
ファブリックの取り付け
$ pip install fabric --upgrade
なお、もしインストールされているのが旧版のFabricであれば、新版のFabricは旧版に対応していません。現在はFabricには3つのバージョンがあります。Fabric 1は以前のFabricです。Python 2だけサポートしています。Fabric 2は現在のFabricです。Python 2とPython 3をサポートしています。旧版のFabric 1からクローンされた非公式バージョンですが、Fabric 1に対応し、Python 2とPython 3もサポートされています。最新のFabfile.pyファイルは必要ないです。fab命令も必要ないです。今はほとんどの教程、資料はfabric 1に基づいて書いています。これらの教程を見ている時、選別に注意してください。新版のFabricが提供するAPIはとても簡単です。
コマンドを実行
まず例を見てください。次は配置台本です。
# deploy.py
# 1.
# 2.
# 3.
from fabric import Connection
def main():
# ip
# ssh , connect_kwargs 。
c = Connection("[email protected]", connect_kwargs={"password": "youpassword"})
with c.cd('/var/www/youproject'):
c.run("git pull origin master")
c.run("/usr/bin/supervisorctl -c ../supervisor/supervisord.conf restart youproject")
if __name__ == '__main__':
main()
実行
python deploy.py
実行が完了したら、最新コードは正式な環境に配置されてサービスを再開しました。とても便利ですか?お母さんはもう心配しないでください。FabricはLinuxだけではなく、Windowsプラットフォームでもよく実行されています。中小プロジェクトでは、非常に良好なオペレーティングツールです。
接続を構築する
class Connection(Context):
host = None
user = None
port = None
ssh_config = None
connect_timeout = None
connect_kwargs = None
...
Connectionオブジェクトを構築する方法は違っています。例えば、hostを「host」と書いてもいいです。[email protected]:22「3つのパラメータとして書き分けてもいいです。connect_.kwargsは辞書の対象で、サーバーの登録パスワードや鍵は通常記入します。ファイルをアップロード
runメソッドはコマンドを実行するために使用され、cdは指定されたディレクトリに入り、putメソッドはファイルをアップロードするために使用されます。
from fabric import Connection
c = Connection('web1')
c.put('myfiles.tgz', '/opt/mydata')
c.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')
複数のサーバ複数のサーバでコマンドを実行する場合、簡単な方法は反復を使用して、サーバごとにコマンドを実行することです。
# web1,web2,mac1 , ip
>>> from fabric import Connection
>>> for host in ('web1', 'web2', 'mac1'):
>>> result = Connection(host).run('uname -s')
... print("{}: {}".format(host, result.stdout.strip()))
...
web1: Linux
web2: Linux
mac1: Darwin
またはSerialGroupを使用します。
from fabric import SerialGroup as Group
pool = Group('web1', 'web2', 'web3', connect_kwargs={"password": "youpassword"} )
pool.put('myfiles.tgz', '/opt/mydata')
pool.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')
Group(*hosts、**kwargs)パラメータの説明:この文章は終わりました。ゲットしましたか?
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。