一、什麼是puppet?
1、基于ruby語言開發的系統配置集中管理工具,跨平台
2、一個c/s架構,配置服務端和用戶端
puppet依賴于ruby與facter,安裝puppet3.x,需要ruby1.8.7版本及以上;facter是一個系統盤點工具,收集主機的一些資料,比如os、ip、cpu等
3、puppet是一個c/s結構,開源軟體,基于ruby的系統配置管理工具,安裝puppet3.x,需要ruby1.8.7版本及以上
4、預設情況下,用戶端每隔30分鐘連接配接一次puppet服務端
5、能管理多達40種資源,例如:file、user、cron、package、yum等,适合整個軟體的生命周期管理
二、環境介紹
1、拓撲圖
2、下載下傳
作業系統rhel6.3 x64
facter下載下傳: https://downloads.puppetlabs.com/facter/
puppet下載下傳: https://downloads.puppetlabs.com/puppet/
3、puppetmaster與puppetclient可以互相解析
vi /etc/hosts
192.168.0.200 puppetmaster.com
192.168.0.201 puppetclient1.com
4、puppet服務端與用戶端時間同步
yum install ntp -y
service ntpd start
ntpdate pool.ntp.org #同步時間
clock -w #将時間寫入硬體
chkconfig ntpd on
三、安裝服務端puppet
1、安裝ruby環境
1
<code>[root@puppetmaster ~]</code><code># yum install -y ruby ruby-libs ruby-shadow</code>
2、安裝facter
2
3
<code>[root@puppetmaster ~]# tar zxvf facter-1.7.3.tar.gz</code>
<code>[root@puppetclient1 ~]# cd facter-1.7.3</code>
<code>[root@puppetmaster facter-1.7.3]# ruby install.rb</code>
3、安裝配置puppet
4
5
6
7
<code>[root@puppetmaster puppet-3.3.1]</code><code># useradd -s /sbin/nologin puppet</code>
<code>[root@puppetmaster ~]</code><code># tar zxvf puppet-3.3.1.tar.gz</code>
<code>[root@puppetclient1 ~]</code><code># cd puppet-3.3.1</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># ruby install.rb</code>
<code>[root@puppetmaster puppet-3.3.1]</code><code># cp ext/redhat/puppet.conf /etc/puppet/</code>
<code>[root@puppetmaster puppet-3.3.1]</code><code># cp ext/redhat/server.init /etc/init.d/puppetmaster</code>
<code>[root@puppetmaster puppet-3.3.1]</code><code># chmod +x /etc/init.d/puppetmaster</code>
<code>[root@puppetmaster ~]</code><code># vi /etc/puppet/puppet.conf</code>
<code>[main] </code><code>#在main裡面添加puppet服務端主機名</code>
<code>server = puppetmaster.com</code>
<code>[root@puppetmaster puppet-3.3.1]</code><code># chkconfig --add puppetmaster</code>
<code>[root@puppetmaster puppet-3.3.1]</code><code># chkconfig puppetmaster on</code>
<code>[root@puppetmaster puppet-3.3.1]</code><code># service puppetmaster start</code>
四、安裝用戶端puppet agent
<code>[root@puppetclient1 ~]</code><code># yum install -y ruby ruby-libs ruby-shadow</code>
<code>[root@puppetclient1 ~]# tar zxvf facter-</code><code>1.7</code><code>.</code><code>3</code><code>.tar.gz</code>
<code>[root@puppetclient1 ~]# cd facter-</code><code>1.7</code><code>.</code><code>3</code>
<code>[root@puppetclient1 facter-</code><code>1.7</code><code>.</code><code>3</code><code>]# ruby install.rb</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># useradd -s /sbin/nologin puppet</code>
<code>[root@puppetclient1 ~]</code><code># tar zxvf puppet-3.3.1.tar.gz</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># cp ext/redhat/puppet.conf /etc/puppet/puppet.conf</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># cp ext/redhat/client.init /etc/init.d/puppet</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># chmod +x /etc/init.d/puppet</code>
<code>[root@puppetclient1 ~]</code><code># vi /etc/puppet/puppet.conf</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># chkconfig --add puppet</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># chkconfig puppet on</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># service puppet start</code>
<code>[root@puppetclient1 puppet-3.3.1]</code><code># netstat -tupln | grep 8140</code>
五、配置簽名證書
1、用戶端建立證書注冊請求
<code>[root@puppetclient1 ~]</code><code># puppet agent --test</code>
<code>info: creating a new ssl key </code><code>for</code> <code>puppetclient1.com</code>
<code>info: caching certificate </code><code>for</code> <code>ca</code>
<code>info: creating a new ssl certificate request </code><code>for</code> <code>puppetclient1.com</code>
<code>info: certificate request fingerprint (sha256): 7e:10:48:3f:3c:d4:13:ba:bf:66:ed:86:52:92:19:05:1e:d2:3a:cd:06:67:27:80:60:d6:54:66:0e:33:f7:c7</code>
<code>exiting; no certificate found and waitforcert is disabled</code>
2、服務端檢視證書注冊請求
<code>[root@puppetmaster ~]</code><code># puppet cert list #加--all檢視所有</code>
<code> </code><code>"puppetclient1.com"</code> <code>(sha256) 7e:10:48:3f:3c:d4:13:ba:bf:66:ed:86:52:92:19:05:1e:d2:3a:cd:06:67:27:80:60:d6:54:66:0e:33:f7:c7</code>
<code> </code><code>"puppetclient1.com.com"</code> <code>(sha256) 46:b6:95:a6:1b:6a:fd:83:e4:1c:72:d4:5c:3c:b5:ef:3d:f7:43:2c:09:cf:00:b8:44:18:e4:3e:b3:dc:6f:fd</code>
3、服務端受理用戶端證書注冊請求
<code>[root@puppetmaster ~]</code><code># puppet cert sign puppetclient1.com #主機名改為--all,是受理所有</code>
<code>notice: signed certificate request </code><code>for</code> <code>puppetclient1.com</code>
<code>notice: removing </code><code>file</code> <code>puppet::ssl::certificaterequest puppetclient1.com at </code><code>'/var/lib/puppet/ssl/ca/requests/puppetclient1.com.pem'</code>
4、用戶端确認是否證書注冊成功
如果出現以下報錯,則在用戶端puppet.conf配置檔案[main]裡面添加pluginsync=false,再重新開機!
<code>error: </code><code>/file</code><code>[</code><code>/var/lib/puppet/lib</code><code>]: could not evaluate: could not retrieve information from environment production </code><code>source</code><code>(s) puppet:</code><code>//puppetmaster</code><code>.com</code><code>/plugins</code>
5、想清除證書使用
<code>[root@puppetmaster ~]</code><code># puppet cert clean puppetclient1.com</code>
六、簡單測試
1、服務端編寫配置
8
<code>[root@puppetmaster ~]</code><code># vi /etc/puppet/manifests/site.pp #修改後立即,無需重新開機</code>
<code>node </code><code>'puppetclient1.com'</code> <code>{ </code><code>#指定某台,也可以不寫為所有</code>
<code>file</code> <code>{ </code><code>"/tmp/test.txt"</code><code>:</code>
<code> </code><code>content=> </code><code>"hello,puppet test\n"</code><code>;</code>
<code> </code><code>#source=> "puppet://$puppetserver/files/httpd.conf"</code>
<code> </code><code>#也可以這樣分發一個配置檔案</code>
<code> </code><code>}</code>
<code>}</code>
注:file是一個資源管理關鍵字,用來管理檔案的,還有package軟體包管理,service管理系統服務,exec執行shell指令,/tmp/test.txt是建立檔案名字,content定義檔案内容
2、用戶端預設30分鐘與服務端同步配置檔案,是以我們手動執行,也可以修改puppet.conf更改預設時間,添加runinterval=600,設定為10分鐘同步一次
<code>[root@puppetclient1 ~]</code><code># ls /tmp/</code>
<code>test</code><code>.txt</code>
至此,puppet系統安裝配置完成!