您好,登錄后才能下訂單哦!
看到這篇博客的朋友們很高興可以與大家分享我學習puppet的道路希望下面的內容可以幫到大家
計算:a= $((1+8)) =$[1+8] =$[3 * 3]=`expr 1 + 8` =`expr 3 ** 3` =`expr 3 \* 3` =let 1+8
小數:a=$((3.145*10))錯 a= `bc <<< 3.145*10` ---- 小 Q
-----------------------------------------------------------------------------------------------------
【準備工作】
首先至少準備兩臺機器如果可以三臺虛擬機是很好的
192.168.1.100服務端
192.168.1.101 客戶端
兩臺機器關閉selinux清空iptables規則并保存設置hostname
編輯/etc/sysconfig/network 定義hostname
100上hostname master.teng.com
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
http://blog.chinaunix.net/uid-20639775-id-3314583.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。