セクションを選択

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

URL をコピー

Ansible と Puppet は、コミュニティによるオープンソースの IT 自動化ツールです。どちらも、システムの設定やプロビジョニング、ソフトウェアのデプロイ、多数のサーバーやエンドポイントデバイスのアップデート管理などのルーチンタスクを自動化することで、IT 運用や DevOps 作業を単純化することができます。

Ansible は、自動化するターゲットに追加のソフトウェアをインストールする必要がない、より柔軟なエージェントレス・アプローチを採用しており、使いやすさに定評があります。これに対して、オープンソースの Puppet や Puppet Enterprise は従来からエージェントベースのアプローチを採用しており、対象とするすべてのマシンに追加のソフトウェアをインストールする必要があります。Ansible と Puppet では自動化そのものに対するアプローチが異なります。Ansible では設定ファイルに人間が読める言語を使用し、手続き型の自動化 (順番に実行するステップを定義する) を行っています。一方、Puppet はドメイン固有の言語 (プログラミング言語 Ruby の知識が必要) を使用し、宣言型の自動化 (望ましい状態を定義する) を採用しています。

この記事では、Ansible と Puppet の類似点と相違点について詳しく説明します。

Ansible

Ansible は、Python で書かれたオープンソースのコマンドライン型 IT 自動化ソフトウェア・アプリケーションです。システムの設定、ソフトウェアのデプロイ、高度なワークフローのオーケストレーションが可能で、アプリケーションの展開やシステムのアップデートなどをサポートします。Red Hat Ansible Automation Platform は、Ansible を基盤に多数のエンタープライズ機能を搭載したサブスクリプション製品です。

Ansible の強みは、そのコミュニティにあります。メインの GitHub リポジトリには何千人ものコントリビューターが貢献しており、それに依存するリポジトリは 2022 年秋現在で数万にのぼります。毎年、AnsibleFest という人気のユーザー・カンファレンスが開催され、Ansible Meetup も世界各地で頻繁に開催されています。豊富な専門知識を持つ熱心なユーザーが集う Ansible コミュニティでは、コントリビューターが Ansible と他の一般的なソフトウェア・プロジェクトとの強固な統合に取り組んでいます。Ansible のユーザーは、機能を拡張するのに役立つ何百ものモジュールやプラグインにアクセスできます。

Ansible は、シンプルさと使いやすさに重点を置いて設計されています。また、安全性と信頼性を重視し、可動パーツを極力少なくしています。トランスポートには OpenSSH を使用 (他のトランスポートやプルモードも選択可能) しているほか、Ansible Playbook では人間が読める言語 (YAML) を使用して、多くのトレーニングなしに素早く始められるように設計されています。

Ansible は、コントロールノード (Ansible の実行場所) とマネージドノード (自動化されるエンドポイント) の概念を使用しており、Linux® サーバー、Windows サーバー、ネットワークデバイス、その他多くのベアメタル、仮想、パブリッククラウド、コンテナ化されたプラットフォームを使用できます。Ansible はエージェントレスのため、マネージドノードにアプリケーションやサービスをインストールすることなく、膨大な数のエンドポイントと通信することができます。例えば、ネットワークスイッチやルーターの多くはクローズドシステムであるため、ソフトウェア・エージェントをインストールできないことがほとんどです。 

Ansible は手続き型 (または命令型) プログラミングのアプローチを使用します。望ましい状態に到達するための手順を定義することで、IT インフラストラクチャの設定を保持しようとします。

Puppet

オープンソースの Puppet は Ruby で書かれたオープンソースの IT 自動化アプリケーションで、Puppet Enterprise をはじめとする一連の製品として提供されています。Puppet の大きなメリットはスケーラビリティです。Puppet は、モデル駆動型アプローチと命令型タスク実行を採用しており、大規模なハイブリッド・インフラストラクチャを自動化するために設計されています。

Puppet にも活発なオープンソース・コミュニティがありますが、2022 年秋の GitHub のインサイトに基づくと、Ansible よりもコントリビューターが少なく、依存しているプロジェクトも少ないという結果が出ています。メインリポジトリへの貢献は著しく減速しています。

また、Puppet は Ansible とは異なる仕組みで設計されています。Puppet は通常、エージェントベースのソリューションとして実行され、エージェントレス機能も含まれているものの、管理するすべてのデバイスに特定のソフトウェアがインストールされている必要があります。

Puppet は宣言型プログラミングの概念に則っており、ユーザーが管理対象マシンの望ましい状態を定義しなければなりません。Puppet はこれらの設定を定義するためにドメイン固有言語 (DSL) を使用します。そして、システムを定義された状態にするために、必要な手順を自動化します。Puppet はプライマリサーバー (定義された状態を保存する場所) と Puppet エージェント (指定したシステム上で動作する) を使用して自動化を処理します。

エージェントベース・アーキテクチャは、管理対象のインベントリーでエージェントと呼ばれる特定のソフトウェア・コンポーネントを実行する必要がある、インフラストラクチャと自動化のモデルです。エージェントと、エージェントを動作させるための関連ファイルは、そのすべてを各ターゲットノードにインストールする必要があり、このために追加のセキュリティチェックとルールが必要となります。これは、エージェントが利用できない、あるいは実行が許可されていないオブジェクトを自動化する際に課題となります。また、組織のメンテナンスサポートのライフサイクルの一環として、エージェントのメンテナンスが必要です。

エージェントレス・アーキテクチャは、Ansible が採用しているアーキテクチャで、管理対象環境にエージェント・ソフトウェアをインストールすることなく、IT デバイスを自動化および管理する方法です。コントロール・ソフトウェアを標準的で安全な SSH 接続でリモートマシンに接続し、長時間の設定作業なしに管理を開始します。このアーキテクチャにより、プロビジョニングと設定が完了すれば、エージェントのデプロイメント・システムを維持する必要がなくなります。

宣言型プログラミングは、方法の詳細ではなく、プログラムの望ましい結果を記述するコードを作成する方法です。最終状態に到達するために必要な特定のコマンドや手順ではなく、宣言型言語を用いた最終状態に焦点を当てています。 

手続き型 (または命令型) プログラミングは、タスクを完了するための命令のリスト (ステップバイステップガイド) をコンピュータに提供するコードを作成する方法です。最終状態ではなく、そこに至るプロセスに焦点を当てています。Ansible は自動化言語として、人間が判読可能なデータシリアル化言語 YAML を使用します。YAML 構文は手続き的な方法で解釈および実行されます。つまり、自動化ワークフローは記述された順序で実行されます。

自動化ソリューションを選択するには、現在のソフトウェアに備わっている機能だけでなく、プラットフォームの長期的な展望を考慮する必要があります。Ansible は非常に活発なオープンソース・コミュニティと、Red Hat による商業的支援で抜きん出ています。

組織で複数の自動化ソリューションを使用することは珍しくありません。Ansible は統合された大規模なエコシステムに接続し、他の多くの自動化ツールや構成管理ツールと組み合わせて、自動化ツールのオーケストレーターとして使用することができます。Ansible は、Amazon Web Services (AWS)Microsoft AzureGoogle Cloud Platform をはじめとするあらゆるパブリッククラウド・ハイパースケーラー上のシステムを自動化するために使用できます。

Puppet と比較して、Ansible は既存の知識や専門性を再利用でき、使いやすさとエージェントレスの自動化ソリューションを優先するユーザーにとって好ましい選択と言えます。また、大規模なコミュニティのコントリビューターから得られるメリットもあり、広く採用され、他のツールとの統合も高く評価されています。

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

Ansible Automation Platform には、多数のアップストリーム・コンポーネント、60 を超えるパートナーによる 130 以上の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