ファブリック - Linux で SSH 経由でシェル コマンドをリモートで実行する
常に変化するソフトウェア開発の世界では、効率的なリモート サーバー管理が非常に重要です。システム管理者、ソフトウェア エンジニア、ソフトウェア開発者のいずれであっても、リモート サーバー上で Linux コマンドを実行できるようにすることは一般的なタスクです。
ここで、SSH 経由で Linux コマンドをリモートで実行するように設計された高レベルのPython ライブラリであるファブリックが、リモート システムを管理する必要がある人にとって不可欠なツールになります。 Python の機能を活用します。
ファブリックとは何ですか?
ファブリックは、SSH 接続経由でリモート サーバー上でシェル コマンドを実行するプロセスを簡素化する、多用途のPython ライブラリです。当初はジェフ・ フォーシエによって開発され、後にオープンソース プロジェクトになりました。
リモート システムを操作するための高レベルの Python インターフェイスを提供し、タスクの自動化、コードのデプロイ、および複数のサーバーにわたる構成の管理を簡単に行うことができます。
なぜファブリックを使用するのか?
リモート コマンド実行のニーズに合わせてファブリックを選択する説得力のある理由がいくつかあります。
- Python のアプローチ – Fabric は Python の哲学に準拠しているため、開発者やシステム管理者が使い慣れた言語でスクリプトを簡単に作成できます。
- SSH と Paramiko – ファブリックは SSH 接続を処理するために Paramiko ライブラリに依存しており、コマンドをリモートで実行するための安全で信頼性の高い方法を提供します。
- タスクベースのワークフロー – Fabric は、リモート コマンド実行に対するタスク指向のアプローチを奨励します。本質的に Python 関数であるタスクを定義すると、Fabric がリモート サーバー上でタスクを実行します。
- ユース ケース – Fabric は、アプリケーションの展開、サーバー構成の管理、システム メンテナンス タスクの実行など、幅広いユース ケースに適した多用途ツールです。
このガイドでは、ファブリックを導入し、サーバー グループのサーバー管理を強化するために使用を開始する手順について説明します。
Linux にファブリック オートメーション ツールをインストールする方法
ファブリックの重要な特徴は、管理する必要があるリモート マシンに標準の OpenSSH サーバーがインストールされているだけで済むことです。
開始する前に、リモート サーバーの管理元のサーバーに特定の要件をインストールするだけで済みます。
要件:
- 開発ヘッダーを備えた Python 2.5 以降
- Python-setuptools および pip (オプションですが推奨) gcc
ファブリックは pip パッケージ マネージャーを使用して簡単にインストールできますが、デフォルトのパッケージ マネージャー yum、dnf、または apt/apt-get を選択してファブリック パッケージをインストールすることもできます。 、 通常はファブリックまたはパイソンファブリックと呼ばれます。
RHEL システムにファブリックをインストールする
CentOS Stream、Rocky Linux、AlmaLinux などの RHEL ベースのディストリビューションでは、EPEL リポジトリをシステムにインストールして有効にする必要があります。 ファブリックパッケージをインストールします。
sudo dnf install epel-release
sudo dnf install fabric
Debian システムにファブリックをインストールする
Ubuntu や Linux Mint などの Debian ベースのディストリビューションでは、 ユーザーは単に適切にファブリックパッケージを次のようにインストールできます。表示:
sudo apt install fabric
PiP を使用してファブリックをインストールする
システムのリポジトリからファブリックを入手できない場合は、pipを使用して、次のようにインストールできます。
sudo yum install python3-pip [On RedHat based systems]
sudo dnf install python3-pip [On Fedora 22+ versions]
sudo apt install python3-pip [On Debian based systems]
pip が正常にインストールされたら、次のように pip を使用して最新バージョンの fabric を取得できます。
pip3 install fabric
ファブリックを使用して Linux 管理タスクを自動化する方法
まずはファブリックの使い方を見ていきましょう。インストール プロセスの一環として、'fab'
という Python スクリプトがシステムの PATH 内のディレクトリに追加されます。 'fab'
スクリプトは、ファブリック を使用する際のすべてのタスクを処理します。
Linux コマンドをローカルで実行する
慣例により、お気に入りのテキスト エディターを使用して、fabfile.py
という Python ファイルを作成することから始める必要があります。このファイルには必要に応じて別の名前を付けることができますが、次のようにファイル パスを指定する必要があることに注意してください。
fab --fabfile /path/to/the/file.py
ファブリックは、'fabfile.py'
を使用してタスクを実行します。'fabfile'
は、 を実行するディレクトリと同じディレクトリに配置する必要があります。ファブリックツール。
例 1: まず、基本的な Hello World
を作成しましょう。
vi fabfile.py
これらのコード行をファイルに追加します。
def hello():
print('Hello world, Tecmint community')
ファイルを保存し、以下のコマンドを実行します。
fab hello
次に、ローカル マシンで uptime コマンドを実行するための fabfile.py の例を見てみましょう。
例 2: 次のように、新しい fabfile.py ファイルを開きます。
vi fabfile.py
そして、次のコード行をファイルに貼り付けます。
#! /usr/bin/env python
from fabric.api import local
def uptime():
local('uptime')
次に、ファイルを保存し、次のコマンドを実行します。
fab uptime
SSH 経由で Linux コマンドをリモートで実行する
ファブリック API は、Python の env
として知られる連想配列に相当する構成ディクショナリを使用します。このディクショナリには、ファブリックの動作を制御する値が格納されます。
env.hosts
は、ファブリックタスクを実行するサーバーのリストです。ネットワークが 192.168.0.0 で、fabfile を使用してホスト 192.168.0.2 と 192.168.0.6 を管理したい場合では、env.hosts を次のように構成できます。
#!/usr/bin/env python
from fabric.api import env
env.hosts = [ '192.168.0.2', '192.168.0.6' ]
上記のコード行は、ファブリック タスクを実行するホストを指定するだけで、それ以上のことは行いません。したがって、いくつかのタスクを定義できます。ファブリックは、リモート マシンと対話するために使用できる一連の関数を提供します。
多くの関数がありますが、最もよく使用されるのは次のとおりです。
- 実行 – リモート マシン上でシェル コマンドを実行します。
- ローカル – ローカル マシンでコマンドを実行します。
- sudo – root 権限でリモート マシン上でシェル コマンドを実行します。
- 取得 – リモート マシンから 1 つ以上のファイルをダウンロードします。
- Put – 1 つ以上のファイルをリモート マシンにアップロードします。
例 3: 複数のマシンでメッセージをエコーするには、以下のような fabfile.py
を作成します。
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def echo():
run("echo -n 'Hello, you are tuned to Tecmint ' ")
タスクを実行するには、次のコマンドを実行します。
fab echo
例 4: 前に作成した fabfile.py
を改良して、ローカル マシン上で uptime コマンドを実行できるようにすることができます。次のように、uptime コマンドを実行し、複数のマシンで df コマンドを使用してディスク使用量もチェックします。
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def uptime():
run('uptime')
def disk_space():
run('df -h')
ファイルを保存し、次のコマンドを実行します。
fab uptime
fab disk_space
リモート Linux サーバーに LAMP スタックを自動的にインストールする
例 4:LAMP (Linux、Apache、MySQL/MariaDB、および PHP) サーバーをデプロイする例を見てみましょう。リモート Linux サーバー。
root 権限を使用して LAMP をリモートでインストールできるようにする関数を作成します。
RHEL/CentOS および Fedora の場合
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
run ("yum install -y httpd mariadb-server php php-mysql")
Debian/Ubuntu および Linux Mint の場合
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")
ファイルを保存し、次のコマンドを実行します。
fab deploy_lamp
注: 出力が大きいため、この例ではスクリーンキャスト (アニメーション gif) を作成できません。
Fabric とその機能と上記の例を使用して、Linux サーバー管理タスクを自動化できるようになりました。
ファブリックの便利なオプション
fab --help
を実行すると、役立つ情報と使用可能なコマンド ライン オプションの長いリストが表示されます。- 重要なオプション
--fabfile=PATH
は、fabfile.py
以外にインポートする別の Python モジュール ファイルを指定するのに役立ちます。 - リモート ホストに接続するときに使用するユーザー名を指定するには、
--user=USER
オプションを使用します。 - 認証や sudo にパスワードを使用するには、
--password=PASSWORD
オプションを使用します。 - コマンド NAME に関する詳細情報を出力するには、
--display=NAME
オプションを使用します。 - 形式を表示するには、
--list
オプションを使用します。選択肢: short、normal、nested、--list-format=FORMAT
オプションを使用します。 - 使用可能なコマンドのリストを出力して終了するには、
--list
オプションを含めます。 --config=PATH
オプションを使用して、使用する構成ファイルの場所を指定できます。- 色付きのエラー出力を表示するには、
--colorize-errors
を使用します。 - プログラムのバージョン番号を表示して終了するには、
--version
オプションを使用します。
まとめ
Fabric は、SSH 経由でのリモート コマンドの実行を合理化し、ユーザーフレンドリーな Python アプローチを提供する強力な Python ライブラリです。複雑なタスクを簡素化し、システム管理を自動化する機能により、システム管理者、開発者、DevOps 専門家にとって貴重なツールになります。
単一サーバーを管理している場合でも、大規模な展開を調整している場合でも、Fabric はジョブを効率的かつ効果的に実行するのに役立ちます。