環境:
OS:CentOS release 6.5(Final) 32位
Puppet:3.7.0
Puppet 安裝
Server:
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
yum install puppet-server
client
rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
yum install puppet
修改/etc/puppet/puppet.conf文件
在agent部分加上
server = puppet #puppet server 主機名,可綁定hosts runinterval = 3600 listen = true
啓動
Server:/etc/init.d/puppetmasterstart
Client: /etc/init.d/puppet start
查看授權情況:puppet cert list --all
給client授權:puppet cert sign node2 #node2爲客戶端主機名
Puppet測試
創建site.pp並輸入以下內容
vim /etc/puppet/manifests/site.pp
node default { file {"/tmp/test.txt": content=>"this is a test\nHello World!\n";} }
重啓master:/etc/init.d/puppetmaster restart
在客戶端執行:puppet agent --test 在tmp目錄下有test.txt文件並有上面的內容,代表執行成功
Node定義:
在site.pp中爲每個主機名定義一個node,這樣客戶端就會只同步自己node下的東西,node default 將會被所有客戶端同步。
node node2 { include"test::test2" import"node2.pp" }
Node2.pp
file {'node2file': path => '/tmp/node2file', ensure => present, mode => 0640, content => "I'ma test file.", }
添加module
首先在puppet.conf中定義module位置,如果不定義,將使用默認位置
在main部分定義
modulepath =/etc/puppet/modules:/var/lib/puppet/modules
mkdir /etc/puppet/modules/test/manifests
cd /etc/puppet/modules/test/manifests
vim test2.pp
class test::test2 { file{"/tmp/other.txt": path => '/tmp/other.txt', ensure => present, mode => 0640, content => "I'm atest file.", } }
mkdir /etc/puppet/modules/video/manifests
mkdir /etc/puppet/modules/video/files
touch /etc/puppet/modules/video/files/aa.conf
cd /etc/puppet/modules/video/manifests
vim init.pp
class video { file{"/tmp/ok.txt": path => '/tmp/ok.txt', ensure => present, mode => 0640, content => "I'm atest file.", } file {"aa.conf": path => '/tmp/aa.conf', ensure => file, source =>"puppet:///modules/video/aa.conf", } }
在site.pp中使用如下代碼調用:
node node2 { include"test::test2" include "video" }
在客戶端執行:puppet agent –t 即可同步文件