Fabricで簡素化するというGYOMUハック

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 をリクエストする
    • 集計処理を行う
    • ・・・などなど

ジョブ管理ツールと同居させて簡素化を

JenkinsRundeck などの ジョブ管理ツールを搭載したサーバーに同居させると、それらのGUIから整備した fab コマンドを実行することができます。

これにより、Jenkins や Rundeck の Web UI にログインあるいはアクセスできる誰でも、ボタンを押下する程度の操作で、定義された処理を実行できて、誰がいつ何をしたのかを管理することもできます。
処理終了・失敗したときの通知なども、仕込むことができます。

こうして、大いに業務を簡素化できるであろうと思うし、これは1年ほど前まで自分の得意技でありました。

さいごに

時間の都合で、実践例を何も書けずに公開しちゃうのですが、後日、インストールからコマンドの実装、とある簡素化の実現例までを何か公開できればなあ、と思っております。 :bowing_man:
しばらく、お待ち下さい。。(遅くとも、年内には。。)

こういうこと、できますか?などをコメントでいただけたりすると、ありがたいです。

Appendix

Note

[^1]: 日本語の概要とチュートリアルは -> https://fabric-ja.readthedocs.io/ja/latest/tutorial.html (少し古いようなのでご注意を)