概要
Ansible® と Chef は、コミュニティによるオープンソースの IT 自動化ツールです。どちらも、システムの設定やプロビジョニング、ソフトウェアのデプロイ、多数のサーバーやエンドポイントデバイスのアップデート管理などのルーチンタスクを自動化することで、IT 運用や DevOps 作業を単純化することができます。
Ansible は、自動化するターゲットに追加のソフトウェアをインストールする必要がない、より柔軟なエージェントレス・アプローチを採用しており、使いやすさに定評があります。対照的に、Chef はエージェントベース・アプローチを採用しているため、マシンごとに追加のソフトウェアが必要になります。もう 1 つの重要な違いは、Ansible が、管理者向けで習得が容易な Python ベースの構成言語である YAML を使用することです。一方、Chef は、開発者向けで習得するのが非常に困難なドメイン固有言語 (DSL) である Ruby を使用します。
この記事では、Ansible と Chef の類似点と相違点について詳しく説明します。
一般的なオープンソース自動化ツールのサポート付きバージョン
Ansible と Chef は、自動化ツールの中でどのような位置づけにあるでしょうか。一般的に使用されているオープンソースの IT 自動化ツールには 4 つあり、Ansible、Chef、Salt、Puppet です。それぞれが自動化に対して異なるアプローチを採用しており、いずれもエンタープライズ向けソリューションとして別々のソフトウェア会社から販売されています。多くの IT 部門では、1 つ以上のソリューションを目的に応じて、あるいは組み合わせて使用しています。
- Ansible は 2015 年に Red Hat に買収され、Red Hat® Ansible Automation Platform として提供されています。
- Chef は 2020 年に Progress に買収され、Chef Enterprise Automation Stack などとともに商用製品として提供されています。
- Salt (商用名 SaltStack) は、2020 年に VMWare に買収され、最近 VMware Aria Automation にブランド変更された vRealize Automation ポートフォリオに含まれています。VMware は 2022 年に Broadcom に買収されました。
- Puppet は Perforce でサポートされており、Puppet Enterprise や Puppet Bolt などとともに商用製品として提供されています。
Ansible と Chef の IT 自動化へのアプローチの違い
Ansible
Ansible は、Python で書かれたオープンソースのコマンドライン型 IT 自動化ソフトウェア・アプリケーションです。システムの設定、ソフトウェアのデプロイ、高度なワークフローのオーケストレーションが可能で、アプリケーションのデプロイやシステムのアップデート、ネットワークの構成と運用などをサポートします。Red Hat Ansible Automation Platform は、Ansible を基盤に多数のエンタープライズ機能を搭載したサブスクリプション製品です。
Ansible の強みは、そのコミュニティにあります。メインの GitHub リポジトリには何千人ものコントリビューターが貢献しており、それに依存するリポジトリは 2022 年秋現在で数万にのぼります。毎年行われる Red Hat Summit で AnsibleFest という人気のユーザー・カンファレンスが開催され、Ansible Meetup も世界各地で頻繁に開催されています。豊富な専門知識を持つ熱心なユーザーが集う Ansible コミュニティでは、コントリビューターが Ansible と他の一般的なソフトウェア・プロジェクトとの強固な統合に取り組んでいます。Ansible のユーザーは、機能を拡張するのに役立つ何百ものモジュールやプラグインにアクセスできます。
Ansible は、シンプルさと使いやすさに重点を置いて設計されています。また、安全性と信頼性を重視し、可動パーツを極力少なくしています。トランスポートには OpenSSH を使用 (他のトランスポートやプルモードも選択可能) しているほか、人間が読める言語を使用しており、ユーザーは多くのトレーニングなしに素早く始めることができます。
Ansible は、コントロールノード (Ansible が実行される場所) とマネージドノード (自動化されるデバイス、多くの場合 Linux® または Windows マシン) の概念を使用します。Ansible はエージェントレスのため、マネージドノードにアプリケーションやサービスをインストールすることなく、デバイスと通信することができます。Ansible Automation Platform は、automation mesh と呼ばれるテクノロジーを使用して、実行ノード全体に自動化ジョブを分散させることができます。
Ansible ユーザーは Ansible Playbook (人間が読める YAML で記述されたファイル) を使用して、インフラストラクチャのさまざまな部分を詳細にオーケストレーションできます。Ansible は手続き型 (または命令型) プログラミングのアプローチを使用します。望ましい状態に到達するための手順を定義することで、IT インフラストラクチャの設定を保持しようとします。
Chef
Chef は Ruby DSL で記述されたオープンソース IT 自動化プラットフォームで、インフラストラクチャをコードに変換します。Ansible Playbook と同様、Chef はクックブックおよびレシピ (製品名が Chef となった理由) と呼ばれる再利用可能な定義を使用して、オンプレミス、クラウド、またはハイブリッド環境のいずれにおいても、ネットワーク全体でインフラストラクチャの構成、デプロイ、管理を自動化します。
Ansible とは対照的に、Chef はエージェントベース・アーキテクチャを使用します。Chef サーバーはメインマシン上で実行され、Chef クライアントは各クライアントマシン上でエージェントとして実行されます。さらに、ワークステーションと呼ばれる追加のコンポーネントがあり、これには、テスト後にコマンドなしでメインの Chef サーバーからクライアントマシンにプルされるすべての構成が含まれています。これらのプル構成の管理にはプログラマーの専門知識が必要なため、熟練した DevOps の専門家にとっても、Chef の使用は他の自動化ツールよりも複雑です。
知っておくべき自動化の用語
エージェントベース・アーキテクチャ:Chef が採用しているインフラストラクチャと自動化のモデルで、管理対象の環境でエージェントと呼ばれる特定のソフトウェアを実行する必要があります。エージェントと、エージェントを動作させるための関連ファイルがすべてターゲットノードにインストールされている必要があり、追加のセキュリティチェックとルールを必要とします。これは、エージェントが利用できない、あるいは実行が許可されていないオブジェクトを自動化する際に課題となります。また、エージェントの保守も必要です。
エージェントレス・アーキテクチャ:Ansible が採用しているアーキテクチャで、管理対象環境にエージェント・ソフトウェアをインストールすることなく、IT デバイスを自動化および管理する方法です。コントロール・ソフトウェアを使用して SSH でリモートマシンに接続し、長時間の設定作業なしに管理を開始できます。このアーキテクチャにより、設定が完了すれば、デプロイメント・システムをメンテナンスする必要がなくなります。
構成管理:コンピュータシステム、サーバー、ソフトウェアを、一貫性の取れた望ましい状態に保つプロセスのことを言います。これにより、時間の経過とともに変更が加えられても、システムを期待通りに動作させることができます。構成管理は自動化して、コスト、複雑さ、手作業によるエラーのリスクを軽減できます。
DevOps および DevSecOps:DevOps は開発と運用、DevSecOps は開発、セキュリティ、運用を意味します。文化、自動化、およびプラットフォーム設計へのアプローチであり、IT ライフサイクル全体を通じてセキュリティを共有責任として統合します。DevOps アプローチにはセキュリティを含むことが常に意図されてきたため、DevOps と DevSecOps は同じものと言えます。しかし現在では、セキュリティを含むことを明示的に示すために、多くの人が DevSecOps と呼んでいます。
YAML:Yet Another Markup Language (または YAML Ain’t Markup Language) の略で、構成ファイルの記述によく使用されるデータシリアル化言語です。YAML は人間が判読でき理解しやすいように設計されており、他のプログラミング言語と組み合わせて使用できます。YAML は、JavaScript Object Notation (JSON) の上位集合です。
どちらの自動化ソリューションが優れているか
自動化ソリューションを選択するには、現在備わっている機能を評価するだけでなく、プラットフォームの長期的な展望を考慮する必要があります。Chef と Ansible はどちらもスケーラビリティが高く、Linux/Unix で実行される制御マシンと Windows で実行できるノードとの相互運用性も高いですが、活発なオープンソース・コミュニティの存在と Red Hat からの支援を受けられるという点で、Ansible は一歩リードしています。
組織で複数の自動化ソリューションを使用することは珍しくありません。Ansible はサポート対象のさまざまな統合からなる大規模なエコシステムとつながっており、他の多くの自動化ツールや構成管理ツールと組み合わせて、自動化ツールのオーケストレーターとして使用できます。さらに、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform をはじめとするあらゆるパブリッククラウド・ハイパースケーラー上のシステムを自動化できます。
Chef と比較して、Ansible は、シンプルさ、使いやすさ、エージェントレスの自動化ソリューションを求めるユーザーに適した選択肢です。また、大規模なコミュニティのコントリビューターやパートナーシップから得られるメリットもあり、ネットワークやインフラストラクチャの自動化など、さまざまな IT 領域で広く採用され、他のツールとの統合も高く評価されています。
お客様、パートナー、アナリストが Ansible Automation Platform をどのように捉えているかについてお読みください。
Red Hat の強み
オープンソースを中核とする Red Hat Ansible Automation Platform は、組織にライフサイクル全体のサポートを提供する、セキュリティ強化されたテスト済みのサブスクリプション製品です。そのアップストリーム・プロジェクトである Ansible は、世界中の何千人ものコントリビューターの経験と知識が活用されています。
Ansible Automation Platform には、多数のアップストリーム・コンポーネント、60 を超えるパートナーによる 140 以上の Red Hat Ansible Certified Content Collections、そして、組織で自動化をインストール、設定、サポートする際の試行錯誤をなくす as-a-service 投資対効果 (ROI) ツール群が含まれています。部門を超えたチームを対象としたエンドツーエンドの自動化エクスペリエンスを生み出し、自動化の開発者、エンジニア、運用チーム間にプラグアンドプレイの体験を提供します。
Automation Analytics や Red Hat Insights などの Red Hat Ansible Automation Platform の機能からは、自動化のパフォーマンスに関する情報が得られるので、効果を測定して問題の監視や解決の精度を高められます。Automation mesh により、制御能力と実行能力を個別にスケーリングし、ダウンタイムをほとんどまたはまったく発生させずに、自動化を必要とするエンドポイントの近くで自動化を実行できます。これにより、データセンターからクラウド、エッジロケーションに至るまで、一貫した自動化エクスペリエンスを実現できます。
エージェントレスで使いやすい IT 自動化の選択肢として、Ansible はそのシンプルさ、柔軟性、強力なユーザーコミュニティで群を抜く存在となっています。
IDC レポート:ビジネス価値を提供する Ansible Automation Platform
IDC の調査によると、Ansible Automation Platform によって運用を標準化している組織は、IT 運用の効率、スピードおよびスケーラビリティを大きく改善し、年間平均 1481 万米ドル相当の利益、3 年間で平均 668% の ROI を実現しています。