人形のチートシート

Puppetは、システム管理者がサーバーインフラストラクチャのプロビジョニング、構成、および管理を自動化するのに役立つ構成管理ツールです。 通常、マスターサーバーが複数のエージェントノードの構成を管理するマスター/エージェントモードで実行されます。 マスターとエージェント間の通信は、クライアントが検証したHTTPSで許可および保護されます。これには、有効な識別SSL証明書が必要です。 Puppetマスターは、これらの証明書を管理するための認証局として機能します。

このチートシートスタイルガイドは、puppet certコマンドを使用してこれらの証明書を管理するためのクイックリファレンスを提供します。

このガイドの使用方法:

  • このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
  • 完了しようとしているタスクに関連するセクションにジャンプします。

注: puppetがパスにない場合は、以下のコマンドでpuppetへのフルパスを指定する必要があります。

証明書リクエストの一覧表示

Puppetエージェントサーバーがオンラインになると、すべてが適切に構成されている場合、サーバーはPuppetマスターに証明書署名要求を提示します。 これらの要求は、puppet cert listコマンドで確認できます。

署名済みと未署名のすべてのリクエストを一覧表示します

署名付きおよび署名なしのすべての証明書要求を表示するには、次のように--allフラグを使用します。

  1. sudo puppet cert list --all

署名された要求の前にはプラス(+)が付き、署名されていない要求はそうではありません。 以下の出力では、host2.example.comは署名されていませんが、host1puppetは署名されています。

Output:
+ "host1.example.com" (SHA256) 51:D8:7A:EB:40:66:74:FD:0A:03:5D:35:AA:4D:B3:FA:35:99:C2:A8:C9:01:83:34:F6:16:60:BB:46:1F:33:3F "host2.example.com" (SHA256) 3C:A9:96:3A:8D:24:5F:25:DB:FF:67:B5:22:B1:46:D9:89:F1:75:EC:BA:F2:D6:87:70:0C:59:97:11:11:01:E3 + "puppet.example.com" (SHA256) 12:32:47:18:D1:12:85:A6:EA:D4:51:9C:24:96:E2:8A:51:41:8D:EB:E8:7C:EB:47:94:B0:8B:16:16:51:6A:D1 (alt names: "DNS:puppet", "DNS:puppet.localdomain", "DNS:puppet.example.com")

署名されていないリクエストを一覧表示する

Puppet Serverがエージェントノードと通信して制御できるようになる前に、その特定のエージェントノードの証明書に署名する必要があります。 署名されていないリクエストを確認するには、Puppetサーバーからpuppet cert listコマンドを使用します。

  1. sudo puppet cert list

これにより、署名されていないリクエストのみが一覧表示されます。 出力は次のようになります。

Output:
"host2.example.com" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

プラス記号(+)がない場合は、これらの証明書がまだ署名されていないことを示します。 署名されていない要求がない場合は、出力なしでコマンドプロンプトに戻ります。

証明書リクエストへの署名

特定のリクエストに署名する

単一の証明書要求に署名するには、puppet cert signコマンドを使用し、証明書要求に表示されている1つ以上のホスト名を指定します。

  1. puppet cert sign host2.example.com

次の例のような出力は、証明書要求が署名されていることを示しています。

Output:
Notice: Signed certificate request for host1.example.com Notice: Removing file Puppet::SSL::CertificateRequest host2.example.com at '/etc/puppetlabs/puppet/ssl/ca/requests/host1.example.com.pem'

すべてのリクエストに署名する

--allフラグを追加することで、すべてのリクエストに署名できます。

  1. sudo puppet cert sign --all

証明書の取り消し

最終的には、Puppetからホストを削除するか、ホストを再構築してから再度追加することをお勧めします。 この場合、Puppetマスターからホストの証明書を取り消す必要があります。 これを行うには、cleanアクションを使用します。

注:次のコマンドで証明書を取り消す前に、バックアップ/etc/puppetlabs/puppet/ssl/ディレクトリを作成してください。

  1. sudo cp -R /etc/puppetlabs/puppet/ssl/ /root/

特定の証明書を取り消す

puppet cert cleanを使用して、証明書に表示されている1つ以上のホスト名を指定することにより、1つ以上の特定の証明書を取り消すことができます。

  1. sudo puppet cert clean host1.example.com

証明書を失効させた後、失効を有効にするには、Puppetマスターを再起動する必要があります。

  1. sudo service puppetserver reload

次回puppet agentがエージェントノードで実行されると、puppet cert signで署名できる新しい証明書署名要求がPuppetマスターに送信されます。 次の方法でリクエストをすぐにトリガーできます。

  1. sudo puppet agent --test

複数の証明書を取り消す

Puppetでは、--allフラグが設定された証明書を一括削除することはできませんが、ホスト名をスペースで区切って指定することにより、複数の証明書を一度に取り消すことができます。

  1. sudo puppet cert clean host1.example.com host2.example.com . . .

証明書を失効させた後、失効を有効にするには、Puppetマスターを再起動する必要があります。

  1. sudo service puppetserver reload

結論

このガイドでは、Puppetバージョン4.xでPuppet証明書を管理するための一般的なコマンドのいくつかについて説明します。 puppet certで使用できる他のアクションとフラグがあります。 包括的なリストについては、puppetcertのマニュアルページを参照してください。