Infrastructure as Codeという言葉はここ数年とても注目されています。読者のみなさんも一度は目にしたことがあるのではないでしょうか。
Infrastructure as Codeは、サーバの環境構築やデプロイを行う際に用いる手順書をコードに落とし込み、そのコードに対応したツールを使って自動的に実行するしくみです。手順書をコードにすることによって、Gitなどのバージョン管理システムを利用して差分管理が可能になりますし、GitHubやBitbucketなどを利用して、サービス開発と同じPull Requestベースでサービスのインフラを構築できます。
今回は、Perlを利用してInfrastructure as Codeを実現する際に有用なモジュールと、その使い方について解説します。
Perlを使う意味
PerlでInfrastructure as Codeを実現するメリットは、Perlという使い慣れた道具でInfrastructure as Codeを構築できることです。
Infrastructure as Codeを実現するツールはたくさん公開されていますが、それぞれのツール特有の記法や、場合によってはプログラミング言語の知識を習得しなければなりません。たとえばChefやCapistrano、Serverspecを利用するのであれば、Rubyの知識が必要となるでしょう。しかしPerlを使ってサービスを実装しているのであれば、Infrastructure as CodeにもPerlを利用することによって学習コストを低減できます。
Infrastructure as Codeを実現するにあたっては、チームメンバー全員がコードをコントロールでき、サービスそのものやサービスに必要なインフラの変化に追随していかなければなりません。チームメンバーがPerlという使い慣れた道具を持っているのであれば、それを有効に活用して高速に実装することは重要です。
PerlでInfrastructure as Codeを実現する場合、オペレーション単位でスクリプトを用意し、そのスクリプトを実行することでオペレーションを実施するのが一般的です。ただ、スクリプトが増えると、どのスクリプトがどのオペレーションに対応するかわからなくなることが多々あります。そんなときは、Daikuを使ってオペレーションを呼び出すようにすると非常にすっきりします。