pythoneerの三大神器-fabric

3736 ワード

1.virtualenvは、プロジェクト固有のpython環境を仮想化するために使用されます.virtualenvを使用してきれいな環境を維持することは非常に役に立ちます.
2.pipはプロジェクト依存問題を解決するために使用される.プロジェクトに依存するサードパーティのすべてのライブラリをrequirementsに書きます.txtでpipで一括インストールします.一般的にvirtualenvと組み合わせて使用し、すべてのパッケージをvirtualenvの環境にインストールします.
3.fabricはリモート導入プロジェクトを自動化するために使用され、非常に便利です.必要に応じてローカル、リモートで一連のshellコマンド、プログラムなどを順次実行できます.たとえば、コード・ライブラリからコードを更新したり、データ移行スクリプトを実行したり、サービス・プロセスを再起動したりして、自動化された導入を完了します.
FabricはPythonの中で非常に強力なロット遠隔管理と配置ツールであり、多くの遠隔PC上でSSHタスクを一括実行するのによく使われる.
一般的な使い方は以下のようにまとめられています.
1,まず,一括して実行するタスクをfabfileに書き込む.pyで、
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 # -*- coding:utf- 8 -*-
  from fabric.api import run, local, roles, env, cd env.hosts=[      '192.168.1.110' ,      '192.168.1.111' ,      '192.168.1.112' ] env.user= "username" env.password= "password" env.port= 22 #env.parallel=True #env.skip_bad_hosts=True #env.timeout= 1 #env.warn_only=True
  # local PC . # run PC . def ls():      with cd( '/home/workspace/project' ):          local( 'touch 1.log' )      with cd( '/home/workspace/project2' ):          local( 'touch 2.log' )
  # @parallel , # @serial def pull():      with cd( '/home/workspace/project' ):          run( 'git pull' )
  def clean():      with cd( '/home/workspace/project' ):          run( 'bash clean.sh' )
  @hosts ( '192.168.1.113' ) def robot(device):      with cd( '/home/workspace/project' ):          run( 'bash run.sh %s robot && sleep 1' % device)
以上が簡単なfabfileです.py、定義関数はいずれもfabの実行可能なコマンドに対応する.
 
中には2つの小さな注意事項があります.
A,リモートマシンのrun.shで非システム的に一般的なツールを実行する場合は、絶対パスとして指定することが望ましい.nohupの方式を適宜用いることができる.
B.他のスクリプトやコマンドを実行する後にsleepを加えることで、FabricがリモートPCに接続するセッションを早期にシャットダウンし、タスクの実行に失敗することを防止することが望ましい.
2、実行プロセス:fabric実行は現在のディレクトリの下のfabfileをデフォルトで選択する.pyファイル、
fab clean
fab pull
fab robot:hosts="192.168.1.115",device=5560
指定するリモートPCにhostsパラメータを介してfabricに転送することができ、このhostsパラメータの優先度比env.hostsは高いです.
fabのコマンドにdeviceなどのパラメータを渡すこともできる.
また、fab-f otherFabFileを通過することもできる.py cleanは他のfabricファイルを指定します.
以上、単純な使い方ですが、より高度な使い方が必要な場合は、このプロジェクトのgithubホームページに注目してください.https://github.com/fabric/fabric.