Microsoft の世界で DevOps 自動化をしたいことはないだろうか?Microsoft の世界における自動化の多くは、Microsoft プロダクトスタックのサポートが遅い著名なオープンソースの利用でなく、PowerShell や System Center といった Microsoft の提供するツールを利用することを意図する。このことは開発者や管理者にとって変わり始めており、Windows Azure におけるリソースに対して Puppet 等のツールを利用してプロビジョニングや管理を行うことができる。
オープンソースに注力する Microsoft 子会社である Microsoft Open Technologies (MS Open Tech) が Puppet module and command line interface をリリースした。同ツールを利用することで、ユーザは仮想マシン、仮想ネットワーク、データベースのプロビジョニングと管理ができる。更に、同ツールは 1,800以上のコミュニティ定義 Puppet Configurations を Windows Azure 上で利用できるという門戸を開いたことになる。なぜ彼らはこのツールを作成したかについては 本ツールのリリースに関するブログ投稿 に観点が記載されている。
MS Open Tech は、著名な DevOps ツールを跨いだ相互運用性の向上に注力して本ツール作成に着手してきた。DevOps はソフトウェア開発とITオペレーション間の相互管理に着目している。アジャイルソフトウェア開発チーム(急激な変更が必要)と稼働時間を最大化したいオペレーションチーム(信頼性への影響があると思われる)のコラボレーションと統合を強化している。DevOps は両チームが更に協力し合える方法を探っている。Windows Azure に関する Puppet Module の貢献は、Puppet ユーザが Windows Azure 環境で自身のスキルを活用可能とするための重要な一歩だ。
本 Puppet モジュールは Windows と Linux 両方の仮想マシンをサポートしており、CLI は作成, 削除, 一覧, 停止, 開始の処理を伴っている。更に、CLI を利用した 仮想ネットワークとSQL databasesについての作成と構成が可能だ。1, 900近いコミュニティが作成した Puppet のマニフェストにアクセス可能なことで、IIS サーバの設定, Windows のレジストリ構成, Linux 上でのNGINXの設定 等の操作を仮想マシンに適用させることができる。
Puppet は 2011 年にリリースされた 2.7.6 から Windows をサポートしている。システムの状態を表すモデル駆動のマニフェストを登録した Puppet Master は Linux 上で動作する必要があるが、Puppet エージェントがホストされるサーバやワークステーションは Linux と Windows どちらでも動作させることができる。Puppet の Master/Agent モードでは Puppet エージェントが Puppet Master からマニフェストを取得し、インスタンスの状態を設定した通りに変更させる。Puppet はオープンソースとして利用可能であり、機能が強化された Enterprise バージョンを購入することもできる。オープンソース・エンタープライズの両バージョンで AWS と Google Compute Engine におけるクラウドの仮想マシンをプロビジョニング可能であり、Enterprise Puppet は Windows Azure を含む様々なクラウドで実行させることができる。
Puppet の主要な競合である Chef では、Windows Azure との統合を1年以上を提案してきたが、Windows Azure プラグインは仮想マシンの作成と処理にのみ注力している。これにより、Microsoft 製品の利用者は DevOps 自動化の二つの主要なツールを Windows Server と Windows Azure に利用することが可能になった。Vagrant は開発者とシステム管理者が利用するツールであり、開発環境を素早く構築することができる。Windows 端末で Vagrant を実行することが可能だが、仮想のゲストは Linux OS のみ利用可能だ。Vagrant 1.4 のリリースノートでは、Vagrant 1.5 では Windows もゲストとして利用可能になる旨が記載されているため、Microsoft 主体の開発者はこれら主要なツールとエコシステムの恩恵を受けることができる。