Repolode
pyinfra-dev

pyinfra-dev/pyinfra

Pythonで定義した操作やシェルコマンドを、SSHサーバー、ローカルマシン、Dockerコンテナで実行するインフラ自動化ツール。

代替できる製品:Ansible

スター
6,044
フォーク
558
未解決の Issue
166
最終コミット
7 日前

これは何?

pyinfraは、YAMLではなくPythonでサーバー設定やデプロイのロジックを記述できるインフラ自動化ツールです。複数のホストでシェルコマンドを一度だけ実行したり、パッケージのインストールやファイル管理などの宣言的な操作を定義したりできます。pyinfraはこれらをシェルコマンドに変換し、対象マシンで実行します。

対象には、SSHで接続するリモートサーバー、ローカルマシン、Dockerコンテナを指定できます。操作は冪等性があり、適用前に差分やドライランで変更内容を確認できます。デバッグ用に、詳細度フラグを指定して標準入力・標準出力・標準エラーの内容をリアルタイムで確認できます。

通常のPythonコードなので、デプロイスクリプト内でPythonの豊富なパッケージエコシステムを利用できます。エージェントレスで、対象マシンに必要なのはシェルアクセスだけです。また、Docker、Terraform、Vagrant用のコネクターも備えています。

主な機能

  • 01YAMLではなくPythonコードでデプロイのロジックを記述できます。
  • 02SSHホスト、ローカルマシン、Dockerコンテナで、アドホックなコマンドや宣言的な操作を実行できます。
  • 03冪等性のある操作により、変更を適用する前に差分やドライランを確認できます。
  • 04コマンドの出力をリアルタイムで確認できるため、失敗したステップのデバッグに役立ちます。
  • 05エージェントレスで、対象マシンに必要なのはシェルアクセスだけです。
  • 06Docker、Terraform、Vagrantのインベントリー用コネクターを利用できます。

ユースケース

  • 単一のPythonコードベースから、複数のサーバーの設定やデプロイを行う。
  • 複数のホストで同じシェルコマンドを一斉に実行する。
  • 本番環境に変更を加える前に、ローカルのDockerコンテナでサーバー設定をテストする。
  • YAMLではなくPythonを使って、Ansible風の自動化を行いたいチーム。

クイックスタート

  1. 1

    uvでpyinfraをインストールする

    uv tool install pyinfra
  2. 2

    SSHサーバーでコマンドを実行する

    pyinfra my-server.net exec -- echo "hello world"
  3. 3

    Dockerコンテナ内でコマンドを実行する

    pyinfra @docker/ubuntu exec -- echo "Hello world"

トピック

よくある質問

pyinfra とは?
Pythonで定義した操作やシェルコマンドを、SSHサーバー、ローカルマシン、Dockerコンテナで実行するインフラ自動化ツール。 pyinfraは、YAMLではなくPythonでサーバー設定やデプロイのロジックを記述できるインフラ自動化ツールです。複数のホストでシェルコマンドを一度だけ実行したり、パッケージのインストールやファイル管理などの宣言的な操作を定義したりできます。pyinfraはこれらをシェルコマンドに変換し、対象マシンで実行します。
pyinfra は無料で使えますか?ライセンスは?
pyinfra は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
pyinfra は今もメンテナンスされていますか?
活発にメンテナンス中。pyinfra の最終コミットは 2026年10月15日 です。
pyinfra は何に使えますか?
単一のPythonコードベースから、複数のサーバーの設定やデプロイを行う。 複数のホストで同じシェルコマンドを一斉に実行する。 本番環境に変更を加える前に、ローカルのDockerコンテナでサーバー設定をテストする。 YAMLではなくPythonを使って、Ansible風の自動化を行いたいチーム。
pyinfra のインストール方法は?
uvでpyinfraをインストールする: uv tool install pyinfra SSHサーバーでコマンドを実行する: pyinfra my-server.net exec -- echo "hello world" Dockerコンテナ内でコマンドを実行する: pyinfra @docker/ubuntu exec -- echo "Hello world"
pyinfra はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/pyinfra-dev/pyinfra

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト