3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IaC関連ツールまとめ

Last updated at Posted at 2020-05-11

背景

広い意味でのIaC(Infrastructure as Code)って本当に色々ある。

Ansible/Terraform/Cloudformation/Helm/Kubernetesなど、
横並びにするにはレベル感もごちゃごちゃだし、どういう使い分けするの?

というふとした疑問からIaC関連ツールの全体像と関係性まとめてみた。

3つのレイヤに分けてみる

コンテナの隆盛がIaCの定義を広げたのと、CI/CDも、Jenkins2.0からJenkinsfileが出来てIaCの仲間入りした感がある。

  1. IaaSレイヤ(狭義のIaC)
  2. コンテナレイヤ
  3. CI/CDレイヤ

1つ目のレイヤ: IaaSレイヤ(狭義のIaC)

歴史と概要

ChefとPuppetの2つを覚えておけばOK。と思っていたら、時代が随分と進んできて、Ansibleではエージェントレスになったり、随分と便利になったなと。

Puppet(2005) -> Chef(2009) -> Ansible(2012) -> Terraform(2014)
https://employment.en-japan.com/engineerhub/entry/2019/04/12/103000

代表例1:Ansible

エージェントレスのIaCツール

漫画でわかるRed Hat Ansible Automation

代表例2:Terraform

10分で理解するTerraform

インフラストラクチャ定義ツール に分類されるツールで、クラウド上のリソースを定義ファイルの状態になるように生成・操作してくれます

Infrastructure as Codeに疲れたので、僕たちが本来やりたかったことを整理する

Terraform Registry

誰かが作ったmoduleを再利用できる

代表例3:AWSやOpenStack用のツール

個別ツール専用のIaCもかなり流行ってきている。

  • CloudFormation:AWSの構築自動化
  • OpensStack Heat: OpenStackの構築自動化

2つ目のレイヤ: コンテナレイヤ

このレイヤは更に3層に分けます。やっぱりオーケストレーションのオーケストレーションが出て来たのがポイントかなと。

2-1 コンテナ/仮想

  • Docker
  • VMWare

2-2 コンテナオーケストレーション(仮想含む)

  • Docker Compose
  • Kubernetes(EKS/IKS/GKE)
  • ECS
  • Vagrant

2-3 コンテナオーケストレーションのオーケストレーション

  • Helm

Helm

Kubernetes上のアプリケーションを一括管理する仕組み。yumやaptなどのパッケージ管理ツールのようなもの

helmを使ってKubernetesを楽にする

KubernetesでつらいYAML地獄を脱却するYAML生成ツール

3つ目のレイヤ: CI/CDレイヤ

Jenkinsを覚えておけばOKという時代は終わったなと。まずはビルドフローをYAMLで書くっていうイメージを持っておく感じ。

Kubernetes系

Kubernetes前提のCI/CDフレームワーク

代表例1:Tekton

「Tekton」は、KubernetesネイティブなCI/CDツールです。KubernetesのCRD(Custom Resource Definitions)やControllerとして動作し、Kuberentes環境にデプロイするアプリケーションとの相性が良いのが特徴です。元々サーバレスツールである「Knative」のbuild-pipelineとして開発されていましたが、その後Cloud Delivery Foundation(CDF)のツールの一つとなっています。

代表例2:ArgoCD

「Kubernetes Native」なGitOpsベースのCDツール

  1. Kubernetesに気軽にインストールして使える
  2. Gitリポジトリをサポート
  3. WebのUIとコマンドライン(CLI)を提供
  4. YAMLでデプロイを記述でき、Gitリポジトリで管理できる
  5. KustomizeやHelmと連携可能
  6. 変更検出によるデプロイではなく差分検出によるデプロイ

代表例3:JenkinsX

Not Kubernetes?系

Spinnaker

マルチクラウドCDツール

ビルドパイプライン

StepFunctions

その他

  • SCCM
    • クライアント系ツールの配布

まとめ(ここまで書いておきながら逆のことを言う、、、)

というか、所感だけど、この手のツールってレイヤ分けしたとしても、相互のレイヤに機能追加で染み出してきている。
レイヤ分けはあくまで源流や得意レイヤがどこかという程度にすぎない。

なので、どれ使えばいいの?っていうのは個別具体の事例を参考に、自分に合っていると思うものを選ぶべきかなと。
あとは、自分が使ってみたい!って思えるツールと心中するのがいいかな。
ツールがいけてなくても、ツールへの愛情があれば努力と根性で何とかなる(はず)。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?