検索
ホームページバックエンド開発Python チュートリアル運用保守マネージャー Fabric の使い方

ファブリックのインストール

ファブリックは、pip、easy_install、またはソースコードのインストールをサポートしており、パッケージの依存関係の問題を解決するのに非常に便利です(ユーザー環境に応じて、pipまたはease_installを自分で選択してください)
pip install Fabric
easy_installファブリック

ソースコードのインストールは導入されません。
モジュールのインポート時に例外がなければ、インストールは成功しています:

root@Python_S6:~# python
Python 2.7.5+ (デフォルト、2013 年 9 月 19 日、13:48:49)
linux2 の [GCC 4.8 .1]
詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。
>>> ファブリックをインポートします
>>>

公式 Web サイト簡単な入門例を示します。

root@Python_S6:/home/chart7/test/fabric# cat farbic.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import run
  
def host_type(): #定义一个任务函数,通过run方法实现远程执行'uname -s'命令
  run('uname -s')

実行結果が下の図に示されている場合、

運用保守マネージャー Fabric の使い方

コマンドは、デフォルト以外のファイル名が使用されている場合、デフォルトのファイル名 fabfile.py を参照します。 fab -H 192.168.1.23,192.168.1.24 -f host_type.py host_type のように、「-f」で指定する必要があります。管理マシンとターゲット ホストがキー認証信頼で構成されていない場合は、ターゲット ホストの対応するアカウントのログイン パスワードを入力するよう求められます。

1. fab の一般的に使用されるパラメータ

fab は、Fabric プログラムのコマンド入口として、豊富なパラメータ呼び出しを提供します。 コマンド形式は次のとおりです:
fab [options] [:arg1,arg2] =val2,host=foo, hosts='h1;h2',....]
一般的に使用されるいくつかのパラメーターを以下に示します。fab -help.
-l を使用すると、定義されたタスク関数名が表示されます。
-f、fab エントリ ファイルを指定します。デフォルトのエントリ ファイル名は fabfile.py です。
-g、要塞ホスト環境などのゲートウェイ デバイスを指定します。
-H、ターゲットを指定します。ホスト、複数のホストは「,」で区切られます。
-P、非同期並列モードで複数のホスト タスクを実行します。デフォルトはシリアル操作です。
-R、ロール (役割) を指定し、異なるビジネス グループ デバイスを区別します。
-t、デバイス接続タイムアウトを設定します。
-T、リモートホストコマンド実行タイムアウトを設定します。
-w、コマンドの実行が失敗した場合、デフォルトでタスクを終了する代わりに警告が発行されます。

2. fabfile の書き込み

fab コマンドは、私たちが作成した fabfile.py と組み合わせて使用​​します (その他のファイル名は -f ファイル名参照で追加する必要があります)。一部のコマンド ライン パラメーターは、より柔軟にするために、対応するメソッドに置き換えることができます。 H 192.168.1.23,192.168.1.24" の場合、"env.hosts=[192.168.1.23,192.168.1.24]" のように環境ホストを定義できます。 fabfile の本体は複数のカスタマイズされたタスク関数で構成されます。異なるタスク関数はさまざまな操作ロジックを実装します。以下に詳細を示します

3. グローバル属性設定

env オブジェクトは、ターゲット ホスト、ユーザー、パスワード ロールを含む複数の属性を定義するために使用されます。各属性の意味は次のとおりです。

env.host,定义目标主机,可以用IP或主机名表示,以Python的列表形式定义,如env.hosts=['192.168.1.23,192.168.1.24'].
env.exculde_hosts,排除指定主机,如env.exclude_hosts=['192.168.1.23']
env.user,定义用户名,如env.user="root"
env.port,定义目标主机端口,如env.port = '22'
env.password,定义密码,如env.password='123456'
env.passwords,与password功能一样,区别在于不同主机不同密码的应用场景,需要注意的是,配置passwords时需要配置用户,主机,端口等信息,如:env.passwords = {'root@192.168.1.21:22':'123456',
'root@192.168.1.23:22':'3234234',
'root@192.168.1.24:23':'09887',
}
env.gateway,定义网关(中转,堡垒机)IP,如env.gateway = '192.168.1.1'
env.roledefs,定义角色分组,比如web组与db组主机区分开来,定义如下:
env.roledefs = {
'webservers':['192.168.1.21','192.168.1.22','192.168.1.23'],
'dbservers':['192.168.1.24','192.168.1.25'],
}

引用する場合は Python 修飾子を使用します。 role 修飾子の下にあるタスク関数にはそのスコープがあります。 例を見てみましょう:

@roles('webservers')
def webtask():
  run('/etc/init.d/nginx start')
@roles('dbservers'):
def dbtask():
  run('/etc/init.d/mysql start')
@roles('webservers','dbservers')
def publictask():
  run('uptime')
def deploy():
  execute(webtask)
  execute(dbtask)
  execute(publictask)

コマンドが fabdeploy を実行すると、異なるロールが適用されます。さまざまなタスク機能を実行できます。

一般的に使用される API

Fabric は、シンプルかつ強力な Fabric.api コマンド セットを提供します。この API を呼び出すだけで、次のような一般的なメソッドと手順を完了できます。

local,执行本地命令,如local:('uname -s');
lcd,切换本地目录,如lcd:('/home');
cd,切换远程目录,如cd:('/data/logs/');
run,执行远程命令,如:run('free -m')
sudo,sudo方式执行远程命令,如:sudo('/etc/init.d/httpd start');
put,上传本地文件到远程主机,如:put('/home/user.info','/data/user.info');
get,从远程主机下载文件到本地,如:get('/home/user.info','/data/user.info');
prompt,获得用户输入信息,如:prompt('please input user password:');
confirm,获得提示信息确认,如:confirm('Test failed,Continue[Y/N]');
reboot,重启远程主机,如reboot();
@task,函数修饰符,标识符的函数为fab可调用,非标记对fab不可见,纯业务逻辑;
@runs_once,函数修饰符,标识符的函数只会执行一次,不受多台主机影响;

例 1 : ローカルおよびリモート ホスト情報
この例では、local() メソッドを呼び出してローカル コマンドを実行し、タスク関数が 1 回だけ実行されるように「@runs_once」変更を追加します。 run() メソッドを呼び出してリモートコマンドを実行します

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import *
env.user = 'root'
env.hosts = ['192.168.1.43','192.168.1.23','192.168.1.24']
env.port = '22'
env.password = '123456'
  
@runs_once #查看本地系统信息,当有多台主机时只运行一次
def local_task(): #本地任务函数
  local('uname -a')
  
def remote_task():
  with cd('/data'): #with的作用是让后面的表达式语句继承当前状态,实现cd /var && ls -l的效果
    run('ls -l')

それぞれ fab コマンドを通じて local_task タスク関数を呼び出します。実行結果は次の図のようになります

運用保守マネージャー Fabric の使い方

結果は [192.168.1.23] となります。タスク「local_task」を実行していますが、実際には上記はホスト 192.168.1.23 でタスクを実行するのではなく、ファブリック ホストに対してローカルな「uname -a」の実行結果を返します。 remtoe_task タスク関数を呼び出した実行結果は次のとおりです。例 2; リモート ディレクトリ リストを動的に取得する

この例では、「@task」修飾子を使用してエントリ関数 go() を外部アクセス可能としてマークし、「@runs_once」シンボルと連携してユーザー入力を待ちます。最後に、worktask() タスク関数が呼び出されて、リモート コマンド実行が実装されます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import *
env.user = 'root'
env.hosts = ['192.168.1.23','192.168.1.24']
env.password = '123456'
@runs_once #在主机遍历过程中,只有一台出发此函数
def input_raw():
  return prompt("please input direcotry name:",default="/home")
  
  
def worktask(dirname):
  run("ls -l %s" %dirname)
  
@task
def go():
  getdirname = input_raw()
  worktask(getdirname)

運用保守マネージャー Fabric の使い方 この例では、入力が必要なのは一度だけなので、リモート ディレクトリの名前を動的に入力してディレクトリ リストを取得する関数を実装しています。全ホストのディレクトリの一覧情報を表示するには、 @runs_once 修飾子を付けてサブ関数 input_raw (同時に設定) を呼び出します。実行結果は以下のようになります


ファイルをアップロードし、処刑

りぃ

運用保守マネージャー Fabric の使用方法に関するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター