RHEL6下puppet部署管理1之安裝測試
puppet是一個為實現資料中心自動化管理而設計的配置管理軟體。基於c/s架構。puppet的伺服器端儲存著所有的對客戶端伺服器的配置程式碼,在puppet裡面叫做manifest. 客戶端下載manifest之後,可以根據manifest對伺服器進行配置,例如軟體包管理,使用者管理和檔案管理等等。
puppet的工作流程如下:
1. 客戶端puppetd呼叫facter,facter探測出主機的一些變數,例如主機名,記憶體大小,ip地址等。pupppetd 把這些資訊通過ssl連線傳送到伺服器端;
2. 伺服器端的puppetmaster 檢測客戶端的主機名,然後找到manifest裡面對應的node配置,並對該部分內容進行解析,facter送過來的資訊可以作為變數處理,node牽涉到的程式碼才解析,其他沒牽涉的程式碼不解析。解析分為幾個階段,語法檢查,如果語法錯誤就報錯。如果語法沒錯,就繼續解析,解析的結果生成一箇中間的“虛擬碼”,然後把虛擬碼發給客戶端;
3. 客戶端接收到“虛擬碼”,並且執行,客戶端把執行結果傳送給伺服器;
4. 伺服器端把客戶端的執行結果寫入日誌。
puppet工作過程中有兩點值得注意,第一,為了保證安全,client和master之間是基於ssl和證書的,只有經master證書認證的 client可以與master通訊;第二,puppet會讓系統保持在你所期望的某種狀態並一直維持下去,如檢測某個檔案並保證其一直存在,保證ssh 服務始終開啟,如果檔案被刪除了或者ssh服務被關閉了,puppet下次執行時(預設30分鐘),會重新建立該檔案或者啟動ssh服務。
Puppet是Puppet Labs 基於ruby語言開發的自動化系統配置工具,可以以C/S 模式或獨立模式執行,支援對所有 UNIX 及類 UNIX 系統的配置管理,最新版本也開始支援對 Windows 作業系統有限的一些管理。Puppet 適用於伺服器管理的整個過程,比如初始安裝、配置、更新以及系統下線。
典型的 Puppet 架構為星型結構,Clients預設每30分鐘請求一次Server 端,確認是否有新的變更操作指令
1、執行環境和軟體
執行環境:RHEL6.1 (防火牆和SELINUX關閉) + VitualBox
軟體:puppet-2.7.12.tar.gz
facter-1.6.6.tar.gz
以下安裝採用兩臺伺服器,一臺是 server.sxkeji.com用來安裝 puppet-server 服務;一臺是 client.sxkeji.com 用來安裝 puppet 客戶端。
Puppet 要求所有機器有完整的域名(FQDN),修改雙方的/etc/hosts檔案,新增各自的IP地址對應的主機名,生產環境做內部DNS比較好,不用修改每臺伺服器的hosts檔案。
# vi /etc/hosts # 新增內容如下 10.1.1.78 server.sxkeji.com server 10.1.1.79 client.sxkeji.com client |
保持兩臺主機時間同步(可通過搭建ntp伺服器,這裡不作具體搭建ntp服務說明)
2、Puppet安裝
puppet 是用ruby語言寫的,所以要安裝ruby環境,伺服器端與客戶端都要安裝
ruby語言安裝
# yum install ruby* -y |
facter安裝
# tar xf facter-1.6.6.tar.gz # cd facter-1.6.6 # ruby install.rb |
Puppet安裝
# tar xf puppet-2.7.12.tar.gz # cd puppet-2.7.12 # ruby install.rb |
3、Puppet相關配置
a、Server端
從解開的tar包中拷取相應的配置檔案:
[root@server puppet-2.7.12]# cp conf/redhat/fileserver.conf /etc/puppet/ [root@server puppet-2.7.12]# cp conf/redhat/puppet.conf /etc/puppet/ [root@server puppet-2.7.12]# cp conf/redhat/server.init /etc/init.d/puppetmaster [root@server puppet-2.7.12]# chmod 755 /etc/init.d/puppetmaster [root@server puppet-2.7.12]# chkconfig --add puppetmaster [root@server puppet-2.7.12]# chkconfig puppetmaster on [root@server puppet-2.7.12]# mkdir /etc/puppet/manifests |
# pwd /etc/puppet # ls auth.conf fileserver.conf manifests puppet.conf // auth.conf --> client訪問puppet server的ACL配置檔案 // fileserver.conf --> puppet server 作為檔案伺服器的ACL配置檔案 // manifests --> Puppet指令碼主檔案目錄,至少需要包含site.pp檔案 // puppet.conf --> Puppet伺服器配置檔案 # |
生成puppet賬戶:
[root@server puppet-2.7.12]# puppetmasterd --mkusers |
啟動:
# /etc/init.d/puppetmaster start |
b、Client端
從解開的原始碼包拷取相關配置檔案:
[root@client puppet-2.7.12]# cp conf/namespaceauth.conf /etc/puppet/ [root@client puppet-2.7.12]# cp conf/redhat/puppet.conf /etc/puppet/ [root@client puppet-2.7.12]# cp conf/redhat/client.init /etc/init.d/puppet [root@client puppet-2.7.12]# chmod +x /etc/init.d/puppet |
修改相關配置檔案:
[root@client puppet-2.7.12]# vi /etc/puppet/puppet.conf #修改內容如下 [agent] listen = true server = server //伺服器端主機名 [root@client puppet-2.7.12]# vi /etc/puppet/namespaceauth.conf #修改內容如下 [fileserver] allow * [puppetmaster] allow * [puppetrunner] allow * [puppetbucket] allow * [puppetreports] allow * [resource] allow * [root@client puppet-2.7.12]# |
生成puppet賬戶:
[root@client puppet-2.7.12]# puppetmasterd --mkusers [root@client puppet]# rm -rf /var/lib/puppet/ssl/* //刪除客戶端/var/lib/puppet/ssl目錄下的檔案,否則可能會報錯 |
啟動:
# /etc/init.d/puppet start |
4、puppet通訊
Client
[root@client puppet-2.7.12]# puppetd --test --server server //客戶端向server端傳送請求 //Puppet 客戶端使用 HTTPS和服務端(master)通訊,為了和伺服器端通訊必須有合法的 SSL認證,第一次執行puppet客戶端的時候會生成一個SSL證書並指定發給 Puppet服務端。 info: Creating a new SSL key for client.sxkeji.com warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session info: Creating a new SSL certificate request for client.sxkeji.com info: Certificate Request fingerprint (md5): 62:CD:A6:63:A7:8C:89:54:68:AF:95:12:59:16:D7:08 warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session Exiting; no certificate found and waitforcert is disabled [root@client puppet-2.7.12]# |
Server
[root@server ~]# puppetca –list //Server端檢視請求的主機 client.sxkeji.com (05:BF:3C:9E:D8:72:13:24:1D:3F:4C:15:00:E7:FC:25) [root@server ~]# puppetca -s –a //傳送接受請求 // puppet 服務端接受到客戶端的證書後必須簽字(sign)才能允許客戶端接入 //puppetca –s –a //對所有客戶端全部簽名 //puppetca –s client.sxkeji.com //只簽名某個客戶端 notice: Signed certificate request for client.sxkeji.com notice: Removing file Puppet::SSL::CertificateRequest client.sxkeji.com at '/var/lib/puppet/ssl/ca/requests/client.sxkeji.com.pem' [root@server ~]# puppet cert list --all //使用puppet cert list --all 命令可以檢視客戶端已經加入 + client.sxkeji.com (05:BF:3C:9E:D8:72:13:24:1D:3F:4C:15:00:E7:FC:25) + server.sxkeji.com (52:A3:37:85:33:4D:97:7B:1B:78:87:DE:4F:EB:1D:DE) (alt names: DNS:puppet, DNS:puppet.sxkeji.com, DNS:server.sxkeji.com) [root@server ~]# |
client再次傳送請求puppetd--test --server server
[root@client puppet]# puppetd --test --server server.sxkeji.com notice: Ignoring --listen on onetime run info: Caching catalog for client.sxkeji.com info: Applying configuration version '1332988321' info: Creating state file /var/lib/puppet/state/state.yaml notice: Finished catalog run in 0.25 seconds [root@client puppet]# |
完成以上之後server和client就可以正常通訊了
常見錯誤和解決方法:
1、 notice: Ignoring --listen on onetime run notice: Run of Puppet configuration client already in progress; skipping 解決方法:a.可以通過ps –e|grep puppet是否有puppet程式在執行。如果有,則停掉puppet,再執行,即可。 b、沒有程式,那有可能puppetdlock存在,則刪除之,使用rm -rf /var/puppet/state/puppetdlock
2、 warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session Exiting; no certificate found and waitforcert is disabled 解決方法:mv /var/lib/puppet/ /tmp/
3、 err: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed. This is often because the time is out of sync on the server or client warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run err: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed. This is often because the time is out of sync on the server or client 解決方法: 務必保持兩臺主機時間同步 |
相關文章
- RHEL6 下Cfengine V3 安裝測試1
- puppet之安裝配置
- Awstats RHEL6下安裝
- puppet完全攻略(一)puppet應用原理及安裝部署
- puppet之java批量安裝案例Java
- puppet之mysql批量安裝案例MySql
- puppet 安裝
- 自動化測試之:Jenkins安裝與部署Jenkins
- CentOS 6.3下Puppet安裝配置筆記CentOS筆記
- kickstart之批量安裝puppet客戶端客戶端
- RHEL6安裝NGINXNginx
- 1. mysql的安裝與測試MySql
- Jmeter下載安裝配置---測試小白JMeter
- CentOS 下效能測試工具 wrk 安裝CentOS
- Redis之安裝部署Redis
- puppet rpm方式的安裝
- Windows下的Memcache安裝與測試教程Windows
- linux下puppet的“資源”管理Linux
- 機器學習之nltk download安裝測試包機器學習
- Statspack之四-測試安裝好的Statspack
- 程式碼質量管理平臺之SonarQube安裝部署
- MySQL Cluster7.2.15原始碼安裝部署效能測試MySql原始碼
- MicrosoftWindowsVistaSP1安裝測試手記ROSWindows
- RHEL6安裝桌面環境
- 安裝測試kafkaKafka
- memcached安裝測試
- mq安裝測試MQ
- sqlserver 安裝測試SQLServer
- dubbo管理後臺安裝部署
- windows下openldap的安裝與java操作測試WindowsLDAJava
- Jetty的配置、部署與API使用——(1)下載安裝JettyJettyAPI
- MySQL Cluster7.2.4初步安裝部署新特性效能測試等MySql
- windows下安裝部署 hadoopWindowsHadoop
- 如何在 Ubuntu 15.04 中安裝 puppetUbuntu
- OGG安裝測試
- 測試安裝是否成功
- Apache下壓力測試工具ab安裝與使用Apache
- Zookeeper 在Windows下的安裝過程及測試Windows