Fabricで簡素化するというGYOMUハック
published_at: 2019-12-13 02:31
2019/12/12
by @sogaoh
はじめに
現在の時刻は 12月12日 25:30 です。
この記事は GYOMUハック/業務ハック Advent Calendar 12日目のエントリです。
Fabric というツールをご存知でしょうか? [1]
検索するだけだと同名の複数のものが Hitしてしまうのですが、自分が今回紹介したいのは
- コマンドライン 経由で 任意の Python 関数 を実行
- SSH経由で 簡単に かつ Python風に シェルコマンドを実行
この、Fabricです。
Fabricで何ができるか?
以下のようなことを実行するコマンドを整備することができます。
- リモートサーバーでコマンドを実行させる
- DBサーバーで SELECT SQL を実行して抽出結果をCSV出力
- アプリケーションサーバーでサービスをメンテナンスモードにする/解除する
- 最新のソースコードを取得してさらにリモートサーバーに転送する(いわゆる、デプロイ)
- ・・・などなど
- Python関数を実行して
- 外部の Web API をリクエストする
- 集計処理を行う
- ・・・などなど
ジョブ管理ツールと同居させて簡素化を
Jenkins や Rundeck などの ジョブ管理ツールを搭載したサーバーに同居させると、それらのGUIから整備した fab コマンドを実行することができます。
これにより、Jenkins や Rundeck の Web UI にログインあるいはアクセスできる誰でも、ボタンを押下する程度の操作で、定義された処理を実行できて、誰がいつ何をしたのかを管理することもできます。
処理終了・失敗したときの通知なども、仕込むことができます。
こうして、大いに業務を簡素化できるであろうと思うし、これは1年ほど前まで自分の得意技でありました。
さいごに
時間の都合で、実践例を何も書けずに公開しちゃうのですが、後日、インストールからコマンドの実装、とある簡素化の実現例までを何か公開できればなあ、と思っております。 :bowing_man:
しばらく、お待ち下さい。。(遅くとも、年内には。。)
こういうこと、できますか?などをコメントでいただけたりすると、ありがたいです。
Appendix
- fabric2のインストール手順と簡単な使い方 - Qiita
- Pythonタスクランナー Fabric 2 の紹介 - 前編 Fabricの概要 - (from インフラエンジニアway - Powered by HEARTBEATS)
- Pythonタスクランナー Fabric 2 の紹介 - 後編 Fabricの使い方 - (from インフラエンジニアway - Powered by HEARTBEATS)
Note
-
日本語の概要とチュートリアルは -> https://fabric-ja.readthedocs.io/ja/latest/tutorial.html (少し古いようなのでご注意を) ↩︎
Discussion