前回までの内容で、
Puppetの設定
Puppetは特に設定をしなくても、
コマンドオプションでの設定
設定パラメータをコマンドオプションで指定するには、
$ sudo puppetmasterd --confdir=/private/puppet
利用可能なパラメータとそのデフォルト値は、
$ puppetd --genconfig | less
--genconfigの出力は以下のようになります
[puppetd]
# Where Puppet stores dynamic and growing data. The default for this parameter is calculated specially, like `confdir`_.
# The default value is '/var/puppet'.
# vardir = /var/puppet
設定ファイルでの設定
設定ファイルは0.
[main]
confdir = /etc/puppet
[puppetd]
usecacheonfailure = true
[puppetmasterd]
manifestdir = $confdir/manifests
manifest = $manifestdir/site.pp
[main]セクションにあるパラメータはすべてのコマンドに共通のパラメータを指定します。その他のセクションは、
上の例の通り、
0.
confdir = /etc/puppet
manifestdir = $confdir/manifests
manifest = $manifestdir/site.pp
0.
Puppetへのアクセスコントロール
puppetdやpuppetmasterdへのアクセスをコントロールするためには、
# puppetdからのマニフェスト取得アクセスのコントロール
[puppetmaster]
allow *.example.org
deny deny.example.org
# puppetdからのレポート通知アクセスのコントロール
[puppetreports]
allow *.example.org
deny deny.example.org
# puppetdからのファイルサーバ機能へのアクセスコントロール
[fileserver]
allow *.example.org
deny deny.example.org
このファイルが存在しない場合、
自動署名
第2回でも解説したように、
client.example.org
*.example.com
プロバイダ
Puppetのリソース抽象化レイヤで中心的な役割を担っているのがプロバイダと呼ばれるものです。
リソース抽象化レイヤでは、
プロバイダはリソースタイプごとに決まっており、
ですがPuppetも完璧ではないため、
package { 'ntp':
provider => 'yum',
ensure => 'present',
}
また、
# packageリソースタイプのデフォルトプロバイダを指定
Package { provider => 'yum' }
# 以下のpackageリソースではプロバイダにyumが利用される
package {
'ntp':
ensure => 'present';
'sudo':
ensure => 'present';
}
execリソースタイプ
execリソースタイプはその名の通り、
しかし、
以下のマニフェストは、
class mysql-server {
$password = 'password'
package { 'mysql-server': ensure => installed }
service { 'mysqld':
ensure => running,
subscribe => Package['mysql-server'],
}
exec { 'Set MySQL server root password':
subscribe => Package['mysql-server'],
require => Service['mysqld'],
refreshonly => true,
unless => "mysqladmin -uroot -p$password status",
path => '/bin:/usr/bin',
command => "mysqladmin -uroot password $password",
}
}
ファイルサーバ
puppetmasterdが持っているファイルサーバ機能を利用して、
ファイルを配布するためのマニフェストは以下のようになり、
file { '/etc/sudoers':
mode => 440,
owner => 'root',
group => 'root',
source => 'puppet://server.example.org/dist/etc/sudoers',
}
Puppetサーバ側では以下のように、
[dist]
path /var/puppet/dist
allow client.example.com
単一のファイルではなく、
file { '/etc/httpd/conf.d':
source => 'puppet://server.example.org/dist/etc/httpd/conf.d
recurse => true,
}
実践テクニックは更に次回に続きます。