集中管理服務器 PUPPET(一) 部署 與 添加節點

一.FAQ


Q: puppet是什麼?

A: puppet英語原意是木偶,在這裏,pupet指的是一個開源的管理軟件.用於集中管理服務器.由於該軟件管理服務器的方式相似於操縱木偶,因此軟件的名字叫作puppet.node

Q:puppet對我有用嗎?

A:若是你是linux unix freebsd 或者 mac os 系統管理員,puppet對你頗有用,若是你是windows用戶,暫時對你沒用. 若是你管理着上成百上千臺的服務器,可是還在用 for 循環加 ssh或者 expect 的方式來管理服務器,那麼你應該嘗試下puppet了.除非你想成天在不一樣的服務器上登入登出. 而不考慮擠出點時間來玩或者學習新的東西.linux

Q:puppet已經能用到生產環境了嗎?

A:是的,徹底沒有問題,google 也用puppet管理了超過6000臺的蘋果桌面系統,下面是官方的puppet用戶列表. who using puppet shell

Q: puppet 證書認證錯誤

A: puppet客戶端和服務器端是經過ssl鏈接來保證安全性,ssl鏈接用到的證書是x.509證書。 puppet會本身生成證書。無論是在客戶端仍是在服務器端。
ssl在鏈接的時候,會對比證書裏面的CN名字是否和主機名匹配,若是不匹配就會報證書驗證錯誤。這是最多見的問題。vim

解決這個問題的方法就是,首先固定機器的主機名,而後刪除puppet已經本身生成的ssl目錄,例如/etc/puppet/ssl. 從新運行puppet來生成新的證書。不一樣方法安裝的puppet,ssl的路徑不同,在debian下面是/var/lib/puppet/sslwindows

同時在服務器端和客戶端都這樣操做。centos

所謂固定機器的主機名,就是保證主機名配置文件裏面配置的主機名(debian 是/etc/hostname,centos 是在/etc/sysconfig/network裏面的HOSTNAME) 和 執行 hostname命令打印出來的主機名一致。安全


 

二.建立部署 Creating a Deployment

1.安裝部署

標準Puppet Enterprise 部署包括:ruby

  • 由許多Puppet 管理組成的 虛擬/物理機 節點。服務器

  • 至少一個配置好節點的Puppet管理服務端。dom

  • 至少有一個控制檯。支持PuppetDB

  • 要求有本身的DNS主機,要求有正反向解析。

官方文檔廢話太多了。不列了,說乾貨。

準備兩個虛擬機,一臺是管理端,一臺是客戶端。

這裏準備兩臺centos6虛擬機作實驗。


Puppet對Rubu的支持

Ruby version    puppet2.6    puppet2.7    puppet3.0

1.85                支持            支持            不支持

1.8.7               支持            支持            支持

1.9.3               不支持         不支持          支持

1.9.0/1/2         不支持        不支持            不支持

1.8.1/6            不支持        不支持            不支持


Puppet的安裝步驟

  1. 安裝Ruby Ruby-libs Ruby-shadow,進行用戶和組管理

  2. 安裝Facter Puppet Pupper-server

  3. 設置主機名、域名解析或者指定hosts

  4. 經過命令/etc/init.d/puppetmaster start 啓動server或者以非進程的方式啓動server

    經過命令puppet master --no-daemonize --verbose查看相關日誌與輸出

  5. 在客戶端配置文件Puppet.conf制定server端,在終端運行puppet agent -test或直接運行puppet agent --test --server.domain.com 與master交互完成簽名認證

  6. 在server上配置節點信息,告訴客戶端要作什麼

  7. 檢查語法是否錯誤,採用puppet parser validate test.pp

  8. 客戶端再次運行配置 puppet agent --test


在Linux下安裝(Puppet3.x,RHEL5.X+,CentOS5.x+)

使用包管理器安裝 

puppet官方源http://yum.puppetlabs.com

使用源時肯定系統版本,以更改baseurl

[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.4 (Final)
[root@localhost ~]# vim /etc/yum.repos.d/puppet.repo
[puppet-labs]
name=puppet-labs-repo
baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/
gpgcheck=0
enabled=1
[root@localhost ~]# yum list
...
[root@localhost ~]# yum -y install ruby ruby-libs ruby-shadow
...
[root@localhost ~]# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
首先安裝puppetlabs-release.noarch
[root@localhost ~]# yum install puppetlabs-release.noarch
...
服務端安裝
[root@localhost ~]# yum install puppet-server
...
客戶端安裝
[root@localhost ~]# yum install puppet
而後在服務端和客戶端改寫hosts
[root@localhost ~]# vim /etc/hosts
192.168.181.42 puppet.domain.com
192.168.181.43 agent.domain.com

配置防火牆

iptables -A INPUT -p tcp --dport 8140 -j ACCEPT

配置主機配置文件

服務端
[root@localhost ~]# vim /etc/puppet/manifests/site.pp
node default { file { "/tmp/puppettest1.txt": content => "hello,First Puppet test"; }}
[root@localhost ~]# service puppetmaster start
客戶端
[root@agent ~]# service puppet start
客戶端發起驗證
[root@agent ~]# puppet agent --server puppet.domain.com --test
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for agent.domain.com
Info: Certificate Request fingerprint (SHA256): 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
服務端
[root@localhost ~]# puppet cert --list
  "agent.domain.com" (SHA256) 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00
[root@localhost manifests]# puppet cert sign agent.domain.com
Notice: Signed certificate request for agent.domain.com
Notice: Removing file Puppet::SSL::CertificateRequest agent.domain.com at '/var/lib/puppet/ssl/ca/requests/agent.domain.com.pem'
簽署成功
客戶端
驗證配置
[root@agent ~]# puppet agent --test --server puppet.domain.com
Info: Caching certificate for agent.domain.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for agent.domain.com
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version '1386938219'
Notice: /Stage[main]/Main/Node[default]/File[/tmp/puppettest1.txt]/ensure: defined content as '{md5}69edbc23ca13613a136d61fb4f662d5e'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.03 seconds
[root@agent ~]# more /tmp/puppettest1.txt
hello,First Puppet test

簽署其餘注意

客戶端從新簽名時,須要是刪除'hostname'.pem

Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}

服務端也須要刪除簽名相關文件

find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

刪除某臺客戶端的認證信息,使用命令

puppet cert --clean {node certname}

同時

Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}


因爲本人極度厭煩大便和尤半圖(桌面linux),自悟去吧。

使用源碼器安裝

後續添加。

在Windows下安裝使用

後續添加。

相關文章
相關標籤/搜索