どうも、サイオス 那賀です。
Puppet は、構内ホストをクロスプラットフォームに集中管理するためのソフトウェアです。ユーザやパッケージの存否、設定等々を、複数のノードに一括して適用することができるようになります。
Scientific Linux 6.1 において、ごく簡単な動作を確認するまでの手順を紹介します。ここでは puppet master 側のホストの FQDN を "master.vnat", puppet 側を "node1.vnat" とします。
まず、固有のパッケージをインストールするところまでは、master, node1 とも共通です。
SELinux は permissive, もしくは disabled にします。現行のパッケージ (puppet-2.6.12-1.el6) では、enforcing だとエラーになります (Bug 726061 – puppetmaster fails on startup due to missing SSL/CA directory)。
[root@master ~]# setenforce permissive [root@master ~]# getenforce Permissive
デフォルトのポート番号が分からないので、iptables も、ひとまず切っておきます (8139 かな? 何その Realtek の NIC チップみたいな番号は)。
[root@master ~]# service iptables stop
パッケージは EPEL から入れますので、レポジトリ設定を入れておきます。ちなみに EPEL (Extra Packages for Enterprise Linux) とは、Fedora を元にして RHEL が作られる際に取り込まれなかったパッケージ群を、RHEL やその互換ディストリビューションのために有志が提供してくださっているプロジェクトです。
[root@master ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
ここから、puppet master と puppet とで、インストールするパッケージが異なってきます。まず、puppet master です。"puppet-server" パッケージをインストールし、puppet master サービスを起動します。
[root@master ~]# yum install -y puppet-server [root@master ~]# service puppetmaster start
次に puppet の側です。"puppet" パッケージを入れます。
[root@node1 ~]# yum install -y puppet
puppet が puppet master を指すように設定します。この設定ファイルは init のスクリプトに渡すものですので、/etc/sysconfig/ 以下に入っています。
[root@node1 ~]# cp /etc/sysconfig/puppet /etc/sysconfig/puppet.orig [root@node1 ~]# vi /etc/sysconfig/puppet [root@node1 ~]# diff -uNr \ /etc/sysconfig/puppet.orig /etc/sysconfig/puppet --- /etc/sysconfig/puppet.orig +++ /etc/sysconfig/puppet @@ -1,5 +1,5 @@ # The puppetmaster server -#PUPPET_SERVER=puppet +PUPPET_SERVER=master.vnat # If you wish to specify the port to connect to do so here #PUPPET_PORT=8140
puppet から puppet master への設定変更の確認インターバルが、デフォルトでは 30 分と長いです (実運用としてはむしろ短いのですが)。テスト用に、puppet master への変更が即座に反映されるよう、5 秒を指定します。こちらの設定ファイルは、puppet のプログラム自身が読む方ですので、/etc/puppet/ 以下に入ります。設定ファイルの "main" セクション内に、"runinterval" パラメータを追加します。
[root@node1 ~]# cp \
/etc/puppet/puppet.conf /etc/puppet/puppet.conf.orig
[root@node1 ~]# vi /etc/puppet/puppet.conf
[root@node1 ~]# diff -uNr \
/etc/puppet/puppet.conf.orig /etc/puppet/puppet.conf
--- /etc/puppet/puppet.conf.orig
+++ /etc/puppet/puppet.conf
@@ -11,6 +11,8 @@
# The default value is '$confdir/ssl'.
ssldir = $vardir/ssl
+ runinterval=5
+
[agent]
# The file in which puppetd stores a list of the classes
# associated with the retrieved configuratiion. Can be loaded in
puppet サービスを起動します。
[root@node1 ~]# service puppet start
puppet master 側で、puppet からの接続を受け入れてあげます。
[root@master ~]# puppetca --list node1.vnat (13:C6:9C:8A:4A:5B:59:2B:EA:61:E0:87:E6:43:96:85) [root@master ~]# puppetca --sign node1.vnat notice: Signed certificate request for node1.vnat notice: Removing file Puppet::SSL::CertificateRequest node1.vnat at '/var/lib/puppet/ssl/ca/requests/node1.vnat.pem'
動作を試してみます。デフォルトの puppet manifest ファイルに、ユーザの存在を保証させるリソースを記述します。
[root@master ~]# cat <<EOF > /etc/puppet/manifests/site.pp
user { "hoge":
ensure => present,
uid => '567',
gid => 'wheel',
shell => '/bin/sh',
home => '/var/hoge/',
managehome => true,
}
EOF
[root@master ~]# service puppetmaster reload
ユーザ、追加されたかな?
[root@node1 ~]# id hoge uid=567(hoge) gid=10(wheel) 所属グループ=10(wheel) [root@node1 ~]# grep hoge /etc/passwd hoge:x:567:10::/var/hoge/:/bin/sh [root@node1 ~]# ls -ld /var/hoge/ drwx------. 4 hoge wheel 4096 11月 XX 16:23 2011 /var/hoge/
良いようですね。ではまた。
参考リンク:
- 連載:オープンソースなシステム自動管理ツール Puppet|gihyo.jp … 技術評論社
- Puppet: マニフェストを puppetrun で配信
- Documentation | Puppet Labs - Language Guide
- さようならPuppet、こんにちはChef - Masatomo Nakano Blog
# Puppet のヘンテコ設定言語を思うと、Ruby DSL を用いる Chef の方が筋が良さそうだなぁ…
0 コメント:
コメントを投稿