Puppetを使ってシステム管理をする

Puppetとは

Pueppetとは自動システム構成管理ツールです。
サーバとクライアントがあり、サーバから各クライアントにマニフェストファイルで命令することで
各ソフトのインストールなどを実行して環境を構築します。

それではインストールしていきましょう。

環境

環境は Cent OS 6.3 で行います。
今回、Puppetサーバ と Puppetクライアントは別マシンで実行させます。

Puppet サーバーマシンのホスト名を設定する

sudo vi /etc/hosts
以下を追加する
127.0.0.1 puppetserver localhost

sudo vi /etc/sysconfig/network
以下を追加する
HOSTNAME=puppetserver

サーバーを再起動して設定を反映させる
sudo shutdown -r now

Puppetサーバのインストール

リポジトリを追加する

リポジトリファイルを作成する
sudo vi /etc/yum.repos.d/dlutter.repo

[dlutter-rhel5]
name=Unsupported RHEL5 packages (lutter)
baseurl=http://people.redhat.com/dlutter/yum/rhel/5/$basearch/
enabled=1
gpgcheck=0
Puppetサーバをインストール

sudo yum install puppet-server

Puppetサーバの設定

設定ファイルを開き、名前、マニフェストの設定をする
sudo vi /etc/puppet/puppet.conf

[puppetmasterd]
certname = puppetserver
mainfestdir = /etc/puppet/manifests
manifest = /etc/puppet/manifests/site.pp

Puppetサーバを実行して、クライアントからの接続を待つ

sudo puppetmasterd --no-daemonize --debug

Puppetクライアントマシンのホスト名を設定

sudo vi /etc/hosts
自分のホスト名とサーバのIPを追加する

127.0.0.1 puppetclient localhost
[puppet serverのIPアドレス] puppetserver #追加

sudo vi /etc/sysconfig/network
以下を追加する
HOSTNAME=puppetclient

再起動して設定を反映

sudo shutdown -r now

Puppet クライアントのインストール

リポジトリファイルを作成する

sudo vi /etc/yum.repos.d/dlutter.repo

[dlutter-rhel5]
name=Unsupported RHEL5 packages (lutter)
baseurl=http://people.redhat.com/dlutter/yum/rhel/5/$basearch/
enabled=1
gpgcheck=0

Puppetクライアントをインストール

sudo yum install puppet

Puppetクライアントの設定

sudo vi /etc/puppet/puppet.conf

[puppetmasterd]
certname = puppetserver # サーバーの名前

Puppetクライアントの起動

puppetd --server=puppetserver --no-daemonize --verbose --test --debug

これで、待機中のサーバ側でclientから接続があったことがログに出ると思います。
出なかった場合は telnet で puppetserverの8140ポートにつながるか確認して下さい。

※もしも、認証済みクライアントのホスト名を変更した場合は
puppet --genconfig | grep certdir でcertdirを確認して削除して再起動しましょう。

Puppetサーバでクライアントに署名して許可する

クライアントのリクエストを確認する

以下のコマンドで接続してきたクライアントのホスト名が確認できるはずです。
sudo puppetca --list --all

リクエストに署名する

sudo puppetca --sign "puppetclient***"

PuppetクライアントからPuppetサーバへ接続してマニフェストを実行する

Puppetクライアントで
puppetd --server=puppetserver --no-daemonize --verbose --test --debug

これで Puppet サーバのマニフェストファイル( /etc/puppet/manifests/site.pp)
が用意されていればマニフェストがクライアントに反映されます。

今は何も置いていないので、エラーが発生すると思います。
なので、例としてgitインストールのマニフェストファイルを作成します。
sudo vi /etc/puppet/manifests/site.pp
以下を追加する

node default {
  package { 'git': ensure => installed }
}

もう一度Puppetクライアントで実行

puppetd --server=puppetserver --no-daemonize --verbose --test --debug

これでPuppetクライアントにgitがインストールされれば成功です。
ここまででかなり面倒だと思いますが、今後はもっと使いやすくなればいいなと思ってます。

Puppet Manifest ファイルの書き方は別記事にて(´ω`)ノ

>>>Puppet Manifest の書き方