Puppet Enterprise 2017.2

このPuppet Enterprise NTPクイックスタートガイドでは、Puppet ntpモジュールを使用して、NTPサービスを管理する方法について説明します。

サーバー上のクロックは、もともと正確さを備えているわけではありません。 正しい時刻を認識するには、何らかの要素と同期する必要があります。 NTPは、コンピュータ上のクロックをネットワーク経由で同期させるためのプロトコルです。 NTPは協定世界時(UTC)を使用して、コンピュータクロックの時刻を1ミリ秒以下の誤差で同期します。

ネットワークからアプリケーションにいたるまで、データセンター全体が、セキュリティサービス、証明書の検証、ノード間のファイル共有など、さまざまな目的で正確な時刻を必要としています。

NTPは、Puppet Enterpriseで設定および管理できるサービスのうち、最も簡単でありながら最も重要なサービスの1つです。 Puppet ntpモジュールを使用すると、以下が可能になります。

  • インフラ内の全サーバー間で、時刻を正しく同期する
  • 異なる設定管理ツール間で、時刻を正しく同期する
  • 独自の内部NTPサーバープールを変更または指定する必要がある場合に、更新を素早くロールアウトする

ntpモジュールは、Puppetによってサポート、テスト、メンテナンスされています。 ntpモジュールの詳細については、Puppet Forgeを参照してください。

ntpモジュールには、いくつかのクラスが含まれています。 クラスとは、Puppetコードを1つにまとめて名前を付けたもので、Puppet Enterpriseでノードを設定して管理する際の基本的な単位です。 ntpモジュールに含まれるクラスの中で、ユーザが使用するのはntpクラスだけです。 ntpクラスにはいくつかのプライベートクラスが含まれていますが、これらはモジュールによる内部使用専用です。

このガイドでは、以下のタスクについて詳しく確認していきます。

作業を開始する前に、Puppet Enterpriseをインストールしている必要があります。 詳しい手順については、インストールの概要agentのインストール手順を参照してください。 サポート対象プラットフォームについては、サポート対象のオペレーティングシステムを参照してください。 このガイドは、コードマネージャやr10kを 使用していないことを前提としています。

ntpモジュールのインストール

puppetlabs-ntpモジュールをインストールします。このモジュールはNTPサービスの管理に役立ちます。

  1. Puppet masterのコマンドラインで、puppet module install puppetlabs-ntpを実行します。

おおむね以下のようなアウトプットになるはずです。

Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from http://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└── puppetlabs-ntp (v3.1.2)

これで終わりです! ntpモジュールのインストールが完了しました。 Puppetサーバーが更新され、agentノードにクラスを追加できるようになるまで少し時間がかかります。

モジュールに含まれるクラスの追加

Puppet Enterprise Webコンソールを使用して、これから作成するノードグループNTPに、モジュールのntpクラスを追加します。このノードグループにはすべてのノードを含めます。 使用環境やインフラに応じて別のグループにNTPを割り当てる場合も、手順は同じです。

NTPノードグループの作成

  1. コンソールで、[分類]の順にクリックし、[グループを追加]をクリックします。
  2. 新規ノードグループのオプションを指定します。
    • 親名: [All Nodes]を選択します。
    • グループ名: NTPなどのように、この環境ノードグループの役割を表す名前を入力します。
    • Environment: [production]を選択します。
    • Environmentグループ – このオプションは選択しないでください。
  3. [追加]をクリックします。
  4. [NTP]グループをクリックし、[ルール]タブを選択します。
  5. Factフィールドにnameと入力します。
  6. [演算子]ドロップダウンリストから[~] (matches regex)を選択します。
  7. フィールドに.*と入力します。
  8. [ルールを追加]をクリックします。

    このルールによって、NTPグループにすべてのノードが「動的に」ピンされます。 このルールはテスト目的で作成されたものであり、本稼働環境にあるグループにノードをピンするかどうかの判断はユーザごとに異なります。

NTPグループへのntpクラスの追加

  1. コンソールで[分類]をクリックし、NTPグループを選択します。

  2. [クラス]タブの[クラス名]フィールドで、ntpを選択します。

    ヒント: メインのntpクラスのみ追加してください。モジュールのその他のクラスはメインのクラスに含まれています。

  3. クラスを追加をクリックし、変更を保存ボタンをクリックします。

    : ntpクラスがNTPグループのクラスの一覧リストに表示されますが、この段階ではまだノードに設定されていません。 ノードに設定するには、Puppetを実行する必要があります。

  4. Puppet masterのコマンドラインから、puppet agent -tを実行します。

  5. PEで管理している各ノード上で、puppet agent -tを実行します。

    これにより、新しく割り当てられたクラスを使用してノードが設定されます。

成功です! この段階で、Puppet EnterpriseがNTPグループに含まれるノード上でNTPの管理を始めます。 したがって、ntpdateの実行後にいずれかのノードでNPTサービスの再起動を忘れても、次のPuppet実行時に、Puppet Enterpriseによって自動的に再起動されます。

Puppet Enterprise Webコンソールでの変更の表示

コンソールの[イベント]ページで、インフラの変更およびイベントを表示し、調査することができます。 たとえば、 ntpクラスを適用した後に[イベント]ページをチェックすると、実際に変更がインフラに反映されているかどうかを確認できます。

左側のサマリーウィンドウを確認すると、[イベントありのノード]に、イベントと正常に処理された変更が1件ずつ記録されています。 しかし、[イベントありのクラス]と[イベントありのリソース]には、2件の変更が表示されています。 これは、ntpモジュールからロードされたntpクラスには、追加のクラスとして、NTPの設定を処理するクラス(Ntp::Config)とNTPサービスを処理するクラス(Ntp::Service)が含まれているためです。

  1. [イベントありのクラス]サマリービューで、[変更]をクリックします。 メインウィンドウを確認すると、メインのntpクラスを追加した後でPuppet Enterpriseを実行したときに、Ntp::ConfigクラスとNtp::Serviceクラスが正しく追加されたことが示されています。

  2. 詳細レベルにナビゲートすると、さらにデータが表示されます。

下にナビゲートし続けると実行サマリーが表示され、イベントの詳細が示されます。 たとえば、どのPuppetコードによってイベントが生成されたか正確に確認することができます。 ここでは、puppetlabs-ntpモジュールに含まれるservice.ppマニフェストの15行目とconfig.ppマニフェストの21行目が当てはまります。

このクラスの適用に問題があった場合、この情報に基づいてコードのどの部分を修正すればよいか正しく判断することができます。 ここでは、[イベント]ページで、Puppet EnterpriseがNTPを管理していることを確認できます。

詳細ウィンドウの右上にはレポート実行のリンクがあり、このレポートには、変更を加えたPuppet実行に関する情報(実行のログやメトリクスを含む)が記載されます。 詳細については、インフラレポートを参照してください。

[イベント]ページの使用の詳細については、Eventsページの使用を参照してください。

ntpクラスのパラメータの編集

モジュールコードを直接編集しなくても、Puppet Enterprise Webコンソールでクラスパラメータを編集または追加することができます。

NTPモジュールは、デフォルトでパブリックNTPサーバーを使用します。 お使いのインフラで、内部のNTPサーバープールが使用されている場合はどうなるでしょうか。 Puppet Enterprise Webコンソールを使用すると、わずかな手順でntpクラスのサーバーパラメータを変更できます。

  1. コンソールで[分類]をクリックし、NTPグループを選択します。

  2. [クラス]タブで、クラス一覧からntpを見つけます。

  3. [パラメータ名]ドロップダウンリストから、serversを選択します。

    : 一部のパラメータについては、値がグレーのテキストで表示されますが、これはデフォルト値です。この値としては、数値かPuppet変数のいずれかを使えます。 パラメータ追加後に変更を破棄を選択すれば、この値を元に戻すことができます。

  4. []フィールドに新しいサーバー名(例: ["time.apple.com"])を入力します。これはJSON形式の配列である必要があります。
  5. パラメータを追加をクリックし、変更を保存ボタンをクリックします。
  6. Puppet masterのコマンドラインから、puppet agent -tを実行します。
  7. PEで管理している各ノード上で、puppet agent -tを実行します。

    これでPuppetが実行され、Puppet Enterpriseによって新しい設定が作成されます。

今後は、このノードに指定したNTPサーバーが使用されます。

ヒント: [イベント]ページをチェックして、変更が正しくノードに反映されていることを確認します。

その他のリソース

Puppet ntpモジュールの使用の詳細については、ブログ記事puppetlabs-ntp: A Puppet Enterprise supported moduleを参照してください。

Puppetは、正式な認定コースからガイド付きのオンラインレッスンまでさまざまな学習とトレーニングの機会を提供しています。 詳細については、トレーニングページを参照してください。

Back to top