====== Fabric - シンプルな Pythonic リモート実行とデプロイメント ====== {{:python:python_fabric_image.jpg?280|The fabric is an image that is not Febreze.}}\\ "ファブリーズする男性" by duvsbefilmoc is licensed under CC BY 2.0 \\ ファブリック(fabric) とファブリーズ(febreze) は関係ないです🤤\\ 爽やかなお兄さんがファブ(fab)っていますけど...🤔\\ 本家: [[https://www.fabfile.org|Welcome to Fabric! — Fabric documentation - fabfile.org]] [[gtr>https://www.fabfile.org|翻訳]]\\ ソースコード: [[git>fabric/fabric|fabric/fabric: Simple, Pythonic remote execution and deployment.]]\\ 関連: [[https://www.pyinvoke.org|Welcome to Invoke! — Invoke documentation - pyinvoke.org]] [[gtr>https://www.pyinvoke.org|翻訳]]\\    [[https://www.paramiko.org/|Welcome to Paramiko! — Paramiko documentation]] [[gtr>https://www.paramiko.org/|翻訳]]\\ ドキュメント: [[https://docs.pyinvoke.org|Welcome to Invoke’s documentation! — Invoke documentation]] [[gtr>https://docs.pyinvoke.org|翻訳]]\\ ソースコード: [[git>pyinvoke/invoke|pyinvoke/invoke: Pythonic task management & command execution.]]\\        [[git>paramiko/paramiko|GitHub - paramiko/paramiko: The leading native Python SSHv2 protocol library.]]\\ ===== Linux =====
$ pip install fabric
Collecting fabric
  Downloading fabric-3.0.0-py3-none-any.whl (53 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 53.3/53.3 kB 343.5 kB/s eta 0:00:00
Collecting invoke>=2.0
  Downloading invoke-2.0.0-py3-none-any.whl (162 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 162.2/162.2 kB 908.3 kB/s eta 0:00:00
Collecting paramiko>=2.4
  Downloading paramiko-3.1.0-py3-none-any.whl (211 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.2/211.2 kB 1.1 MB/s eta 0:00:00
Collecting bcrypt>=3.2
  Downloading bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl (593 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 593.7/593.7 kB 1.8 MB/s eta 0:00:00
Collecting cryptography>=3.3
  Downloading cryptography-40.0.1-cp36-abi3-manylinux_2_28_x86_64.whl (3.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 2.9 MB/s eta 0:00:00
Collecting pynacl>=1.5
  Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 kB 511.0 kB/s eta 0:00:00
Requirement already satisfied: cffi>=1.12 in ./pyJupyterLab/lib64/python3.11/site-packages (from cryptography>=3.3->paramiko>=2.4->fabric) (1.15.1)
Requirement already satisfied: pycparser in ./pyJupyterLab/lib64/python3.11/site-packages (from cffi>=1.12->cryptography>=3.3->paramiko>=2.4->fabric) (2.21)
Installing collected packages: invoke, bcrypt, pynacl, cryptography, paramiko, fabric
Successfully installed bcrypt-4.0.1 cryptography-40.0.1 fabric-3.0.0 invoke-2.0.0 paramiko-3.1.0 pynacl-1.5.0
$ pip show {fabric,invoke,paramiko}
Name: fabric
Version: 3.0.0
Summary: High level SSH command execution
Home-page: https://fabfile.org
Author: Jeff Forcier
Author-email: jeff@bitprophet.org
License: BSD
Location: /home/tomoyan/pyJupyterLab/lib64/python3.11/site-packages
Requires: invoke, paramiko
Required-by: 
---
Name: invoke
Version: 2.0.0
Summary: Pythonic task execution
Home-page: https://pyinvoke.org
Author: Jeff Forcier
Author-email: jeff@bitprophet.org
License: BSD
Location: /home/tomoyan/pyJupyterLab/lib64/python3.11/site-packages
Requires: 
Required-by: fabric
---
Name: paramiko
Version: 3.1.0
Summary: SSH2 protocol library
Home-page: https://paramiko.org
Author: Jeff Forcier
Author-email: jeff@bitprophet.org
License: LGPL
Location: /home/tomoyan/pyJupyterLab/lib64/python3.11/site-packages
Requires: bcrypt, cryptography, pynacl
Required-by: fabric
===== Windows ===== > pip install fabric Collecting fabric Downloading fabric-2.6.0-py2.py3-none-any.whl (53 kB) |████████████████████████████████| 53 kB 339 kB/s Collecting pathlib2 Downloading pathlib2-2.3.5-py2.py3-none-any.whl (18 kB) Collecting invoke<2.0,>=1.3 Downloading invoke-1.5.0-py3-none-any.whl (211 kB) |████████████████████████████████| 211 kB 656 kB/s Collecting paramiko>=2.4 Downloading paramiko-2.7.2-py2.py3-none-any.whl (206 kB) |████████████████████████████████| 206 kB 726 kB/s Collecting pynacl>=1.0.1 Downloading PyNaCl-1.4.0-cp35-abi3-win_amd64.whl (206 kB) |████████████████████████████████| 206 kB 930 kB/s Collecting bcrypt>=3.1.3 Downloading bcrypt-3.2.0-cp36-abi3-win_amd64.whl (28 kB) Collecting cryptography>=2.5 Downloading cryptography-3.4.7-cp36-abi3-win_amd64.whl (1.6 MB) |████████████████████████████████| 1.6 MB 504 kB/s Collecting six>=1.4.1 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting cffi>=1.1 Downloading cffi-1.14.5-cp39-cp39-win_amd64.whl (179 kB) |████████████████████████████████| 179 kB 409 kB/s Collecting pycparser Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB) Installing collected packages: pycparser, six, cffi, pynacl, cryptography, bcrypt, pathlib2, paramiko, invoke, fabric Successfully installed bcrypt-3.2.0 cffi-1.14.5 cryptography-3.4.7 fabric-2.6.0 invoke-1.5.0 paramiko-2.7.2 pathlib2-2.3.5 pycparser-2.20 pynacl-1.4.0 six-1.16.0 ===== いつも混乱するかもしれない Fabric のバージョン ===== fabric❓ fabric2❓ Fabric3❓❓ Version 1.x 2.x ...🤯 😅💦💦💦w\\ **結論: fabric をインストールしよう!🤤 fabric2 は、1.x のユーザーが 2.0 への移行用で、fabric3 は不正なフォークです😅**\\ [[https://pypi.org/search/?q=fabric&o=|fabric - Search results · PyPI]]\\ {{:python:pypi_search_fabric_001.png?640|fabric - Search results · PyPI}}\\ ===== Fabric 1.x から 2.x へ再実装された経緯 ===== [[https://www.fabfile.org/|Welcome to Fabric! — Fabric documentation]] ([[https://www-fabfile-org.translate.goog/?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc|翻訳]])より抜粋\\ ==== fabric and fabric2 vs fabric3 ==== **fabric and fabric2 vs fabric3**\\ **fabric と fabric2 vs Fabric3**\\ \\ Unfortunately, the fabric3 entry on PyPI is an unauthorized fork of Fabric 1.x which we do not control.\\ //残念ながら、PyPI の fabric3 エントリは Fabric 1.x の不正なフォークであり、私たちは管理していません。//\\ Once modern Fabric gets up to 3.x, 4.x etc, we’ll likely continue distributing it via both fabric and fabric2 for convenience; there will never be any official fabric3, fabric4 etc.\\ //モダンなファブリックが 3.x、4.x などになったら、私たちは便宜上 fabric と fabric2 の両方を介して配布を続けるでしょう。公式の fabric3、fabric4などは決してありません。//\\ \\ In other words, fabric2 is purely there to help users of 1.x cross the 2.0 “major rewrite” barrier; future major versions will not be large rewrites and will only have small sets of backward incompatibilities.\\ //言い換えると、fabric2 は、1.x のユーザーが 2.0 の “主要な書き換え” の壁を越えるのを助けるためだけに存在します。将来のメジャー バージョンは大規模な書き換えではなく、下位互換性のない小さなセットのみが含まれます。//\\ \\ 本家: [[https://www.fabfile.org/installing.html#fabric-and-fabric2-vs-fabric3|Installing#fabric and fabric2 vs fabric3 — Fabric documentation]] より\\ GitHub: [[git>fabric/fabric/issues/1791|Clarify fabric vs fabric2 vs fabric3 differences · Issue #1791 · fabric/fabric]] ([[https://github-com.translate.goog/fabric/fabric/issues/1791?_x_tr_sl=zh-CN&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc|翻訳]])\\ ==== Upgrading from 1.x ==== **Upgrading from 1.x**\\ //**1.x からのアップグレード**//\\ \\ Modern Fabric (2+) represents a near-total reimplementation & reorganization of the software. It's been [[https://www.pyinvoke.org/faq.html#invoke-split-from-fabric|broken in two]], cleaned up, made more explicit, and so forth.\\ //Modern Fabric (2+) は、ソフトウェアのほぼ完全な再実装と再編成を表しています。それは [[https://www.pyinvoke.org/faq.html#invoke-split-from-fabric|2 つに分割され]]、クリーンアップされ、より明確化されました。//\\ \\ [[https://www.fabfile.org/upgrading.html|Upgrading from 1.x — Fabric documentation]] より\\ ==== Why was Invoke split off from the Fabric project? ==== [[https://www.pyinvoke.org/|Welcome to Invoke! — Invoke documentation]] より抜粋\\ **Why was Invoke split off from the Fabric project?**\\ //**Invoke が Fabric プロジェクトから分離されたのはなぜですか?**//\\ \\ Fabric (1.x and earlier) was a hybrid project implementing two feature sets: task execution (organization of task functions, execution of them via CLI, and local shell commands) and high level SSH actions (organization of servers/hosts, remote shell commands, and file transfer).\\ //Fabric (1.x 以前) は、次の 2 つの機能セットを実装するハイブリッド プロジェクトでした。 タスクの実行 (タスク関数の編成、CLI によるそれらの実行、およびローカル シェル コマンド) そして 高レベルの SSH アクション (サーバー/ホストの編成、リモート シェル コマンド、およびファイル転送)。//\\ \\ However, over time it became clear many users only needed one or the other, with local-only users resenting heavy SSH/crypto install requirements, and remote-focused users struggling with API limitations caused by the hybrid codebase.\\ //しかし、時間が経つにつれて、多くのユーザーがどちらか一方だけを必要とすることが明らかになりました。ローカルのみのユーザーが重い SSH/crypto インストール要件に不満を持っている場合、そして、ハイブリッド コードベースによって引き起こされる API の制限に苦しんでいるリモート フォーカスのユーザー。//\\ \\ When planning Fabric 2.x, having the “local” feature set as a standalone library made sense, and it seemed plausible to design the SSH component as a separate layer above. Thus, Invoke was created to focus exclusively on local and abstract concerns, leaving Fabric 2.x concerned only with servers and network commands.\\ //Fabric 2.x を計画する場合、「ローカル」機能をスタンドアロン ライブラリとして設定することは理にかなっています。 そして、SSH コンポーネントを上の別のレイヤーとして設計するのがもっともらしく思えました。したがって、Invoke は、ローカルで抽象的な問題にのみ焦点を当てるように作成され、Fabric 2.x はサーバーとネットワーク コマンドのみを考慮しました。//\\ \\ [[https://www.pyinvoke.org/faq.html|Frequently asked questions — Invoke documentation]] より\\ ===== タスク定義 ===== [[https://docs.fabfile.org/en/1.12.1/usage/tasks.html|Defining tasks — Fabric documentation]] ([[gtr>https://docs.fabfile.org/en/1.12.1/usage/tasks.html|翻訳]])\\ ===== 参考文献 ===== [[https://fabric-ja.readthedocs.io/ja/latest/index.html|Fabricのドキュメントへようこそ ! — Fabric ドキュメント]] (1.10.1 日本語訳 古い)\\ [[https://fabric-ja.readthedocs.io/ja/latest/usage/interactivity.html|リモートプログラムとのやりとり — Fabric ドキュメント]]\\ ==== 付録 ==== [[tw>tomoyan596sp/status/1642416698392449024|JupyterLab の Notebook で自動インストールを始めた🤤Python の Invoke Responder で、入力に自動応答できるけど英語文献しか出てこないようだ🤔Automatically responding to program output — Invoke documentation]]\\