こもだ avatar

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

kmdryo

Published: 25 Jun 2020 › Updated: 25 Jun 2020【分かりやすく解説】infrastructure as code(IaC)を実現するツール

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


 

[chat face="business_woman3_1_question.png" name="Aさん" align="left" border="red" bg="red" style=""]infrastructure as codeをやってみたいけど、どのツールを使えばいいのだろう?[/chat]

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

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

https://komodblog.com/iac/

 

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


alt

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)


alt

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

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

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

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

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

https://komodblog.com/aws-begineer-books/

Azure Resource Manager(Microsoft Azure)


alt

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)


alt

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


alt

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

特徴としては、

  • エージェントレスのプッシュ型
  • 冪等性が保証されている
  • 再利用性が高い
などが挙げられます。

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

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

[chat face="business_man1_4_laugh.png" name="Bさん" align="left" border="blue" bg="blue" style=""]万能なツールなんだね[/chat]

[jin_icon_check color="#e9546b" size="18px"]こんな人におすすめ

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

Terraform

alt

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

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

特徴としては、

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

[chat face="businessman_dekiru_woman.png" name="Aさん" align="left" border="red" bg="red" style=""]クラウドを使うときはTerraformがいいんだね[/chat]

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

[jin_icon_check color="#e9546b" size="18px"]こんな人におすすめ

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

Chef

alt

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

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

特徴としては、

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

[jin_icon_check color="#e9546b" size="18px"]こんな人におすすめ

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

Puppet

alt

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

特徴としては、

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

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

[jin_icon_check color="#e9546b" size="18px"]こんな人におすすめ

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

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

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

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

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

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

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


Posted from my blog with SteemPress : http://komodblog.com/iac-tools/

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

Written by

Hello, I live in Tokyo.I will post in various ways from now on.

Read more #ansible posts


Best Posts From こもだ

We have not curated any of kmdryo's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From こもだ