概要
Ansible と Salt は、コミュニティによるオープンソースの IT 自動化ツールです。どちらも、システムの設定やプロビジョニング、ソフトウェアのデプロイ、多数のサーバーやエンドポイントデバイスのアップデート管理などのルーチンタスクを自動化することで、IT 運用や DevOps 作業を単純化することができます。
Ansible は、自動化するターゲットに追加のソフトウェアをインストールする必要がない、より柔軟なエージェントレス・アプローチを採用しており、使いやすさに定評があります。対照的に、Salt はエージェントベース・アプローチを採用しているため、マシンごとに追加のソフトウェアが必要になります。自動化自体へのアプローチに関しては、Ansible と Salt はいずれも Python をベースとしています。Ansible は YAML 構成ファイルを使用して手続き型の自動化 (順番に実行するステップを定義する) を行い、Salt は YAML の小さなサブセットを使用して、よく使用されるデータ構造 (リストや辞書など) をマッピングします。
この記事では、Ansible と Salt の類似点と相違点について詳しく説明します。
一般的なオープンソース自動化ツールのサポート付きバージョン
Ansible と Salt は、IT 自動化ツールの中でどのような位置づけにあるでしょうか。一般的に使用されているオープンソースの IT 自動化ツールには 4 つあり、Ansible、Salt、Puppet、Chef です。それぞれが自動化に対して異なるアプローチを採用しており、いずれもエンタープライズ向けソリューションとして別々のソフトウェア会社から販売されています。多くの IT 部門では、1 つ以上のソリューションを目的に応じて、あるいは組み合わせて使用しています。
- Ansible は 2015 年に Red Hat に買収され、Red Hat® Ansible® Automation Platform として提供されています。
- Salt (商用名 SaltStack) は、2020 年に VMWare に買収され、最近 VMware Aria Automation にブランド変更された vRealize Automation ポートフォリオに含まれています。VMware は 2022 年に Broadcom に買収されました。
- Puppet は Perforce でサポートされており、Puppet Enterprise や Puppet Bolt などとともに商用製品として提供されています。
- Chef は 2020 年に Progress に買収され、Chef Enterprise Automation Stack などとともに商用製品として提供されています。
Ansible と Salt の IT 自動化へのアプローチの違い
Ansible
Ansible は、Python で書かれたオープンソースのコマンドライン型 IT 自動化ソフトウェア・アプリケーションです。システムの設定、ソフトウェアのデプロイ、高度なワークフローのオーケストレーションが可能で、アプリケーションのデプロイやシステムのアップデート、ネットワークの構成と運用などをサポートします。Red Hat Ansible Automation Platform は、Ansible を基盤に多数のエンタープライズ機能を搭載したサブスクリプション製品です。
Ansible の強みは、そのコミュニティにあります。メインの GitHub リポジトリには何千人ものコントリビューターが貢献しており、それに依存するリポジトリは 2022 年秋現在で数万にのぼります。毎年、AnsibleFest という人気のユーザー・カンファレンスが開催され、Ansible Meetup も世界各地で頻繁に開催されています。豊富な専門知識を持つ熱心なユーザーが集う Ansible コミュニティでは、コントリビューターが Ansible と他の一般的なソフトウェア・プロジェクトとの強固な統合に取り組んでいます。Ansible のユーザーは、機能を拡張するのに役立つ何百ものモジュールやプラグインにアクセスできます。
Ansible は、シンプルさと使いやすさに重点を置いて設計されています。また、安全性と信頼性を重視し、可動パーツを極力少なくしています。トランスポートには OpenSSH を使用 (他のトランスポートやプルモードも選択可能) しているほか、人間が読める言語を使用しており、ユーザーは多くのトレーニングなしに素早く始めることができます。
Ansible は、コントロールノード (Ansible が実行される場所) とマネージドノード (自動化されるデバイス、多くの場合 Linux® または Windows マシン) の概念を使用します。Ansible はエージェントレスのため、マネージドノードにアプリケーションやサービスをインストールすることなく、デバイスと通信することができます。Ansible Automation Platform は、automation mesh と呼ばれるテクノロジーを使用して、実行ノード全体に自動化ジョブを分散させることができます。
Ansible ユーザーは Ansible Playbook (人間が読める YAML で記述されたファイル) を使用して、インフラストラクチャのさまざまな部分を詳細にオーケストレーションできます。Ansible は手続き型 (または命令型) プログラミングのアプローチを使用します。望ましい状態に到達するための手順を定義することで、IT インフラストラクチャの設定を保持しようとします。
Salt
Salt は、モジュール式で Python で記述されるオープンソースの IT 自動化アプリケーションです。高速なデータ収集と実行用に設計され、軽量の ZeroMQ メッセージングライブラリと同時実行フレームワークを備えた構成管理ツールであり、サーバーとエージェント間の永続的な伝送制御プロトコル (TCP) 接続を確立します。
Ansible と同様、Salt は YAML を使用するため、習得と管理が容易です。しかし、アーキテクチャがエージェントベースであるため、Salt 初心者の場合は習得に長い時間がかかり、経験豊富な DevOps プロフェッショナルの場合でも取り扱いが難しいことがあります。Salt では、サーバーは Salt マスター、クライアントは Salt ミニオン (クライアントマシンでエージェントとして実行される) と呼ばれます。複数のマスターを構成でき、1 つのマスターがダウンした場合、エージェントはリスト内の別のマスターに接続します。サーバーはすべてのクライアントに構成をプッシュするため、即座にリモート実行が行われます。
SaltStack が VMware に買収されて以来、Salt オープンソース・コミュニティの規模は縮小しており、2022 年秋の GitHub の分析によると、Salt に依存するプロジェクトは Ansible に依存するプロジェクトよりも少なくなっています。また、2022 年に VMware が Broadcom に買収されて以降、ネットワーキングやマルチベンダーまたは多目的のユースケースよりも、VMware 製品の自動化に重点が置かれるようになり、その結果 IT のスキルギャップが拡大し、Salt コミュニティへの企業サポートが不確実になっています。
知っておくべき自動化の用語
エージェントベース・アーキテクチャ:インフラストラクチャと自動化のモデルで、管理対象の環境でエージェントと呼ばれる特定のソフトウェアを実行する必要があります。エージェントと、エージェントを動作させるための関連ファイルがすべてターゲットノードにインストールされている必要があり、追加のセキュリティチェックとルールを必要とします。これは、エージェントが利用できない、あるいは実行が許可されていないオブジェクトを自動化する際に課題となります。また、エージェントの保守も必要です。
エージェントレス・アーキテクチャ: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) の上位集合です。
どちらの自動化ソリューションが優れているか
自動化ソリューションを選択するには、現在備わっている機能を評価するだけでなく、プラットフォームの長期的な展望を考慮する必要があります。Ansible は活発なオープンソース・コミュニティと、Red Hat による支援で抜きん出ています。
組織で複数の自動化ソリューションを使用することは珍しくありません。Ansible はサポート対象のさまざまな統合からなる大規模なエコシステムとつながっており、他の多くの自動化ツールや構成管理ツールと組み合わせて、自動化ツールのオーケストレーターとして使用できます。さらに、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform をはじめとするあらゆるパブリッククラウド・ハイパースケーラー上のシステムを自動化できます。
Salt と比較して、Ansible は、シンプルさ、使いやすさ、エージェントレスの自動化ソリューションを求めるユーザーに適した選択肢です。また、大規模なコミュニティのコントリビューターやパートナーシップから得られるメリットもあり、ネットワークやインフラストラクチャの自動化など、さまざまな IT 領域で広く採用され、他のツールとの統合も高く評価されています。
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 を実現しています。