パペットとは?
DevOps では、できるだけ多くのタスクを自動化する必要があります。環境を手動で構成するには、膨大なインフラストラクチャで数週間かかります。すべてがセットアップされるまでに、Rancher サーバーなどの新しい効果的なソリューションを実装する代わりに、火を消していることになります。
Puppet は、手動タスクを自動化して、システムを迅速にプロビジョニングし、アプリケーションをデプロイするのに役立ちます。動的なインフラストラクチャ管理は、Puppet の中核です。
この記事では、Puppet とは何か、Puppet が解決する問題、Puppet を使用して DevOps チームとしての手作業をうまく自動化する方法について説明します。
パペットとは
Puppet は、複数のサーバーを管理するための IaC (Infrastructure as Code) ツールです。 Puppet は (主に) Ruby で作成されており、複数の Unix ライクなシステムで動作し、Windows もサポートしています。
このソフトウェアは非常に成熟しており、最初のリリースは 2005 年です。Puppet は無料のオープンソース ソフトウェアとして提供され、複雑なインフラストラクチャ向けの専用バージョンも利用できます。
パペットの用途
Puppet は、サーバー構成の管理と展開を自動化します。このソフトウェアにより、一度に複数のシステムで文字列をプルして状態を管理できるようになり、このアプローチにより、サーバーを個別に手動でセットアップおよび管理する手間が省けます。
Puppet は、そこに到達する方法ではなく、システムの望ましい状態を定義します。設定はさまざまなプラットフォームやデバイスに適用され、インフラストラクチャ全体で状態が維持されます。全体として、システム管理者が問題を解決する必要が少なくなり、DevOps チームは新しくより優れたサーバー ソリューションを実装できるようになります。
パペット構成管理
自動化スクリプトは、サーバーのインストールや構成などの繰り返しのタスクを処理するのに役立ちます。ただし、大規模なインフラストラクチャで作業する場合、自動化スクリプトはスケーリングしません。
構成管理は、広範なインフラストラクチャ構成のソリューションを提供します。プラクティスは DevOps のバックボーンと見なされ、確立された DevOps パイプラインでより頻繁で信頼性の高いソフトウェア リリースを可能にします。
コードとしてのインフラストラクチャ アプローチにより、サーバー構成管理が行われます。 Puppet の場合、サーバー管理コードは Ruby に似た Puppet コードです。この言語は宣言型で、モデルベースの構成を記述します。
パペットの仕組み
Puppet はクライアント サーバー アプローチを使用し、次のシステムで構成されています:
- Puppet Master は、マニフェストを使用してすべてのノードの重要なシステム情報を管理する Puppet Master デーモンを備えたサーバーです。
- Puppet エージェントは、Puppet がインストールされ、Puppet エージェント デーモンが実行されているノードです。
以下のセクションでは、Puppet がどのように機能するかを明確にするのに役立つ、Puppet の重要な要素と用語について説明します。
Puppet のトポロジとアーキテクチャ
Puppet は、Puppet マスターと Puppet エージェントで構成されるクライアント/サーバー アーキテクチャを利用します。 Puppet エージェントは、プル モードを使用してマスターをポーリングし、ノード固有およびサイト固有の構成情報を取得します。
トポロジは次の手順を経ます:
<オール>Puppet は Facter というユーティリティを使用します システム情報を発見します。このツールは、デフォルトで Puppet インストールに付属しています。
パペットマスター
Puppet マスターは、専用サーバーで実行されるデーモンです。 Puppet マスターは、サーバー ノードとしての情報ソースおよび構成権限です。マスターは、すべてのエージェント ノードに指示を送信し、システムの構成を監視します。
パペット マスターは、次のタスクを担当します。
- エージェントのカタログを作成する
- ファイル サーバーからエージェントへのファイル転送
- エージェントから SSL 証明書を受け入れる
- 構成マニフェストの保存
Puppet は、専用のユーザーとグループによる ID アクセス管理を使用して、セキュリティを提供し、必要な情報のみをエージェントに公開します。ただし、すべてのアクションに昇格した権限が必要なわけではありません。
パペットエージェント
Puppet エージェントは、システムまたはノードで実行される Puppet デーモンです。エージェントには、ノード上で、Puppet マスターからプルされた構成カタログを適用する特定の権限があります。
通信許可を得るために、エージェントはマスターとの最初のコンタクト時に SSL 証明書を要求します。情報を送信する前に、エージェントが構成の更新をマスターに要求するたびに、証明書がチェックされます。マスターはエージェントに対しても認証を行い、構成情報が正しいことを確認します。
Puppet エージェントはシステムの構成を変更し、タスクを実行するには root 権限が必要です。
パペット暗号化と通信セキュリティ
Puppet は、通信とセキュリティに OpenSSL を使用します。 SSL および TLS プロトコルに基づいて、Puppet は標準の SSL/TLS 暗号化と SSL 証明書を使用して、エージェント/マスターの認証と検証を行います。さらに、Puppet は、デフォルトのハッシュとして SHA-256 を使用する SSL/TLS を使用して、エージェントとサーバー間のトラフィック フローを暗号化します。
Puppet の暗号化方法により、以下が保証されます:
- マスター/エージェントの認証と検証
- マスターとエージェント間のデータ侵害を防止する
マスターは、独自の CA 証明書、秘密鍵、CRL (証明書失効リスト)、およびサーバー証明書を生成します。サーバー証明書は、SSL および TLS 通信を有効にするためにエージェントに送信されます。
Puppet の利点と使用する理由
Puppet は、構成管理自動化ツールの中で最も長く使用されている最も人気のあるツールの 1 つです。以下は、Puppet の使用を開始する正当な理由となる 5 つの利点です。
1.オープンソース
Puppet はオープン ソースであるため、テクノロジを拡張できます。カスタム ライブラリとモジュールは、ユース ケースに合わせて個々のプロジェクトを充実させます。
オープンソースには、アクティブなコミュニティがあるという利点もあります。多数のディスカッション、フォーラム、および専門家が、質問に答えたり助けたりする準備ができています。
2.リソースの抽象化
構成タスクは反復的であり、プラットフォーム固有の手順を使用して、異なるオペレーティング システムを搭載したサーバーで同じ手順が必要になることがよくあります。すべてのコマンドを覚えるのは不可能です。
Facter は、Puppet が詳細を把握し、抽象化を実現するのに役立ちます。システム固有のデータと OS の詳細はすべて、Facter のおかげで Puppet になじみ深いものです。
3.冪等性
多数のサーバーで作業する場合、冗長構成は複雑な問題であり、Puppet はシステムに影響する変更のみを適用することを目的としています。インフラストラクチャが目的の状態に達した場合、Puppet はコマンドを実行しません。この Puppet 機能は冪等性と呼ばれ、冗長性を減らして効率を上げるのに役立ちます。
4.クロスプラットフォーム
Puppet は幅広いプラットフォームをカバーしているため、構成の自動化プロセスでサーバーの数が増加します。このツールは、Windows、OS X、Debian ベースのシステム、Fedora、Gentoo、RHEL、Solaris で動作します。
5.フレキシブル
Puppet 言語には、命令をオーバーライドし、さまざまなシナリオの例外を作成する方法が含まれています。 Puppet は、特定のメンテナンス アクションを定期的にスケジュールするのにも役立ちます。
結論
Puppet は、構成とサーバー タスクを管理するための強力なツールであり、動的または頻繁に変更されない安定したサーバーに最適です。
Puppet が他の同様のテクノロジーとどのように比較されるかを確認するには、比較記事 Ansible vs. Terraform vs. Puppet をご覧ください。
クラウドコンピューティング