Puppet Enterprise agentのインストール

Included in Puppet Enterprise 2017.2.

Puppet Enterpriseが提供するパッケージ管理ツールを使用すると、Puppet agentを簡単にインストールして設定できます。 また、標準的な*nixパッケージ管理ツールも使用できます。

PEパッケージ管理の仕組み

Puppet masterは、Puppet Enterpriseインフラにagentをインストールするためのパッケージリポジトリを提供しています。

Puppet Enterpriseパッケージ管理ツールリポジトリは、Puppet masterのインストール中に作成され、Puppet masterと同じポート(8140)を使用して、HTTPS経由でパッケージにサービスを提供します。 つまり、agentでは、Puppet masterとの通信に必要とされているもの以外に、新たなポートを開く必要はないということです。

このインストールスクリプトを実行すると、agentが実行されているOSが検出され、Puppet masterを参照するapt、yum、またはzipper repoが設定された後、puppet-agentパッケージがダウンロードされ、インストールされます。 また、基本的なpuppet.confが作成され、Puppetが実行されます。

インストールスクリプトの実行時にagentのプラットフォームに対応するagentパッケージが見つからない場合は、エラーメッセージが表示され、masterに追加する必要のあるpe_repoクラスが提示されます。

警告pe_repoクラスを用いたagentのインストールには、インターネット接続が必要です。 インターネットに接続していない場合は、「インターネットにアクセスせずにPuppet Enterpriseインフラにagentをインストールする」を参照してください。

Puppet Enterpriseパッケージ管理を使ってPuppet agentをインストールする

Puppet Enterpriseが提供する独自のパッケージ管理を利用して、Puppet EnterpriseインフラにPuppet agentをインストールできます。

agentの厳密なインストール手順は、以下のどちらに当てはまるかによって異なります。

  • ターゲットマシンのOSおよびアーキテクチャが、Puppet masterと一致している。
  • ターゲットマシンのOSおよびアーキテクチャが、Puppet masterとは異なる。

作業を開始する前に、以下の点に注意してください。

  • 以下の例に示すように、インストーラスクリプトの<PUPPET MASTER HOSTNAME>部は、Puppet masterのFQDNを参照します。 すでにコンソールにログインしている場合は、コンソールの左にある証明書の承認をクリックすると、インストールに必要な正しいmasterホスト名を用いた正確なスクリプトを見つけることができます (証明書の承認リクエストを出していなくてもクリックできます )。

  • Puppet Enterpriseパッケージ管理を使用したWindows agentのインストール手順は、*nix agentのインストール手順とは異なります。 Puppet Enterpriseパッケージ管理を使用してagentをインストールするためのWindows専用の手順については、「Windows agentのインストール手順」を参照してください。

OSとアーキテクチャがPuppet masterと同じagentをインストールする

agentのインストール先ノードのOSおよびアーキテクチャが、Puppet masterと同じである場合、Puppet masterでの追加設定なしでagentをインストールできます。

  1. Puppet Enterprise agentをインストールするノードにSSHでログインし、以下のコマンドを実行します。

    curl -k https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | sudo bash
    

    ヒント: 使用するプラットフォームのcurlコマンドで-kオプションがサポートされていない場合、Puppet masterのCA認証でのcurlの使用手順を参照してください。

    curlの代わりにwgetを使用する場合、以下のコマンドを実行します。

    wget -O - -q --no-check-certificate --secure-protocol=TLSv1 https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | sudo bash
    

    Solaris 10を使用する場合、rootとして以下のコマンドを実行します。

    export PATH=$PATH:/opt/sfw/bin
    wget -O - -q --no-check-certificate --secure-protocol=TLSv1 https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | bash
    

    ヒント:設定を指定するには、「インストールスクリプトへの設定パラメータの受け渡し」を参照してください。たとえば、puppet.confに追加されるcert nameなどを指定できます。

  2. インストールが完了したら、「agentの証明書に署名する」に進みます。

OSとアーキテクチャがPuppet Masterと異なるAgentをインストールする

Puppet masterとOSが異なるagentをインストールするには、まず、agentパッケージを含むリポジトリに適切なクラスを追加し、そのクラスによりPE Masterノードグループを分類します。 その後、agentからインストールスクリプトを実行し、インストールに必要なパッケージを取得します。

以下の例では、Puppet masterはRHEL 6を使用するノード上に、agentはAMD64ハードウェア上でDebian 6を使用するノード上にあります。

注意: Puppet masterがプロキシサーバを使用してインターネットに接続している場合は、こちらを参照して、既知の問題を解決してください。

  1. コンソールで[分類]の順にクリックし、PE InfrastructureグループでPE Mastersグループを選択します。

  2. [クラス名]フィールドの[クラス]タブにpe_repoと入力し、表示されるクラスのリストからリポジトリクラスを選択します。

    注意:リポジトリのクラスは「pe_repo::platform::<AGENT_OS_VERSION_ARCHITECTURE>」と表示されています。

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

  4. puppet agent -tを実行し、新たに割り当てられたクラスを用いてPuppet masterノードを設定します。

    /opt/puppetlabs/server/data/packages/public/<PE VERSION>/<PLATFORM>/に新規リポジトリが作成されます。

  5. agentをインストールするノードにSSHでログインし、以下のコマンドを実行します。

    curl -k https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | sudo bash
    

    ヒント: 使用するプラットフォームのcurlコマンドで-kオプションがサポートされていない場合、Puppet masterのCA認証でのcurlの使用手順を参照してください。

    curlの代わりにwgetを使用する場合、以下のコマンドを実行します。

    wget -O - -q --no-check-certificate --secure-protocol=TLSv1 https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | sudo bash
    

    Solaris 10を使用する場合、rootとして以下のコマンドを実行します。

    export PATH=$PATH:/opt/sfw/bin
    wget -O - -q --no-check-certificate --secure-protocol=TLSv1 https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | bash
    

    ヒント:設定を指定するには、「インストールスクリプトへの設定パラメータの受け渡し」を参照してください。たとえば、puppet.confに追加されるcert nameなどを指定できます。

    このスクリプトにより、Puppet Enterprise agentパッケージがインストールされ、基本的なpuppet.confが作成され、Puppetが実行されます。

  6. インストールが完了したら、「agentの証明書に署名する」に進みます。

インストールスクリプトへの設定パラメータの受け渡し

Puppet Enterpriseパッケージ管理を使用してagentをインストールする場合、agentインストールスクリプトに設定を受け渡すことができます。

*nixベースのシステムでは、インストールスクリプトの末尾にパラメータを受け渡し、puppet.confに追加する設定を指定したり、csr_attributes.yamlcustom_attributesおよびextension_requestsセクションに含める設定を指定したりすることができます。

例えば以下のようなものです。

curl -k https://master.example.com:8140/packages/current/install.bash | sudo bash -s agent:certname=<certnameOtherThanFQDN> custom_attributes:challengePassword=<passwordForAutosignerScript> extension_requests:pp_role=<puppetNodeRole>

必要な数のパラメータを受け渡すことができます。 必ずsection:key=valueのパターンに従い、パラメータとパラメータの間にスペースを入れてください。

puppet.confの値のリストの完全版については、設定リファレンスを参照してください。 csr_attributes.yamlの設定の詳細については、CSR特性と証明書のエクステンションページを参照してください。

curl -kを使用せずにagentをインストールする

Puppet Enterpriseパッケージ管理を使用してagentをインストールする場合、-kフラグは、curlにmasterを信用させるために必要です。PuppetとSSLインフラはまだノード上で設定されていないため、こうしないとcurlはmasterを信用しません。

curl -kを使用しない場合、agentをインストールする任意のマシンにPuppet masterのCA証明書を転送して、この証明書に対してインストールスクリプトを実行することができます。

注意: AIX 5.3、6.1、7.1では-kがサポートされていません。 -kフラグを-tlsv1または-1に置き換える必要があります。 AIX、curl、OpenSSLの詳細については、「システム要件」を参照してください。

  1. agentノードとして使用するマシンで、以下のディレクトリを作成します。/etc/puppetlabs/puppet/ssl/certs
  2. Puppet masterで/etc/puppetlabs/puppet/ssl/certs/ に移動し、前のステップでagentノードに作成したディレクトリにca.pemを転送します。
  3. agentノードで、ファイルのパーミッションが正しいことを確認します。

    chmod 444 /etc/puppetlabs/puppet/ssl/certs/ca.pem
    
  4. agentのインストール手順で、–cacertフラグを使用してPuppet master CAを指定します。

    curl --cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem https://<PUPPET MASTER HOSTNAME>:8140/packages/current/install.bash | sudo bash
    

インターネットにアクセスせずにPuppet Enterpriseインフラにagentをインストールする

Puppet Enterpriseインフラから外部のインターネットにアクセスできない場合、Puppet masterは、Puppet Enterprise agentのパッケージ配信リポジトリにアクセスできないので、上で説明したagentインストール手順を一部実行することができません。 この場合は、適切なagentパッケージをダウンロードして、デプロイ要件にもっとも適した以下のオプションを使用してください。

  • インターネットアクセスなしで、Puppet Enterpriseパッケージ管理を使用する。
  • 独自のパッケージ管理をインターネットアクセスなしで使用し、任意で、独自の管理リポジトリからagentをインストールするようにコンパイルmasterを設定する。

開始する前に適切なagentパッケージをダウンロードします。

インターネットアクセスなしで、Puppet Enterpriseパッケージ管理を使用する

以下の手順は、インフラ外部へのインターネットアクセスがない場合に、Puppet Enterpriseパッケージ管理を使用してagentをインストールするためのものです。

  1. Puppet masterの/opt/puppetlabs/server/data/staging/pe_repo-<PUPPET AGENT VERSION>ディレクトリにagentパッケージをコピーします。

  2. Puppet Enterpriseパッケージ管理を使ってPuppet Agentをインストールする」の説明に従って、インストールプロセスを完了します。

注: この手順は、Puppet masterをアップグレードするたびに実行する必要があります。

インターネットアクセスなしで独自のパッケージ管理を使用する

以下の手順は、インフラ外部へのインターネットアクセスがない場合に、独自のパッケージ管理を使用してagentをインストールするためのものです。

  1. 独自のパッケージ管理/配信システムにagentパッケージを追加します。
  2. Puppet Enterprise Webコンソールを使用して、Puppet Enterpriseがホストしているリポジトリを無効にします。

    a. コンソールで[分類]の順にクリックし、PE InfrastructureグループでPE Masterグループを選択します。

    b. [クラス]タブで[pe_repo]クラス(およびpe_repo::で始まるすべてのクラス)を選択し、[このクラスを削除]をクリックします。

    c. [変更を保存]をクリックします。

注: この手順は、Puppet masterをアップグレードするたびに実行する必要があります。

コンパイルmasterを設定して、独自のパッケージ管理からagentをインストールする

対象のインフラがコンパイルmasterを使用してagentをインストールしている場合、それぞれのコンパイルmasterにagentパッケージをコピーする必要はありません。 その代わりに、Puppet Enterprise Webコンソールを使用して、パッケージ管理サーバー上のagentパッケージのパスを指定します。

  1. 独自のパッケージ管理/配信システムにagentパッケージを追加します。
  2. [pe_repo]クラスの[base_path]パラメータに、使用するパッケージ管理サーバーを指定します。

    a. コンソールで[分類]の順にクリックし、PE InfrastructureグループでPE Masterグループを選択します。

    b. [クラス]タブの[pe_repo]クラスで、以下のパラメータを指定します。

    • パラメータ – [base_path]を選択します。

    • – パッケージ管理サーバーのFQDNを入力します。

    c. パラメータを追加をクリックし、変更ボタンをクリックします。

独自のパッケージ管理を使用してagentをインストールする

Puppet Enterpriseパッケージ管理を使用せずにPuppet agentをインストールする場合、独自のパッケージ管理ツールを使用できます。

agentパッケージは、Puppet masterの/opt/puppetlabs/server/data/packages/public/<PE VERSION>/にあります。 このディレクトリには、agentパッケージのプラットフォーム固有のリポジトリファイル構造が含まれます。 デフォルトでは、これにはPuppet masterのOS/アーキテクチャと一致するリポジトリが含まれます。 たとえば、Puppet masterがCentOS 7で稼働している場合、/opt/puppetlabs/server/data/packages/public/<PE VERSION>/では、ディレクトリel-7-x86_64が見つかります。これには、agentのインストールに必要なすべてのパッケージに関するディレクトリが含まれています。

ノードのOSがmasterとは異なるOS/アーキテクチャである場合、適切なagentパッケージをダウンロードし、agentパッケージを適切なリポジトリに抽出したのち、他のパッケージ (yum install puppet-agentなど) と同じようにノードにagentをインストールしてください。

開始する前に適切なagentパッケージをダウンロードします。

  1. 使用するパッケージ管理リポジトリにagentパッケージを追加します。

  2. agentノード(Yum、Apt)上のパッケージマネージャがこのリポジトリを参照するように設定します。

  3. Puppet agentをインストールします。

    a. Yumベースのシステムの場合、sudo yum install puppet-agentを実行します。

    b. Aptベースのシステムの場合、sudo apt-get install puppet-agentを実行します。

  4. puppet config setを使用して、agentを設定します。 以下の「agentを設定する」を参照してください。

agent証明書リクエストの管理

新規Puppet Enterprise agentをインストールすると、agentは自動的に証明書署名リクエスト(CSR)をPuppet masterに送信します。 agentノードを完全に管理できるようにするには、agentの証明書リクエストに署名する必要があります。

証明書リクエストの署名は、Puppet Enterprise Webコンソールまたはコマンドラインから実行できます。

提出中のノードリクエストはメインナビゲーションバーに表示されます。Puppet Enterprise Webコンソールまたはコマンドラインから、リクエストに署名できます。

Puppet Enterprise Webコンソールからagent証明書リクエストを管理する

agentをインストールすると、Puppet Enterprise Webコンソールから証明書リクエストを承認できるようになります。

Puppet Enterprise Webコンソールの[無署名の証明書]ページにCSRを送信したノードの一覧が表示されるので、リクエストを個別に、または一括で、承認または拒否します。

CSRを承認または拒否するには、以下の2つのパーミッションが必要です。

  • コンソール:表示
  • 証明書リクエスト:承認および拒否

ユーザーパーミッションの詳細については、「RBACパーミッションについて」を参照してください。

  1. コンソールで[無署名の証明書]の順にクリックし、現在提出されているノードの要求リストをロードします。

  2. [すべてを承認] または[すべてを拒否 ]ボタンをクリックして、署名リクエストを承認または拒否します。

    注:[すべてを承認]または[すべてを拒否]を使用する場合、すべてのノードがバッチで処理されます。 処理中にブラウザウィンドウを閉じるか、別のWebサイトに移動すると、現在のバッチのみが処理されます。

ノードリクエストが承認された後、次のPuppet実行までの間、このノードはコンソールに表示されません。 最大で30分かかる場合があります。 また、[すべてを拒否]または[ すべてを承認]を使用した場合、処理が終了するまでに、1リクエストあたり2秒かかる場合があります。

コマンドラインでagent証明書リクエストを管理する

agentをインストールすると、コマンドラインで証明書リクエストを承認できるようになります。

  1. 提出されている証明書リクエストを表示します。 Puppet masterのコマンドラインで、以下のコマンドを実行します。

    sudo puppet cert list
    
  2. agentのリクエストに署名するには、以下のいずれかのコマンドを実行します。

    • DNSオルトネームを使用しない場合

      sudo puppet cert sign <AGENT CERT NAME>
      
    • DNSオルトネームを使用する場合

      sudo puppet cert sign (<HOSTNAME> or --all) --allow-dns-alt-names
      

新規ノードの証明書に署名してから、そのノードがコンソールに表示され、設定の取得が開始されるまでには、30分ほどかかることがあります。 すぐに表示するには、CLIを用いてノード上でPuppetを手動で実行することもできます。

agentを設定する

証明書に署名すると、agentをPuppet Enterpriseで管理できるようになっているはずです。 この時点で、別の設定をpuppet.confファイルに追加できます。

ただし、追加の設定を実行する必要がある場合は、/etc/puppetlabs/puppet/puppet.confを直接編集するか、puppet.confを自動的に編集するpuppet config setサブコマンドを使えば、それを実行することができます。

たとえば、「master.example.com」と呼ばれるPuppet masterのagentを指定する場合は、puppet config set server master.example.comを実行します。 これにより、server = puppetmaster.example.com設定がpuppet.conf[main]セクションに追加されます。 agentのcertnameを設定するには、/opt/puppetlabs/bin/puppet config set certname agent.example.comを実行します。 詳細については、puppet config setに関する文書を参照してください。

Mac OS Xユーザへの警告:OS Xシステムでagentのコマンドラインインストールを実施する場合、agentを適切に機能させるためには、/opt/puppetlabs/bin/puppet config set serverおよび/opt/puppetlabs/bin/puppet config set certnameを実行する必要があります。

バイナリおよびシンボリックリンクPuppet Enterprise設定の詳細については、Puppet Enterpriseのバイナリおよびシンボリックリンクを参照してください。 シンボリックリンクの無効化に関する説明も記載しています。

オーケストレーションサービスに向けたagentの準備

オーケストレーションサービスに参加するagentが存在する場合は、追加の設定手順を実施する必要があります。 詳しい説明は、「Enable cache catalogs for orchestration services(オーケストレーションサービスに向けてキャッシュカタログを有効にする)」を参照してください。

ヒント:agentのインストールの完了後、「NTPクイックスタートガイド」の指示に従い、デプロイ全体でPEの時間を同期 してください。

↑ Back to top