
前半では、Puppet構成管理システムの主な機能について説明しました。 2番目の部分では、基本的なことを試すために2台のマシンをセットアップします。
ホスト名には、スターウォーズの叙事詩ジョージルーカスのロボットの名前R2D2とC-3POを使用することにしました 。 R2はよりスマートなので、彼はC-3POを管理します。
Ubuntu Server 8.04.01-LTSを実験用のOSとして使用することにしました。 それは可能であり、Debian、Cent OS、およびFreeBSD-基本的にではありません。 Ubuntu Serverを使用する理由は、その構成がシンプルで、個人的に使いやすいからです。 他の何かが好きな人は問題ではありません。
管理サーバー
それでは、R2D2から始めましょう。 制御マシンから。 その上にpuppetmasterパッケージを置きます:
sudo apt-get install puppetmaster
このコマンドを実行すると、管理サーバーがインストールされ、puppetアカウントで起動されます。
次に、管理サーバーの構成ファイルを作成します。 パペットに関しては、マニフェストと呼ばれます。 site.ppマニフェストは、/ etc / puppet / manifestsディレクトリに作成されます。 コンテンツは次のとおりです。
file { "/etc/passwd":
owner => "root",
group => "bin",
mode => 644,
}
ここでは、ノードを指定しなかったため、マニフェストで指定されたすべてのパラメーターがすべてのクライアントホストに適用されることに注意してください。 したがって、構成のためにR2D2に適用されたすべてのマシンは、/ etc / passwdファイルの権利と所有権をチェックします。
サーバーはポート8140で実行されるため、問題が発生した場合はネットワーク設定を確認し、クライアントマシンは管理サーバーのポート8140にアクセスする必要があります。
お客様
クライアントにpuppetパッケージを配置します:
sudo apt-get install puppet
クライアントは、サーバーとは異なり、システムに変更を加えることができるようにルートアカウントで動作します。 最初に、クライアントは証明書を生成し、サーバーへの最初の接続時に署名を要求します。 証明書が署名されている場合、クライアントは現在の構成を受け取り、それをマシンに適用します。 将来、クライアントは30分ごとに、構成が変更されたかどうかを確認します。
/etc/puppet/puppet.conf構成の最後に次の行を追加します。
[puppetd]
server=r2d2.localdomain
これにより、クライアントにどのサーバーを使用するかが指示されます。 ipを指定できます。/etc/hostsにip r2d2を登録しています。
サーバー名は、管理サーバーが証明書に署名するのとまったく同じであることが非常に重要です。 opensslを使用して、証明書のサーバー名を確認できます。
openssl s_client -showcerts -connect r2d2.localdomain:8140
次の行もコメントアウトします。
#pluginsync=true
このオプションは、プラグインとサーバーの同期を設定します-これは必要ではありませんが、コメント化する方が良いです。
次に、puppetクライアントを実行して、証明書を生成し、それを管理サーバーに送信し、署名を要求します。
spanasik@c3po:~$ sudo puppetd --verbose --test
info: Creating a new certificate request for c3po.localdomain
info: Creating a new SSL key at /var/lib/puppet/ssl/private_keys/c3po.localdomain.pem
warning: peer certificate won't be verified in this SSL session
notice: No certificates; exiting
したがって、c3po証明書はr2d2にあるはずです。r2d2でその存在を確認し、存在する場合は署名します。
spanasik@r2d2:~$ sudo puppetca --list
c3po.localdomain
spanasik@r2d2:~$ sudo puppetca --sign c3po.localdomain
Signed c3po.localdomain
証明書は署名されています。 クライアントのテスト起動を繰り返します。
spanasik@c3po:~$ sudo puppetd --verbose --test
warning: peer certificate won't be verified in this SSL session
notice: Got signed certificate
info: No classes to store
info: Caching catalog at /var/lib/puppet/state/localconfig.yaml
notice: Starting catalog run
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.04 seconds
すべてが正常に動作します。 / etc / passwdファイルの所有者を変更するとどうなるかを確認してください:-)
私のアカウントはspanasikであるため、自分を所有者として指定し、マスク777を設定します。
spanasik@c3po:~$ sudo chown spanasik:users /etc/passwd
spanasik@c3po:~$ sudo chmod 777 /etc/passwd
spanasik@c3po:~$ ls -la /etc/passwd
-rwxrwxrwx 1 spanasik users 1084 2009-09-01 12:01 /etc/passwd
puppetクライアントを実行します:
spanasik@c3po:~$ sudo puppetd --verbose --test
notice: Ignoring cache
info: No classes to store
info: Caching catalog at /var/lib/puppet/state/localconfig.yaml
notice: Starting catalog run
notice: //File[/etc/passwd]/owner: owner changed 'spanasik' to 'root'
notice: //File[/etc/passwd]/group: group changed 'users' to 'root'
notice: //File[/etc/passwd]/mode: mode changed '777' to '644'
notice: Finished catalog run in 0.03 seconds
出来上がり!
spanasik@c3po:~$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1084 2009-09-01 12:01 /etc/passwd
所有者は再びルートになり、権利は予想どおり-644になりました。実際、クライアントデーモンを起動します。
spanasik@c3po:~$ sudo /etc/init.d/puppet start
* Starting puppet configuration management tool [ OK ]
spanasik@c3po:~$ ps auxw | grep puppet | grep -v grep
root 6959 1.3 7.3 29584 18856 ? Ssl 13:46 0:00 ruby /usr/sbin/puppetd -w 0
すべてが正常に動作し、30分ごとにc3poがr2d2の設定の更新をチェックし、システムに変更を加えます。
1台のマシン、自動展開?
マシンが1つしかない場合は、両方のパッケージをインストールし、説明とまったく同じように構成する必要があります。 前の記事で説明した1台のマシンでシステムを使用する利点は、主なことはクラッシュ後の新しいサーバーでの迅速な起動です。
この記事では、すべてを手動で行ったことがわかります。 もちろん、これは数百台の車がある場合のオプションではありません。 マシンが多数ある場合は、システムの自動展開を使用できます。 インストール用のイメージを作成し、ハードドライブにこぼします。 最初の起動時に、クライアントシステムは管理サーバーに接続し、デフォルトの構成を既に使用するか、それぞれを個別に操作できます。 私自身はこれをしなかったことに注意してください、なぜなら フリートを管理しないでください。
ここで、解説の pingeee は、グリッドに画像をこぼす可能性のある変形について説明しています。 尊敬されるstasikos は 、debianに似たディストリビューター向けのFAIツールについて説明しますが、同様に感謝しています。
次の記事では、パペットを使用してできる、より複雑で興味深いことについて説明します。