BLOGAzureブログ
Infrastructure as Code(IaC)を実現し、効率的なインフラ管理を目指す!せっかくならAzureのリソースはコード管理がおススメ
Azure相談センターSB C&Sは、Microsoft Azureを推奨します。
Infrastructure as Code(IaC)を実現し、効率的なインフラ管理を目指す!せっかくならAzureのリソースはコード管理がおススメ
皆さまこんにちは、SB C&Sの八釼です。
日々変化の激しいビジネス環境に身を置くことになった昨今、システムインフラについても柔軟かつ迅速に対応できることが大変重要になってきています。そんな中、ITインフラを効率的に運用・保守する上で欠かせない考え方や手法であるInfrastructure as Code(IaC)はもはや見過ごすことはできません。世界有数のリサーチ&アドバイザリ企業であるGartner社のプレスリリース 「Gartner、2022年に向けて日本企業が注目すべきクラウド・コンピューティングのトレンドを発表」 においても、言及されています。
とくにクラウドの世界では、どのようなリソースでも直接触ることはできない抽象化されたものです。サーバー、ネットワーク、ストレージなどのITリソースを構築したり、管理する上でIaCは相性が良いのです。
そこで今回は、既にクラウドでシステム運用をされている方にも、これからの方にもぜひ取り組んでいただきたい、Microsoft AzureでIaCを実現する方法やメリットをご紹介します。
簡単に言ってしまうと、「インフラ構成や管理をコードで行うこと」です。プロビジョニングの自動化や構成管理のためにコード化します。プログラマーがソースコードにプログラムを記述するように、各種リソースの設定情報などをテキスト形式で記述します。ここで作成したテンプレートファイルの記述内容に従って、自動で環境が再現(構築)されることになります。一見すると単純に構築作業の自動化のようですが、単にスクリプトを書くだけでなくバージョン管理やテストもその要素に含まれます。
コードで行わない場合、つまりIaCでなく従来の手法の場合には、人の手で行うことになります。インフラ環境の設計書、パラメーターシート、構築手順書などを作成し、それに基づき、必要なソフトウェアのインストールや各種設定を人間が行っていくのです。人間の注意力や作業の再現性、コミュニケーションには残念ながら不確実性があるので、設計書やパラメーターシートの値と実際に設定されている値に差異が生まれたり、設計の変更が作業者や運用者にうまく伝わらないこともしばしば発生します。
IaCの本質とは、「ITインフラをソフトウェア工学(開発)のアプローチに変えること」と言えます。アプローチを変えることで、主には次の3つのメリットが生まれます。
最初にテンプレートファイルを開発(設計と記述)する必要がありますが、その後のインフラ構築の部分を自動化できるので工数を大幅に削減できます。また、そのテンプレートファイルは設計や設定書の役割も持つため、各種ドキュメントの作成の工数も削減することができます。
構築を人の手を介さず行うことで、人為的なミスが大幅に削減できます。また、テキストファイルであるテンプレートは、バージョン管理システムの対象として相性が良いので、例えばGitと併用することでソースコードのコードレビューを行うように変更管理をしていくことができます。
こういったことから、コード(インフラ)の品質を向上させ、アプリケーションプラットフォームの安定性を向上させることに貢献します。高い変更頻度が求められる現代のシステムにおいては、非常に重要です。
人の手を介さず自動構築を行うことで、冪等性(べきとうせい)が担保されます。
冪等性とは、ある操作を1回行っても複数回行っても結果が同じであるという概念です。つまり、開発したテンプレートファイルを繰り返し使って、何回でも同じインフラ環境を再現することもできます。開発・検証環境に対して作成した実績のあるファイル(コード)は、差異の少ない本番環境を再現するのに大いに役立ちます。
もしくは別システムのための環境が必要になった場合に、設定情報を少し変えて類似の環境も簡単に作ることができます。一度仕組みを作ってしまえば、他のプロジェクトに横展開できる可能性が広がるのです。
例えば、SIerであれば予めいくつかのテンプレートファイルを開発(作成)しておきプロジェクトごとにカスタマイズして使用すれば、インフラ設計や構築を簡素化し高い品質で顧客に対する納品までのリードタイムの短縮が可能になります。
では、Azureのリソースをデプロイするためのコード化(テンプレートファイル作成)はどのようにすれば良いでしょうか?実現するツールとしては、3rd partyもしくは純正のものを使うという大きく二つの選択肢があります。
3rd partyのもので現在エンジニアにとても人気のあるツールとしては、HashiCorp社が提供するTerraformです。管理できるクラウドプラットフォームはAzureに限定されないので、すでにAWSやGCPなどのクラウドに対してTerraformを使用されている場合にはAzureでも同様に用いて、コンピュータやネットワークの構築を自動化するのが良いかもしれません。
一方、純正ツールとしては、Azure Resource Manager (ARM)というリソースの作成と管理、アクセス制御を行うサービスがあります。ARMが提供する機能の一つにARM テンプレートという、リソースのデプロイ手順を記述したテキスト形式(JSON)のテンプレートファイルがあり、このファイルを元に、システムインフラ環境を一気にデプロイすることができます。テキストエディタを使ってこのテンプレートファイルを作成し、Azureポータルもしくはコマンドラインツールを用いてデプロイが可能です。純正であるがゆえに、Azure の新サービスなどがリリースされた場合でもそれに対する対応が早いです。
一から開発(コードを記述)するのが大変な場合やどういった挙動になるか確認したい場合には、まずは公開されているサンプル(Azure クイック スタート テンプレート)をダウンロードしてそのまま使うかカスタマイズしてみるのが良いかもしれません。
もしくはAzureでは既存のリソース(もしくはリソースグループ)からARMテンプレートをエクスポートする機能が備わっています。既存リソースを複製したい場合や参考にしたい場合などに、この機能を使ってみるのも良いかもしれません。
ちなみに、ARM テンプレートファイルは、どのようなテキストエディタでも作成できますが、最低限JSON形式が記述しやすいものを選ぶことをお勧めします。その中でも強いこだわりがない場合には、Microsoft社自身も利用を推奨しITエンジニアにも人気の高いVisual Studio Codeがお勧めです。Azure Resource Manager向けの拡張機能が用意されており、オートコンプリートや構文チェックなどが提供されるだけでなく、ウィンドウ内のターミナルからコマンドラインにてデプロイを実行することもできます。
今回はざっくりとしたIaCの世界をご紹介しましたが、これからもどんどんとアプリとインフラの境界線は曖昧になっていきます。SRE(Site Reliability Engineering)に取り組む企業や組織もどんどんと増えてきており、その役割を担うエンジニアはこの境界線に縛られない存在です。アプリケーションエンジニアもインフラのコードを書き、インフラエンジニアもアプリケーションのコードを書く、そんな時代になりつつあります。
DXを支えDX構築のためには必須とも言えるIaC、まずはAzure の世界においてARM(テンプレート)を使って実現してみてはいかがでしょうか?もしお困りごとが出てきた場合には、ARM(テンプレート)を含め法人でのAzure 導入前の相談窓口であるAzure相談センターまでぜひお気軽にお問い合わせください。
Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください
SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。
「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。
クラウドサーバーご検討中の方必見
お役立ち資料一覧
そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。
オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。
導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。