看到這篇博客的朋友們很高興能夠與你們分享我學習puppet的道路但願下面的內容能夠幫到你們
php
計算:a= $((1+8)) =$[1+8] =$[3 * 3]=`expr 1 + 8` =`expr 3 ** 3` =`expr 3 \* 3` =let 1+8
html
小數:a=$((3.145*10))錯 a= `bc <<< 3.145*10` ---- 小 Qnode
-----------------------------------------------------------------------------------------------------linux
【準備工做】
apache
首先至少準備兩臺機器若是能夠三臺虛擬機是很好的vim
192.168.1.100服務端
192.168.1.101 客戶端
兩臺機器關閉selinux清空iptables規則並保存設置hostnamewindows
編輯/etc/sysconfig/network 定義hostname數組
100上hostname master.teng.comruby
101上hostname client.teng.com服務器
安裝ntpdate並創建自動同步時間的任務計劃
yum install -y ntp
crontab -e //加入
*/10 * * * * ntpdate time.windows.com #微軟的時間服務器
【安裝服務】
服務端
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
yum install -y puppet-server #安裝服務端
service puppetmaster start
chkconfig puppetmaster on
客戶端
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
yum install -y puppet #安裝客戶端
vi /etc/puppet/puppet.conf
在最後面添加
listen = true
server = master.teng.com
runinterval = 30 //主動更新每隔30s
/etc/init.d/puppet start #啓動puppet服務
手動生成ssl證書
puppet agent --test --server master.teng.com
【簽發證書】
服務端簽發全部ssl證書
puppet cert list --all
服務端簽發指定客戶端證書
puppet cert --sign client.teng.com
簽發成功會看到client.teng.com 的key而且在行首有一個 +若是沒有說明尚未簽發
服務端能夠刪除指定客戶端證書
puppet cert clean client.teng.com
刪除全部證書
puppet cert clean --all
服務端建立自動簽發的配置文件
vim /etc/puppet/puppet.conf //在[main]下面加一行 autosign = true
vim /etc/puppet/autosign.conf //加入以下內容 *.teng.com 重啓服務端
注意當刪除客戶端證書後也要刪除客戶端的ssl相關文件 rm -rf /var/lib/puppet/ssl/*
puppet更新方式http://www.cnphp6.com/archives/66975
【簡單測試】
服務端上
vi /etc/puppet/manifests/site.pp //加入以下內容
node default { file { "/tmp/123.txt": content => "test,test"; } }
客戶端上
puppet agent --test --server master.teng.com
這樣會在客戶端上生成一個 /tmp/123.txt的文件而且內容爲 test,test
此時即配置鏈接成功了。
【模塊化管理】
首先要理解幾個概念模塊、類、資源。
模塊是puppet的最大單元模塊裏面有類類下面有資源。
puppet管理的文件、用戶、服務、任務計劃等所有由這些單元組成。
下面咱們來定義一個模塊
在服務端上作以下操做
mkdir /etc/puppet/modules/testm //模塊名字就是testmmoudules下存放模塊
cd !$
mkdir {files,manifests,templates}
//一個模塊下須要這三個目錄files存一些文件能夠爲空manifests存配置文件templates存模板能夠留空
touch manifests/init.pp //這個是必須的
vi manifests/init.pp //內容以下
class testm{ // 這個testm是類 file {"/tmp/2.txt": owner => "root", group => "root", mode => 0400, source => "puppet://$puppetserver/modules/testm/1.txt" } }
說明類名字也叫作testm, 類下面定義了一個資源file文件名字叫作/tmp/2.txt ownergroupmode定義文件的屬主、數組以及權限source定義這個文件從哪裏獲取。 $puppetserver一會也要定義一下這裏指的是puppet server服務器上/etc/puppet/modules/testm/files/1.txt
繼續定義一個很關鍵的配置文件
vim /etc/puppet/manifests/site.pp //內容以下
$puppetserver = 'master.teng.com' //或試試IP node 'client.teng.com'{ include testm //模塊名 }
說明$puppetserver 定義服務端的主機名node後面爲客戶端的主機名這裏面定義該客戶端要加載的模塊
配置完成後在客戶端執行命令
puppet agent --test --server=master.aming.com //若是客戶端上啓動了puppet服務不用執行這命令它也會自動同步的
上面的模塊其實只是同步了一個文件而已那麼要想同步一個目錄如何作
mkdir /etc/puppet/modules/apache 並在目錄下添加文件或目錄
vi manifests/init.pp //添加如下內容
class apache{ file {"/usr/local/apache2": owner => "root", group => "root", source => "puppet://$puppetserver/modules/apache/apache2", recurse => true, purge => true } }
vim /etc/puppet/manifests/site.pp //內容以下
$puppetserver = 'master.teng.com' //或試試IP node 'client.teng.com'{ include testm include apache //模塊名 }
注其中recurse=>true 這個參數很關鍵它表示遞歸的意思沒有這個不能同步目錄。purge參數能夠保證當服務端刪除某個文件客戶端能夠跟着刪除。
【遠程執行命令】
vi manifests/init.pp //添加如下內容
class apache{ file {"/usr/local/apache2": owner => "root", group => "root", source => "puppet://$puppetserver/modules/apache/apache2", recurse => true, purge => true } exec {"123": //exec是資源123是資源名字 unless => "test -f /tmp/teng.txt", path => ["/bin", "/sbin", "/usr/bin", "/usr/sbin"], //定義環境變量 command => "/bin/touch /tmp/teng.txt" } }
注unless後面的命令做爲一個條件當條件成立時不會執行下面的命令若是想要條件成立時執行下面的命令用 onlyif。要注意的是咱們必定要給執行的這條命令加個條件使用unless就能夠必須知足這個條件才能執行命令不然這個命令會一直執行不太 穩當。
能夠等30秒讓客戶端自動同步也能夠手動同步
puppet agent --test --server=master.aming.com
能夠客戶端查看日誌看輸出了什麼
tail -f /var/log/messages
【添加cron】
vi manifests/init.pp //添加如下內容
class apache{ file {"/usr/local/apache2": owner => "root", group => "root", source => "puppet://$puppetserver/modules/apache/apache2", recurse => true, purge => true } exec {"123": //exec是資源123是資源名字 unless => "test -f /tmp/teng.txt", path => ["/bin", "/sbin", "/usr/bin", "/usr/sbin"], //定義環境變量 command => "/bin/touch /tmp/teng.txt" } cron {"time": command => "/sbin/ntpdate time.windows.com", user => "root", minute => "*/10", # ensure => "absent" //當增長了這行配置則會把該cron刪除掉 } }
注分時日月周分別對應puppet裏面的minutehourmonthdaymonthweekday
查看客戶端的日誌和cron觀察日誌輸出的內容和crontab中是否已添加。
=============================================================
好了今天寫的就到這了若是你們想深刻puppet能夠研究一下如下擴展
package http://puppet.wikidot.com/package
service http://puppet.wikidot.com/srv
exec http://puppet.wikidot.com/exec
cron http://puppet.wikidot.com/cron