mei_13のPython講座 ロゴ

【Pythonコラム】Pythonで始める簡単リモート操作:Fabric入門




Pythonで始める簡単リモート操作:Fabric入門

「Fabric(ファブリック)」という名前を聞いたことはありますか? FabricはPythonで書かれた、シンプルで強力なリモート実行ツールです。サーバの構築、アプリケーションのデプロイ、定期的なメンテナンス作業など、様々なタスクを自動化するのに役立ちます。今回は、Fabricの基本的な使い方を初心者向けに分かりやすく解説します。

Fabricとは?

Fabricは、SSHを使ってリモートサーバに接続し、コマンドを実行するためのツールです。設定ファイルを記述することで、複数のサーバに対して同じコマンドを同時に実行したり、一連のタスクを自動化したりすることができます。

Fabricを使うメリット

  • 自動化: 定型的な作業をスクリプト化することで、手作業によるミスを減らし、時間を節約できます。
  • 並列実行: 複数のサーバに対して同じコマンドを同時に実行できるため、作業時間を大幅に短縮できます。
  • 冪等性: 同じスクリプトを何度実行しても、結果が変わらないように設計することで、安定した運用を実現できます。
  • Pythonベース: Pythonの豊富なライブラリを活用できるため、複雑な処理も記述しやすいです。

Fabricのインストール

Fabricを使うには、まずPythonのパッケージ管理ツールであるpipを使ってインストールします。ターミナルで以下のコマンドを実行してください。

pip install fabric3

fabric3となっているのは、FabricのPython3対応版です。Python2をお使いの場合はfabricと入力してください。

基本的な使い方

Fabricのスクリプトは、fabfile.pyというファイル名で作成します。このファイルに、実行したいタスクをPythonの関数として記述します。

例えば、リモートサーバに接続して、uptimeコマンドを実行するタスクは、以下のようになります。

from fabric.api import *

env.hosts = ['your_user@your_server_ip']
env.password = 'your_password' # もしくはSSHキーを使用

def uptime():
    run('uptime')

このスクリプトを保存したら、ターミナルで以下のコマンドを実行します。

fab uptime

your_useryour_server_ipyour_passwordは、あなたの環境に合わせて書き換えてください。

このコマンドを実行すると、Fabricは指定されたサーバにSSHで接続し、uptimeコマンドを実行して、その結果を表示します。

fabfile.pyの解説

  • from fabric.api import *: FabricのAPIをインポートします。env変数やrun関数などが使用できるようになります。
  • env.hosts = ['your_user@your_server_ip']: 接続するサーバの情報を設定します。ユーザ名とIPアドレスまたはホスト名を指定します。
  • env.password = 'your_password': SSH接続のパスワードを設定します。SSHキーを使用する場合は、この行は不要です。
  • def uptime():: uptimeという名前のタスクを定義します。
  • run('uptime'): リモートサーバでuptimeコマンドを実行します。run関数は、リモートサーバでコマンドを実行するための関数です。

SSHキー認証

パスワード認証よりも安全なSSHキー認証を使用することを強く推奨します。SSHキー認証を使用するには、まず、自分のローカルマシンで公開鍵と秘密鍵のペアを作成します。

ssh-keygen -t rsa

作成された公開鍵(~/.ssh/id_rsa.pubなど)の内容を、リモートサーバの~/.ssh/authorized_keysファイルに追記します。

FabricでSSHキーを使用するには、env.passwordの代わりに、env.key_filenameに秘密鍵のパスを指定します。

from fabric.api import *

env.hosts = ['your_user@your_server_ip']
env.key_filename = '~/.ssh/id_rsa'

def uptime():
    run('uptime')

さらに深く

Fabricには、他にも多くの機能があります。

  • sudo: 管理者権限でコマンドを実行します。
  • get / put: リモートサーバとローカルマシン間でファイルを転送します。
  • cd: リモートサーバのディレクトリを変更します。
  • settings: 環境変数を一時的に変更します。
  • parallel: 複数のサーバに対して並列にタスクを実行します。

これらの機能を組み合わせることで、より複雑なタスクを自動化することができます。

まとめ

Fabricは、リモートサーバの操作を自動化するための強力なツールです。この記事では、Fabricの基本的な使い方を紹介しましたが、Fabricにはさらに多くの機能があります。ぜひFabricを使って、サーバ管理の効率化を目指してみてください。



< ELK Stack
コラム一覧に戻る
Netmiko >

レッスン概要

◯月額4,000円で質問し放題!!
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!