puppet

運維工具
puppet rubby開放 支持多平臺 c/s構架 可管理配置文件,cron任務 圖形化配置
saltstack  python開發
ansible實現批量操做系統配置,程序部署,命令執行 python開發node



puppet的安裝和配置
修改主機名 把ip+主機名添加到hosts文件中
寫計劃任務:crontab -e :*/10 * * * * ntpdate time.windows.com
安裝puppet源rpm -ivh 「http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm」
rpm -ivh puppetlabs-release-6-7.noarch.rpm --force --nodeps
服務端:chkconfig puppetmaster on     yum -y install puppet-server
客服端:listen = true,server =服務器名,runinterval=30(服務器與客服端更新時間)   chkconfig puppet on   yum -y install puppetpython



配置認證  讓二者之間信任
客服端:puppet agent --test --server 信任服務端名    客服端生成ssl證書
puppet agent --verbose --no-daemonize 測試是否同步與更新linux


服務端:查看已認證客服端列表 puppet cert list --all      puppet cert sign 客服端名 服務端指定客服端證書
puppet cert clean 客服端刪除指定客服端證書     puppet cert clean --all 刪除全部證書
puppet agent --test --server 信任服務端名    客服端生成ssl證書
刪除認證客服端後必須刪除/var/lib/puppet/ssl/*下的全部證書 重啓後才能生成新的證書apache



puppet配置自動簽發證書
1 刪除全部的之前配置   
2 在服務端配置文件中加入 autosign=true
3.vi /etc/puppet/autosign.conf    ======= *.*   容許全部的用戶名
4 重啓服務   查看認證。windows



puppet證書測試。
vi /etc/puppet/manifests/site.pp
node default {        定義全部的類
file { "/tmp/1.txt":   文件目錄
  content =>"test,test";}}    文件內容
 重啓服務數組


puppet安裝和配置---定義模塊管理  模塊--<<類--<<資源
1,在./etc/puppet/modules 下建立名爲testm的模塊  mkdir /etc/puppet/modules/testm
2. 在testm目錄下建立三個目錄:files 存放文件目錄 manifests模塊的主配置文件 templates 模板與配置文件
3.  vi /etc/puppet/modules/manifests/init.pp   編譯一個初始模塊
class testm{     定義類名testm 隨意定義
file {"/tmp/cisco.txt":定義在客服端建立的文件名
owner => "root", 屬主
group =>"root",屬組
mode =>0400, 權限
source=>"puppet://$puppetserver/modules/testm/cisco.txt" 獲取資源的目錄
}}服務器


這是新建目錄的方式:也能夠在上一目錄下
class test{  定義類 能夠自定義。隨意。
file {"/usr/apache":
owner => "root", 屬主
group =>"root",屬組
mode =>0400, 權限
source=>"puppet://$puppetserver/modules/test/apache",
recurse =>true,遞歸查詢
purge => true 文件同步
}
}
說明:類名字也叫作testm, 類下面定義了一個資源file,文件名字叫作/tmp/cisco.txt ,owner,group,mode定義文件的屬主、數組以及權限,source定義這個文件從哪裏獲取。 $puppetserver一會也要定義一下,這裏指的是puppet server服務器上/etc/puppet/modules/testm/files/1.txtless


vi /etc/puppet/manifests/site.pp
$puppetserver='主服務器名‘
node 客服端名 {
include testm   定義客服端須要加載的模塊名
include test
}
說明:$puppetserver 定義服務端的主機名,node後面爲客戶端的主機名,這裏面定義該客戶端要加載的模塊
 配置完成後,在客戶端執行命令:puppet agent --test  --server=master.aming.com   //若是客戶端上啓動了puppet服務,不用執行這命令,它也會自動同步的上面的模塊其實只是同步了一個文件而已,運維


那麼要想同步一個目錄如何作?咱們能夠經過實現同步一個目錄來作一個包發佈系統。 好比在一臺機器上編譯安裝好了apache,那麼就能夠經過這樣的模塊把這個apache目錄整個分發到其餘機器上。ide



遠程執行命令
exec {"aaa" 執行命令的名字
unless => "test -f /tmp/1.txt", 判斷是否有這文件
onlyif => "test -f /tmp/1.txt",   只有文件存在時或是一個文件纔去建立
path => ["/usr","/sbin","/usr/bin"], 定義一個環境變量
command => "touch /tmp/1.txt"  如判斷無文件 就建立文件
}
說明:unless後面的命令做爲一個條件,當條件成立時,不會執行下面的命令,若是想要條件成立時,執行下面的命令,用 onlyif。要注意的是,咱們必定要給執行的這條命令加個條件,使用unless就能夠,必須知足這個條件才能執行命令,不然這個命令會一直執行,不太穩當。



puppet的任務計劃
cron {"linux":
command =>"/sbin/ntpdate time.windows.com",
user => "root",
minute => "*/5",
monthday =>"1-10",
#ensure => "sbsent"
}


puppet的幾種模塊下的類:module目錄下創建一個模塊:puppet模塊下的文件files(用於下載文件)manifests(用於存放puppet的配置)包含的配置文件(init.pp管理模塊全部pp文件配置,config.pp.server.pp,site.pp,install.pp,params.pp)templates(用於存放模塊,方便pp調用))在

相關文章
相關標籤/搜索