Oracle Solaris では、次の Puppet 機能がサポートされています。
Puppet のインストール
Puppet ソフトウェアパッケージ (system/management/puppet) は、デフォルトでは Oracle Solaris システムにインストールされません。Puppet マスターと、Puppet エージェントを実行するすべてのノードに同じ Puppet Image Packaging System (IPS) パッケージを個別にインストールする必要があります。
Oracle Solaris での Puppet の使用開始を参照してください。
Puppet モジュールおよびユーティリティー
Puppet IPS パッケージをインストールすると、すべてのコア Puppet モジュールだけでなく、Oracle Solaris リリースに固有のその他のモジュールが得られます。
Puppet のインストールに含まれているインストール済みで使用可能なすべてのモジュールの完全なリストを表示するには、次のコマンドを実行します。
% pkg list -a *puppet*
特定の Puppet モジュールの詳細は、そのモジュールに含まれている README ファイルを参照してください。また、https://puppet.com/ にアクセスして特定のモジュールの詳細を検索することもできます。
Puppet をインストールすると、Puppet と連携して動作するように設計された次のユーティリティーも得られます。
Facter – Puppet が特定のシステムに関するファクト (OS タイプ、CPU、メモリーサイズなど) を検出するために使用するユーティリティーです。Facter がシステムに関して収集した情報は、Puppet マスターに送信されます。次に、Puppet マスターがこれを使用して、特定のリソースセットの望ましいシステム状態を記述したカタログをコンパイルします。このカタログには、管理する必要のあるすべてのリソースと、これらのリソース間の依存関係が一覧表示されています。Facter を使用したシステムに関する情報の収集を参照してください。
Hiera – 構成データを管理するために使用するクロスプラットフォームのキー/値検索ツールです。Hiera は、通常は Puppet マニフェストに含まれるサイト固有のデータを保持するために Puppet とともに使用します。サイト固有のデータをマニフェストにではなく Hiera 構成ファイル内に格納すると繰り返しが避けられ、それにより、複数のシステムのために再利用できるより一般的なマニフェストを記述できます。
Puppet クラスは必要なデータを要求でき、Hiera はサイト全体の構成ファイルとして機能します。Puppet が Hiera をロードすると、Hiera はこの構成ファイルを /etc/hiera.yaml にあるグローバルファイルの代わりに使用します。詳細は、https://docs.puppet.com/hiera/3.1/ を参照してください。
Puppet エージェント/マスターモデル
Puppet は、エージェント/マスターモデルを使用します。ここで、Puppet マスターは、Puppet エージェントが実行されているすべてのノード (物理または仮想) の重要な構成情報を管理します。
Puppet エージェントを実行しているノードは Puppet マスターを定期的にポーリングし、更新された構成情報を要求します。次に、エージェントがこれをそのノードに適用します。Puppet の動作のしくみを参照してください。
Puppet SMF サービス
Puppet ソフトウェアパッケージをインストールすると、Puppet マスター用の svc:/application/puppet:master と Puppet エージェント用の svc:/application/puppet:agent の 2 つのインスタンスを備えた 1 つの Puppet SMF サービス (svc:/application/puppet) が得られます。デフォルトでは、Puppet のインストール後、これらのサービスインスタンスは無効になっています。これらのサービスインスタンスを有効にすると、これらのサービスのデーモンが起動されます。これらのサービスが無効になると、これらのデーモンが停止されます。Puppet マスターおよびエージェントの構成を参照してください。
Puppet 構成ファイル
Puppet には、マスターとエージェントの両方の構成ファイル (/etc/puppet/puppet.conf) が用意されています。この構成は、SMF リポジトリ内に格納されています。puppet.conf ファイルには、多くのシステムリソースが定義されています。このファイルには、Puppet マスターとマスターによって管理されるすべてのノードが使用するデフォルト値が一覧表示されています。
Puppet 構成ファイルは、SMF ステンシルを使用して svcio ユーティリティーによって生成されます。Oracle Solaris 11.3 でのシステムサービスの開発 の 第 6 章, ステンシルを使用した構成ファイルの作成を参照してください。
puppet.conf ファイル内の構成を常に SMF リポジトリの内容に一致させるため、このファイルは決して直接編集しないでください。代わりに、SMF コマンドを使用してファイル内の適切なプロパティーを設定します。svccfg(1M)を参照してください。Puppet 構成ファイルの生成には刷り出しが使用されるため、SMF プロパティーを設定することによって行なった永続的な変更はすべて、puppet.conf ファイルに自動的に適用されます。
Puppet リソースおよびリソースタイプ
Puppet は、リソースを使用して、サービスが実行される時期や方法、ソフトウェアパッケージの管理、ネットワークおよびネームサービス構成の特定のコンポーネントなどのシステムのさまざまな側面を表します。リソースはまた、システムの特定の側面があるべき状態を反映することもできます。
各リソースには、Puppet マニフェスト内で指定できるタイトルと一連の属性および値によって定義されるリソースタイプがあります。宣言できる値は、管理している構成のタイプによって異なります。Oracle Solaris での Puppet リソースおよびリソースタイプの操作を参照してください。
Puppet プロバイダ
Puppet プロバイダは、リソースの一般的な定義を、特定のプラットフォーム上でそのリソースを実装するために必要なアクションに変換します。これらのクロスプラットフォーム機能は、構成設定を指定された構成の適用に必要なプラットフォーム固有のコマンドに変換する Puppet Resource Abstraction Layer (RAL) によって有効になります。
たとえば、Oracle Solaris システムにソフトウェアパッケージをインストールしている場合、Puppet は Red Hat Enterprise Linux システムの間は IPS を使用し、パッケージのインストールには RPM (Red Hat Package Manager) を使用します。
Oracle Solaris でサポートされている主なプロバイダのいくつかを次に示します。
IPS パッケージのインストール、コマンド、パブリッシャー、ファセット、およびメディエータ
SVR4 パッケージのインストール
ブート環境
データリンクプロパティー
アグリゲーション
Etherstub
IP ネットワークインタフェース
ネームサービス
Oracle Solaris ゾーン、Oracle Solaris カーネルゾーン、および共有ストレージ上のゾーン (ZOSS) バッキングストア
SMF 管理コマンド
SMF プロパティー
TCP/IP チューニング可能値
仮想ローカルエリアネットワーク (VLAN)
仮想ネットワークインタフェースカード (VNIC)
ZFS データセットの作成およびプロパティーの操作 (ほとんどの vdev タイプでの zpool の作成と削除を含む)
Puppet リソースおよびリソースタイプについてを参照してください。
Puppet コマンド行インタフェース (CLI)
マスターとエージェントノードの間の初期ハンドシェークなどのいくつかのアクションを実行するには、Puppet コマンド行インタフェース (CLI) を使用します。CLI はまた、テスト用にドライランを実行するためにも使用することがあります。また、CLI を使用して、Puppet に関する問題のトラブルシューティングやデバッグを行うこともできます。
Puppet CLI を使用して実行する可能性のあるその他のタスクには、次のものがあります。
証明書の管理
レポートの生成および管理
プラグインへのアクセス
リソースの管理
ステータスの表示
Puppet CLI を使用してアクションを実行するには、次の構文を使用します。
# puppet subcommand [options] action [options]
使用可能なすべての Puppet サブコマンドとその使用法は、次のように表示します。
# puppet help
特定のサブコマンドのヘルプは、次のように表示します。
# puppet help subcommand
次の部分的な例は、agent サブコマンドに関する情報を表示する方法を示しています。
# puppet help agent puppet-agent(8) -- The puppet agent daemon ======== SYNOPSIS -------- Retrieves the client configuration from the puppet master and applies it to the local host. This service may be run as a daemon, run periodically using cron (or something similar), or run interactively for testing purposes. USAGE ----- puppet agent [--certname <name>] [-D|--daemonize|--no-daemonize] [-d|--debug] [--detailed-exitcodes] [--digest <digest>] [--disable [message]] [--enable] [--fingerprint] [-h|--help] [-l|--logdest syslog|<file>|console] [--no-client] [--noop] [-o|--onetime] [-t|--test] [-v|--verbose] [-V|--version] [-w|--waitforcert <seconds>] DESCRIPTION ----------- This is the main puppet client. Its job is to retrieve the local machine's configuration from a remote server and apply it. In order to successfully communicate with the remote server, the client must have a certificate signed by a certificate authority that the server trusts; the recommended method for this, at the moment, is to run a certificate authority as part of the puppet server (which is the default). The client will connect and request a signed certificate, and will continue connecting until it receives one. . . .
特定のサブコマンドのアクションのヘルプは、次のように表示します。
# puppet help subcommand action
Puppet の特権と承認
Puppet を構成および管理するには、Puppet Management 権利プロファイルが割り当てられているか、または root 役割になる必要があります。Puppet Management 権利プロファイルには、solaris.smf.manage.puppet および solaris.smf.value.puppet 特権が含まれています。ユーザー権利および特権の動作のしくみの詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の ユーザー権管理を参照してください。