infrastructure as codeの基礎

【分かりやすく解説】infrastructure as code(IaC)を実現するツール

 

Aさん
Aさん
infrastructure as codeをやってみたいけど、どのツールを使えばいいのだろう?

 

今回はinfrastructure as code(通称:IaC)を実現するためのツールを紹介していきます。infrastructure as codeでシステムインフラの構築や管理を楽にしたい!という方はぜひ最後まで読んでみてください。

infrastructure as code(IaC)について知らない方はこちらで解説しています。

【今さら聞けない】Infrastructure as codeとは?【分かりやすく解説】クラウドの利用が主流になっている今、Infrastructure as code(通称IaC)は理解しておかなければならないことの一つで...

 

infrastructure as code(IaC)を実現するツールとは

infrastructure as code(IaC)を実現するツールには、パブリッククラウドベンダー用のものとサードパーティ製のものの大きく2つがあります。

 

パブリッククラウドベンダー用のものというのは、そのパブリッククラウド上のリソースのみをコードとして定義できるものになります。

例えば、

  • AWS CloudFormation(Amazon Web Service)
  • Azure Resource Manager(Microsoft Azure)
  • Cloud Deployment Manager(Google Cloud Platform)

などです。

 

サードパーティ製のものは、特定のベンダーに依存しないで、様々なリソースをコードとして定義できるものになります。

具体的な例でいうと、

  • Ansible
  • Terraform
  • Chef
  • Puppet

などです。

今回はここで挙げたものについて、次の項からご紹介・解説していきます。

 

パブリッククラウドベンダー用のinfrastructure as code(IaC)ツール

AWS CloudFormation(Amazon Web Service)

AWS CloudFormationは、AWSサービスの一つです。

AWS環境の構築・管理する際に、リソースの設定やプロビジョニングをコード化したテンプレートを作成できます。

AWS CloudFormationテンプレートは、jsonもしくはyamlで記載します。

利用料金は無料ですが、AWS CloudFormationで定義したAWSリソース(EC2やS3など)を利用する際は、それに応じた料金が必要です。

AWSを利用している人は、AWS CloudFormationでAWSリソース管理が簡単になるので、使いこなせるようになりましょう。

【2020年版】AWS初心者におすすめの入門書5選システムのクラウド化が進む中で、パブリッククラウドのシェアNo.1であるAmazon Web Services(以下 AWS)は、クラウ...

Azure Resource Manager(Microsoft Azure)

Azure Resource Managerは、Azureサービスの一つです。

Azureではリソースグループという概念が、様々なリソース(VMやストレージなど)を作成する前提となります。そのリソースグループを管理できるのがAzure Resource Managerです。

コード化されたテンプレートは、ARMテンプレートと呼ばれ、JSON形式で記載されています。

AWS CloudFormationと同様に利用料金は無料ですが、Azure Resource Managerで定義したAzureリソースを利用する際は、それに応じた料金が必要です。

Azureを利用している方は、Azure Resource Managerを使いこなして、リソースグループの管理を楽にしましょう!

Cloud Deployment Manager(Google Cloud Platform)

Cloud Deployment Manageは、Google Cloud Platform(通称:GCP)のサービスの一つです。

GCP上のリソースのデプロイやセットアップなどをテンプレートを使って定義することができます。

テンプレートの記述フォーマットは、yaml、jinja、Pythonになります。

上の2つと同様に利用料金は無料ですが、Cloud Deployment Manageで定義したGCPリソースを利用する際は、それに応じた料金が必要です。

GCPを利用している方は、Cloud Deployment Managerを使いこなせることをお勧めします。

 

サードパーティ製のinfrastructure as code(IaC)ツール

Ansible

Ansibleは、RedHat社が提供し、オープンソースコミュニティによって開発が進められている構成管理ツールです。ChefやPuppetなどの構成管理ツールよりも後発のソフトウェアです。

特徴としては、

  • エージェントレスのプッシュ型
  • 冪等性が保証されている
  • 再利用性が高い

などが挙げられます。

Playbookというymal形式で記述されたものを読み込ませて様々な処理を行います。

OS、ミドルウェア、ソフトウェア、ネットワーク機器など様々なものに対応しているため、Ansible一つでシステムのほぼすべてを網羅的にコード化できます。

 

Bさん
Bさん
万能なツールなんだね

 

こんな人におすすめ

  • yaml形式のファイルが読める人
  • 様々な製品やシステムを自動化したい人
  • 対象機器や製品にエージェントを入れたくない・入れられない人

 

Terraform

Terraformは、Hashicorp社によるオープンソースプロダクトで、システムインフラ用のプロビジョニングツールです。

Ansibleは構成管理がメインでパッケージのインストールやアプリケーションのデプロイが得意なのに対し、Terraformはクラウドオーケストレーションとしてクラウドリソースの管理に優れています。

特徴としては、

  • マルチクラウド(AWS、Azure、GCPなど)に対応
  • 様々な仮想化技術製品(Openstack、vmware)に対応

 

Aさん
Aさん
クラウドを使うときはTerraformがいいんだね

 

定義ファイルはjson形式のものとTerraform独自の構成言語を使用して記述します。

 

こんな人におすすめ

  • jsonが読める人
  • パブリッククラウドや仮想化技術製品を使う人

 

Chef

Chefとは、Chef Softwareを中心に開発されている構成管理ツールの一つです。

アプリケーション、ミドルウェア、コンポーネントなどのソフトウェアインストールを自動化することができます。

特徴としては、

  • マスターサーバとエージェントサーバで動作する(プル型)
  • Rubyで実装されており、定義ファイルであるCookbookもRubyで記述する
  • 長年に渡り、様々な企業で使用された実績がある(FacebookやGREEなど)

難点としては、定義ファイルであるCookbookがAnsibleのPlaybookよりもやや複雑というところです。

 

こんな人におすすめ

  • エージェントから自動的に構成管理を行わせる仕組みにしたい人
  • Rubyが書ける、読める人
  • 実績のあるツールを導入したい人

 

Puppet

Puppetとは、オープンソースの構成管理ツールです。UNIX系のOS(LinuxやUbuntuなど)、「Windows」をサポートしており、これまで紹介したものと同様システムインフラの構築・管理を自動化します。

特徴としては、

  • マスターサーバとエージェントサーバで動作する(プル型)
  • Rubyで実装されている
  • Chefと同様、長年に渡り様々な企業で使用された実績がある
  • 使いやすいGUI
  • インストールが簡単

などが挙げられます。

システムインフラの構成情報(ソースコード)を「マニュフェスト」と呼び、そこにRuby型DSL(固有言語)で定義します。なので、Rubyが分からない人は学習コストがかかります。

 

こんな人におすすめ

  • エージェントから自動的に構成管理を行わせる仕組みにしたい人
  • Rubyが書ける、読める人
  • 実績のあるツールを導入したい人
  • GUIで操作したい

 

infrastructure as code(IaC)を実現するツール:まとめ

いかかでしたでしょうか。

今回はinfrastructure as code(IaC)を実現するためのツールを紹介しました。個人的には、クラウドが主流になりつつあり、それにともないサードパーティ製のツールはAnsibleとTerraformが主流になっている気がします。

また、パブリッククラウドベンダー用のツールは必須のものなので、今から学習することをおすすめします。

infrastructure as code(IaC)を実現することで、今まで手作業で行っていたものが自動化できるので、その浮いた時間を有効活用していきましょう。

最後まで読んでいただきありがとうございました。