今回は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リソース管理が簡単になるので、使いこなせるようになりましょう。
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一つでシステムのほぼすべてを網羅的にコード化できます。
こんな人におすすめ
- yaml形式のファイルが読める人
- 様々な製品やシステムを自動化したい人
- 対象機器や製品にエージェントを入れたくない・入れられない人
Terraform
Terraformは、Hashicorp社によるオープンソースプロダクトで、システムインフラ用のプロビジョニングツールです。
Ansibleは構成管理がメインでパッケージのインストールやアプリケーションのデプロイが得意なのに対し、Terraformはクラウドオーケストレーションとしてクラウドリソースの管理に優れています。
特徴としては、
- マルチクラウド(AWS、Azure、GCPなど)に対応
- 様々な仮想化技術製品(Openstack、vmware)に対応
定義ファイルは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)を実現することで、今まで手作業で行っていたものが自動化できるので、その浮いた時間を有効活用していきましょう。
最後まで読んでいただきありがとうございました。