マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Puppet

【OSS情報アーカイブ】Puppet

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Puppet」とは

概要

Puppet(パペット)とは、オープンソースの構成管理ツールです。

「パッケージインストール」「サーバ構成更新」「ユーザー追加」などインフラストラクチャの管理を自動化するツールを提供します。

「Linux」「UNIX」「Windows」をサポートし、システムの自動管理エンジンとして一元化された仕様に基づいて管理タスクを実行します。

基本説明

Puppetは、グローバルインフラストラクチャを保護および実行する際の「課題」「複雑性」「リスク」を自動化する強力な構成管理ツールです。

「コンプライアンス」「ベースライン」「ドリフト修復」「展開」などのニーズを推進するエンジンとして、DevOpsプラクティスの基盤となる「インフラストラクチャ自動化機能」と「展開自動化機能」の両方を提供します。

「バージョン管理機能」「ピアレビュー機能」「テスト自動化機能」「自動展開機能」「継続的配信機能」「PuppetDBを介したデータウェアハウジング機能」「開発者と運用間をサポートする各種ツール」などを利用できます。

経緯

・2005年:初版リリース

製品構成

■オープンソース版「Puppet」

オープンソース版「Puppet」は小規模向け用途に適しています。

インフラストラクチャをコードとして定義し、システム構成を適用するための最も一般的なオープンソースプロジェクトのコレクションとして、少数のサーバセットを管理できます。

■有償版「Puppet Enterprise」

有償版「Puppet Enterprise」は、中~大規模向け用途に適しています。

「エンタープライズ規模のインフラストラクチャ」「複数の異なるチームが使用および管理するシステム」「複雑なシステム」などに対する管理タスクを効率化できます。

Puppet Enterpriseにはすぐに利用できる強力な各種機能が追加されているため、大規模インフラストラクチャの配信や運用について安全かつ完全に自動化できます。

→Puppet →Puppet Enterprise

■機能比較

機能比較は以下で確認できます。

→Puppet →Puppet Enterprise and Open Source Puppet

オフィシャルサイト情報

■オフィシャルサイト

→Puppet(Open source projects at Puppet)

■主要開発元

Puppetは、Puppet社が中心となり開発が進められています。

→Puppet →Company

■ライセンス情報

Puppetのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→GitHub →puppetlabs/puppet →LICENSE

■動作環境

→Puppet →docs →Open source Puppet →Version latest →System requirements

■ダウンロード

→Puppet →Download open source Puppet

■導入事例

Puppetは「Fortune 100」の75%以上を含む世界中の4万以上の組織で利用されています。

大きなシェアを獲得しているため、ハイブリッドインフラストラクチャの配信と継続的な運用を自動化するための事実上の標準とされています。

→Puppet →Resource library →Customer Story

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Ansible」「Chef」「Itamae」など。

導入メリット

・マニフェスト定義ファイルによりサーバ設定用ドキュメントやスクリプトを排除できる
・手作業でのサーバ設定をほぼ不要にできる
・バックアップタスクを簡素にできる
・サーバ設定や管理機能の実装を容易にできる
・バージョン管理システムとの親和性が高い
・完全な環境をいくつでも構築できる など

導入における課題

・使いこなせるまでの学習コストがかかる
・異なる環境に対するマニフェストやモジュールの再利用は難しい など

設定ファイル「マニフェスト」

■マニフェスト

「マニフェスト」とは「サーバのあるべき状態を記述する設定ファイル」で、独自Ruby型宣言型言語で記述します。

■リソース

マニフェストに設定する項目を「リソース」と呼び、「ユーザー管理」「サービス管理」「パッケージ管理」など、さまざまなものが用意されています。

リソースに対する項目や設定値の他に、リソース間依存関係も記述できます。

モジュール

「モジュール」とは機能拡張のための仕組みで、特定の作業を実行するマニフェストを汎用化してモジュール化することで、汎用ライブラリのように呼び出せます。

目的に応じた「モジュール」をインストールすることで、簡単に設定対象を拡張できます。

「Puppet Forge」サイトには、「MySQL用」や「Nginx用」など、6000以上のモジュールがリストされており、さまざまなシステムを自動化できます。

→forge.puppet.com

パートナーエコシステム

Puppetには、DevOps機能の変換と拡張を検討している企業のニーズをサポートし満たすためのパートナーエコシステムが用意されています。

■主なパートナー

・AWS
・Docker
・Google
・Jenkins
・Microsoft
・Splunk
・VMware など

「Puppet」の設定ファイル(マニフェスト)

概要

Puppetの宣言型言語を使用して「マニフェスト」と呼ばれるファイルにシステムの望ましい状態を記述します。

マニフェストには「ネットワーク」「ファイル」「パッケージ」「サービス」などのオペレーティングシステムリソースを構成する方法を記述します。

その後Puppetは、これらのマニフェストをカタログにコンパイルし、インフラストラクチャ全体に配布します。

→Puppet →docs →Open source Puppet →Version latest →Puppet language and code

Puppet言語

Puppetの宣言型言語を使用して、マニフェストファイルにシステムの望ましい状態を記述します。

→Puppet →docs →Open source Puppet →Version latest →The Puppet language

カタログ

「カタログ」とは、1つのノードのすべてのリソースと依存関係を記述する静的ドキュメントです。

Puppetマスタはノードを構成するために、エージェントノードごとにマニフェスト構成情報をカタログにコンパイルします。

エージェントノードはマスタからカタログを受け取った後、カタログに記述された状態にするために必要な変更を適用します。

リソースとクラス

■リソース

「リソース」は、特定のサービスやパッケージなど、システム構成に必要な項目を指します。

→Puppet →docs →Open source Puppet →Version latest →Resource types

■クラス

「クラス」はリソースをグループ化したものです。

クラスは、アプリケーションの実行に必要なすべてのリソースを集約し、より大きな機能のチャンクを構成します。

マニフェスト

マニフェストはPuppetの基本的な構成要素であり、リソー​​スの構成方法を記述します。

マニフェストには条件付きロジックを含めることができ、複数のエージェントのリソースを宣言できます。

マニフェストは「モジュール」と呼ばれる特定のファイル構造に保持されます。

モジュール

「モジュール」はPuppetの基本的な構成要素として機能し、再利用および共有できます。

■モジュールに保持される情報

「モジュール」は、ソフトウェアのインストールや構成に関する各種情報を含みます。

・Puppetクラス
・定義済みタイプ
・タスク
・タスクプラン
・関数
・リソースタイプとプロバイダ
・カスタムタイプ など

→Puppet →docs →Open source Puppet →Version latest →Module fundamentals

■モジュール作成ツール「Puppet Development Kit」

モジュール作成ツール「Puppet Development Kit(PDK)」を使用することで、高品質のモジュールを作成できます。

「完全なモジュール構造」「クラス」「定義済みタイプ」「タスクテンプレート」などを作成し、モジュールテストフレームワークを構成します。

「Puppet Development Kit」は、モジュールの「開発」「検証」「テスト」に役立つ統合テストツールとコマンドラインインターフェースを提供します。

→Puppet →Welcome to Puppet Development Kit

「Puppet」のアーキテクチャ

エージェントマスターアーキテクチャ

Puppetは「エージェントマスタアーキテクチャ」で構成されます。

このアーキテクチャでは、マスタノードが管理対象エージェントノードのフリート構成情報を制御します。

マスタエージェント通信

マスタエージェント通信は次のパターンに従います。

■手順①:エージェント

ファクトをマスタに送信しカタログを要求します。

■手順②:マスタ

マスタがアクセスできる情報ソースを使用して、ノードのカタログをコンパイルして返します。

■手順③:エージェント

カタログに記述されている各リソースをチェックして、カタログをノードに適用します。

目的の状態にないリソースを発見した場合、それらを修正するために必要な変更を行います。

ノーオペレーションモードの場合は、カタログの調整に必要な変更を評価します。

■手順④:エージェント

レポートをマスタに送り返します。

HTTPS通信

マスタとエージェントは、SSL証明書を使用してHTTPSで通信します。

■組み込み認証局

Puppetには、証明書を管理するための組み込み認証局が含まれています。

エージェントは、マスタのHTTPエンドポイントを介して自動的に証明書を要求し、「puppetserver ca」コマンドを使用して要求を検査し、新しい証明書に署名します。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

フリーワード検索

アクセスランキング

おすすめの記事

【AIツール使ってみる実験室】楽曲作成ツール「 Suno AI 」〜AI生成ミュージックフェス〜

AIツール実験室

2023.09.26

【AIツール使ってみる実験室】楽曲作成ツール「 Suno AI 」〜AI生成ミュージックフェス〜

はじめに ごあいさつ 日本全国の「自動的に楽曲を作成してもらいたい派」のみなさま、
...

【AIツール実験室】画像生成AIツール「 Emi 」(前編)

AIツール実験室

2023.09.28

【AIツール実験室】画像生成AIツール「 Emi 」(前編)

はじめに ごあいさつ 日本全国の「画像AI生成ファン」のみなさま、
おつかれさまで...

【ChatGPT使ってみる実験室】いちばん賢い チャットAI 選手権!

AIツール実験室

2023.09.20

【ChatGPT使ってみる実験室】いちばん賢い チャットAI 選手権!

はじめに ごあいさつ 日本全国の「いちばん賢いチャットAIを探索中」のみなさま、
...