Puppet 2.7 學習-1

      Puppet 很早的時候看過一些,由於咱們當時已經使用CFEngine好久了,看了puppet以後,感受還不如CFEngine好用,因此就撂下一段時間沒管了,最近由於需求驅動打算把puppet系統的學一遍。 node

     下面對puppet進行一個簡單的瞭解,puppet一般使用CS服務模型,服務端稱爲master,客戶端稱爲agent,maste在主機上以守護進程運行,它包含了環境所需的全部配置,agent經過SSL和master進行通信,agent既能夠以守護進程運行也能夠手動運行,默認狀況下,agent會每30分鐘和master通信一次,以檢查配置有沒有變化。 shell

       puppet使用本身的語言來定義配置項,配置項在puppet中稱爲‘資源’。每一個資源都有一個‘類型’,代表被管理的是什麼樣的資源,軟件包?文件?等等。好包括一個‘標題’,它是資源的名稱。還包括一系列‘屬性‘,它用來講明資源的狀態,每個資源類型都有一系列能夠配置的屬性。資源類型和資源標題組合在一塊兒構成對這個資源的引用。puppet知道不一樣平臺、不一樣操做系統之間的差別,puppet會本身處理這些差別,當agent鏈接到master時,facter會返回agent的相關信息,master根據這些信息處理不一樣平臺的差別。 ubuntu

        類型 { 標題:             package { ssh:              ruby

              屬性 => 值,            ensure => present, 服務器

                                     } ssh

        puppet會分析你的配置,並計算如何在agent上運行它們,接着puppet會爲每個agent取得相應的資源,並將他們編譯成目錄,而後發送到各個主機,經過puppet agent來應用他們,最後將結果返回給master。 學習


      實驗環境:三臺DELL服務器,一臺作服務端,兩臺作客戶端。 測試

      系統用的ubuntu12.10  puppet版本是2.7 ui

安裝puppet spa

先在三臺服務器上安裝ruby環境

apt-get install ruby libshadow-ruby1.8
安裝服務端
apt-get install puppet puppetmaster facter
安裝客戶端
apt-get install puppet facter

由於puppet在運行時要使用DNS域名解析,可是實驗環境又沒有,只能作hosts了,在三臺測試機上作相同的hosts配置

10.1.6.228      Control
10.1.6.216      Compute-2
10.1.6.142      Compute-1

啓動master

service puppetmaster start
啓動agent以前先修改/etc/default/puppet文件
#START=no
START=yes
啓動agent
service puppet start


因爲剛裝好的系統沒有tree命令和sshpass軟件,因此先拿這兩個練練手,給Compute-1安裝。

先讓Compute-1經過請求驗證

agent執行請求

puppet agent --server=Control --no-daemonize --verbose


master查看那些agent在請求認證

puppet cert --list
master上對agent進行簽名

puppet cert --sign Compute-1
 

兩分鐘後,在agent會看到以下

這表示已經認證經過了,接下來開始在master上編寫配置文件。

在/etc/puppet/manifests目錄建立site.pp和nodes.pp文件

#site.pp
import 'nodes.pp'
$pupperserver = 'Control'


#nodes.pp
node 'Compute-1' {
      include ssh
      include tree
}

修改master的主配文件/etc/puppet/puppet.conf,在[main]中加入自動載入模塊路徑

modulepath=/etc/puppet/modules
每一個模塊都須要一個特定的目錄結構和一個init.pp文件


1 建立tree模塊目錄結構

mkdir -p /etc/puppet/modules/tree/{files,manifests,templates}
touch /etc/puppet/modules/tree/manifests/init.pp
2 編寫init.pp文件
class tree {
    package { tree:
        ensure => present,
      }
}
tree模塊建立ok


建立ssh模塊

1 建立ssh模塊目錄結構

mkdir -p /etc/puppet/modules/ssh/{files,manifests,templates}
touch /etc/puppet/modules/ssh/manifests/init.pp
2 編寫init.pp文件
class ssh {
    package { ssh: 
        ensure => present,
    }

    if $operatingsystem == "Ubuntu" {
        package { sshpass: 
            ensure => present,
            require => Package["ssh"],
        }
    }

    file { "/tmp/test.py":
        owner => www-data,
        group => www-data,
        source => "puppet://Control/modules/ssh/tmp/test.py",
    }
}
3 建立file文件路徑
mkdir -p /etc/puppet/modules/ssh/files/tmp
touch /etc/puppet/modules/ssh/files/tmp/test.py

ssh模塊建立ok


開始在Compute-1執行puppet agent

puppet agent --server=Control --verbose --onetime --no-daemonize


      經檢查後確認sshpass和tree軟件包都已安裝,/tmp/test.py文件也已存在,以上配置文件的參數在之後的學習中解釋。

相關文章
相關標籤/搜索