Pythonを禁止されたインフラエンジニアのたった1つの冴えたやり方

はい、釣りタイトルです。Python Advent Calendar 2013 の9日目は@usaturnがお送りします。
UNIX/Linux環境が自由に使えずWindowsクライアントでインフラ運用する場合、Cygwin環境でPython動かすのは結構便利だよ、というお話です。

さて、私はかつてアウトソーシング系の会社に勤めており、色々な現場へ行き色々な経験をさせて頂きましたが、ある時、厳しい現場にあたり非常に困った事がありました。

困った事・・・それは「ほとんどのフリーウェア/OSSを使わせてもらえない」という事(その時の顛末はこちらに https://yukar.in/note/ckFj5Y )。
そもそもインターネットアクセスすら許されないような現場もあるので、私の場合はまだ良かったのかもしれませんが、上記のような時に役に立つ(かもしれない)のがCygwinです。

つまりWindowsネイティブのPythonを許可されなくても、Cygwinが許可されればPythonだってなんだって入ってるじゃない!
という主張なのですが、そんなシーンがそうそうあるのかは疑問です。

Cygwinの便利な点

まあまあ、そんな目で見ないで聞いてやってください。

インターフェースについて考える必要が無い

仮想環境のインターフェースだとブリッジでIPアドレスを使ってしまったりNATでハマったりする所ですが、CygwinWindows上で動くのでなんの問題もありません!

Windows上のツールと連携できる

UNIX/Linuxのコマンドが使えるという事は言うに及ばず、Windows上で手軽にシェルスクリプトを書いて動かせますし、ファイラでディレクトリ移動した所をカレントにしてターミナル(mintty等)を開いたり、逆にシェルからcygstartでExcel方眼紙を開く事だってできます!

ビルド環境を整えるのが楽

Pythonの拡張パッケージには、pycryptoやPILのようにインストール時、Cのソースをコンパイルするパッケージがあります。
Windowsの場合はVC++再頒布可能パッケージを探してきてインストールする必要があり結構面倒ですが、Cygwinならgccを入れるのは簡単です。むしろ初めから入れてるでしょう!

Pythonを知らなくても使えるツール達

Pythonのパッケージ管理ツール(setuptools,pip)を使って簡単にインストールできる上にPythonコードを書かずに使える便利なツールがあります。

Sphinx

最早語るまでも無いドキュメンテーションツール。

Mercurial

Gitに押されがちですが、Gitよりも学習コストが低いバージョン管理ツール

Ansible

まだchefやpuppetの影に隠れてますが、こちらも学習コストが圧倒的に低い、サーバ等の構成管理ツール。

pssh,tomahawk

機能的にはTeraTermProのブロードキャストコマンドに近い物があります。複数サーバへのssh同時実行ツール。

Pythonを書ければもっと便利に!

標準モジュール

Pythonの文法をちょっと覚えれば、充実した標準モジュールを使って作業の自動化ができてしまいます。
socketモジュールで名前解決のチェック、httplibモジュール等でWebやProxyのチェック、smtplibでSMTPのチェックやメール送信などなど。

Fabric

拡張モジュールならFabricを使い、ssh越しにできる作業はなんでも自動化可能。TeraTermマクロでやっていた事、あるいはできなかった事でもFabricならスマートに実行できます。
スクリプト内でのコマンド実行、返り値の取得、ファイル転送まで全てがシームレスに実行可能。
「超強力なリモートで実行できるシェルスクリプト+α」、それがFabricです。

最後に

Cygwin推しな点を述べてきましたが、VirtualBoxなりVmwareServerなりを使わせてもらえるなら素直にCentOSUbuntuを入れた方が幸せになれると思います。Cygwinは動作が重い上に色々やろうとするとハマる事が・・・
しかも「Cygwin環境でPython動かすのは結構便利だよ」というお話をするつもりでしたが、よく考えたらビルド環境を整えるのが楽、という事以外にPython関連で便利な事って無かったですね (∀`*ゞ)テヘッ
タイトルも「インフラエンジニアに勧める言語はPythonで決まりだね!」くらいにしたほうが良かったでしょうか。

さて、明日はtwitterでのゆるふわ顔文字キャラで定評のある [twitter:@aodag] さんです。