Puppetのインストールと動作確認、トラブル対処法:新人インフラ技術者のためのサーバー構築/運用自動化入門(3)(3/4 ページ)
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。今回は、agent/master型のPuppetのセットアップ方法を順に解説。インターネットに接続できない環境や証明書の不整合の解決法も。
Puppet設定(master側)
最初にPuppetの設定ファイル(/etc/puppet/puppet.conf)を修正します。このファイルはセクションによって設定を分けています。セクションは“[main]”のようにセクション名を角括弧でくくります。セクションは以下のものがあります。
- main
全ての動作で共通の設定 - master
master動作固有の設定。mainセクションでの設定より優先される - agent
agent動作固有の設定。mainセクションでの設定より優先される - user
apply動作(スタンドアロン型での動作)固有の設定。mainセクションでの設定より優先される
ここではmainセクションに以下の設定を追加します。
show_diff = true
この設定により、変更の適用時にファイルの差分を表示するようになります。
次に、自動署名の設定をします。Puppet masterはagentからの接続が正規のホストであることを認証しています。agentからの初回接続時にmasterが署名することでagentは接続を認められますが、この署名はpuppet cert signというコマンドを実行する必要があります。本連載ではこの署名を自動的に処理する設定をします。自動署名の設定ファイル(/etc/puppet/autosign.conf)を新規に作成し、以下の内容を記述します。
*
この記述で全てのホストは自動的に署名されるようになります。もし特定のドメインや特定のホストだけ自動署名にしたい場合は、以下のような設定ファイル(/etc/puppet/autosign.conf)を新規に作成し、ドメイン名やホスト名を記述します。「*」によるワイルドカード指定が可能です。
rebuilt.example.com *.scratch.example.com *.local
ここまで設定ができたらmasterを起動しましょう。以下のコマンドラインで起動します。
# service puppetmaster start Starting puppetmaster: [ OK ]
Puppet設定(agent側)
master側と同様にPuppetの設定ファイル(/etc/puppet/puppet.conf)を修正します。ここではagentセクションに以下の行を追加してください。
server = [Puppet masterのホスト名]
この設定はPuppet masterのホスト名を設定するものです。
なお、Red Hat系OSではsysconfigのpuppetファイル(/etc/sysconfig/puppet)でサービス起動時のパラメーターを設定できますが、この後の接続テストの例など直接Puppetコマンドを直接実行する場合、このファイルでの設定は無視されてしまうため、本連載では推奨しません。
設定ができたらmasterに接続テストしてみましょう。以下のコマンドラインのように実行します。
# puppet agent -t --verbose Info: Creating a new SSL key for agent Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for agent Info: Certificate Request fingerprint (SHA256): xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx Info: Caching certificate for agent Info: Caching certificate_revocation_list for ca Info: Caching certificate for ca Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for agent Info: Applying configuration version '1407388475' Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 0.03 seconds
もし、ここで「getaddrinfo: Name or service not known」というエラーが出た場合は、Puppetの設定ファイル(/etc/puppet/puppet.conf)でPuppet masterのホスト名が正しく設定されているか、またhostsファイル(/etc/hosts)にPuppet masterのホスト名が正しく定義されているか確認してください。
また「SSLv3 read server certificate B: certificate verify failed: [CRL is not yet valid for /CN=builder]」というエラーが出た場合はdateコマンドでmaster、agent双方の時間を確認してください。
masterとagentの時刻ずれは、おおむね1分以内であることとされています。masterとagentの時刻ずれが9時間の場合は、VirtualBoxのシステムの設定で[ハードウェアクロックをUTCにする]のチェックが外れているか確認してください(詳細は前回記事を参照してください)。
では次に、master側で正しく認証されたか確認しましょう。master側で以下のコマンドラインのように実行します。
# puppet cert list --all + "agent" (SHA256) xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx: + "builder" (SHA256) xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
この例はmasterのホスト名が“builder”、agentのホスト名が“agent”で実行しています。“agent”の前に“+”が付いているか確認してください。もし付いていないのであれば、接続テストは以下のようになっていたことでしょう。
# puppet agent -t --verbose Info: Creating a new SSL key for agent Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for agent Info: Certificate Request fingerprint (SHA256): xx:xx:xx:xx:xx:xx:xx:xx:xx Info: Caching certificate for ca Exiting; no certificate found and waitforcert is disabled
先ほど説明しましたように、Puppet masterはagentからの接続が正規のホストであることを認証しています。“+”が付いていない状態はagentの証明書に署名されていない状態ですので、自動署名の設定ファイル(/etc/puppet/autosign.conf)が正しく設定されているか確認してください。修正後は念のためpuppetmasterサービスを再起動してください。
ただし、一度署名待ちになってしまったagentは署名するまで接続できませんので、以下のコマンドラインで署名してしまいましょう。署名するコマンドは先ほど紹介しましたがpuppet cert signでしたね。
# puppet cert sign --all Notice: Signed certificate request for agent Notice: Removing file Puppet::SSL::CertificateRequest agent at '/var/lib/puppet/ssl/ca/requests/agent.pem'
今度は“+”が付いています。agentは署名され接続可能になりました。もう一度agentからmasterに接続テストしてみましょう。
# puppet agent -t --verbose Info: Caching certificate for agent Info: Caching certificate_revocation_list for ca Info: Caching certificate for agent Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for agent Info: Applying configuration version '1407395560' Notice: Finished catalog run in 0.03 seconds
今度は「Exiting; no certificate found and waitforcert is disabled」ではなく「Notice: Finished catalog run in 0.03 seconds」になりました。無事接続できるようになりました。なおagentについては、以降サービスで起動せずにコマンドラインを使って動作テストしますので、今回は起動しないようにしてください。
Copyright © ITmedia, Inc. All Rights Reserved.