セクションを選択

Ansible とChef:知っておくべきこと

URL をコピー

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

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 AzureGoogle Cloud Platform をはじめとするあらゆるパブリッククラウド・ハイパースケーラー上のシステムを自動化できます。

Chef と比較して、Ansible は、シンプルさ、使いやすさ、エージェントレスの自動化ソリューションを求めるユーザーに適した選択肢です。また、大規模なコミュニティのコントリビューターやパートナーシップから得られるメリットもあり、ネットワークやインフラストラクチャの自動化など、さまざまな IT 領域で広く採用され、他のツールとの統合も高く評価されています。 

オープンソースを中核とする Red Hat Ansible Automation Platform は、組織にライフサイクル全体のサポートを提供する、強化されたテスト済みのサブスクリプション製品です。そのアップストリーム・プロジェクトである Ansible は、世界中の何千人ものコントリビューターの経験と知識が活用されています。 

Ansible Automation Platform には、多数のアップストリーム・コンポーネント、60 を超えるパートナーによる 140 以上の Red Hat Ansible Certified Content Collections、そして、組織で自動化をインストール、設定、サポートする際の試行錯誤をなくす as-a-service 投資対効果 (ROI) ツール群が含まれています。部門を超えたチームを対象としたエンドツーエンドの自動化エクスペリエンスを生み出し、自動化の開発者、エンジニア、運用チーム間にプラグアンドプレイの体験を提供します。

Red Hat Insights や automation analytics などの Red Hat Ansible Automation Platform の機能からは、自動化のパフォーマンスに関する情報が得られるので、効果を測定して問題の監視や解決の精度を高められます。Automation mesh によって制御能力と実行能力を個別にスケーリングし、ダウンタイムをほとんどまたはまったく発生させずに、自動化を必要とするエンドポイントの近くで自動化を実行します。これにより、データセンターからクラウド、エッジロケーションに至るまで、一貫した自動化エクスペリエンスを実現できます。

エージェントレスで使いやすい IT 自動化の選択肢として、Ansible はそのシンプルさ、柔軟性、強力なユーザーコミュニティで群を抜く存在となっています。

関連資料

記事

Ansible の基本を学ぶ

Ansible は、プロビジョニング、構成管理などの IT プロセスを自動化します。主要な概念を含む Ansible の基本を確認できます。

記事

ビジネスプロセス管理とは

ビジネスプロセス管理 (BPM) とは、エンドツーエンドのビジネスプロセスをモデリング、分析、最適化して、戦略的な事業目標の達成を支援することです。

記事

Red Hat の自動化を選ぶ理由

Red Hat Ansible Automation Platform には、複数チームでの自動化の展開や企業全体での自動化の導入に必要なツールがすべて揃っています。

自動化の詳細はこちら

製品

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

エンタープライズ規模で自動化を実装するプラットフォーム。自動化導入のあらゆる段階に対応。

リソース

トレーニング

無料のトレーニングコース

Ansible Essentials: Simplicity in Automation Technical Overview

無料のトレーニングコース

Red Hat Ansible Automation for SAP