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

in #ansible4 years ago


 

[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)を実現するツールとは



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リソース管理が簡単になるので、使いこなせるようになりましょう。

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

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一つでシステムのほぼすべてを網羅的にコード化できます。

 

[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


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


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

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

特徴としては、

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

 

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

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

Puppet


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/

Sort:  

Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://komodblog.com/iac-tools/