Puppet - 驗證Puppet設定



在 Puppet 中,設定可以在本地測試。因此,一旦我們設定了 Puppet master 和節點,就可以在本地驗證設定。我們需要在本地安裝 Vagrant 和 Vagrant box,這有助於在本地測試設定。

設定虛擬機器

由於我們正在本地測試設定,我們實際上不需要執行 Puppet master。這意味著無需在伺服器上實際執行 Puppet master,我們只需使用 Puppet 應用命令來驗證 Puppet 設定即可。Puppet apply 命令將根據配置檔案中的虛擬機器主機名應用來自 **local/etc/puppet** 的更改。

為了測試設定,我們需要執行的第一步是構建以下 **Vagrantfile** 並啟動一臺機器,並將 **/etc/puppet** 資料夾掛載到適當位置。所有必需的檔案都將放置在版本控制系統中,結構如下。

目錄結構

- manifests 
   \- site.pp 
- modules 
   \- your modules  
- test 
   \- update-puppet.sh 
   \- Vagrantfile 
- puppet.conf 

Vagrant 檔案

# -*- mode: ruby -*- 
# vi: set ft = ruby : 
Vagrant.configure("2") do |config| 
   config.vm.box = "precise32" 
   config.vm.box_url = "http://files.vagrantup.com/precise64.box" 
   config.vm.provider :virtualbox do |vb| 
      vb.customize ["modifyvm", :id, "--memory", 1028, "--cpus", 2] 
   end 
  
   # Mount our repo onto /etc/puppet 
   config.vm.synced_folder "../", "/etc/puppet"  
   
   # Run our Puppet shell script   
   config.vm.provision "shell" do |s| 
      s.path = "update-puppet.sh" 
   end  
 
   config.vm.hostname = "localdev.example.com" 
end 

在上面的程式碼中,我們使用了 Shell provisioner,我們嘗試執行名為 **update-puppet.sh** 的 Shell 指令碼。該指令碼位於與 Vagrant 檔案相同的目錄中,指令碼內容列在下面。

!/bin/bash 
echo "Puppet version is $(puppet --version)" 
if [ $( puppet --version) != "3.4.1" ]; then  
   echo "Updating puppet" 
   apt-get install --yes lsb-release 
   DISTRIB_CODENAME = $(lsb_release --codename --short) 
   DEB = "puppetlabs-release-${DISTRIB_CODENAME}.deb" 
   DEB_PROVIDES="/etc/apt/sources.list.d/puppetlabs.list"  
   
   if [ ! -e $DEB_PROVIDES ] 
   then 
      wget -q http://apt.puppetlabs.com/$DEB 
      sudo dpkg -i $DEB 
   fi  
sudo apt-get update 
   sudo apt-get install -o Dpkg::Options:: = "--force-confold" 
   --force-yes -y puppet 
else 
   echo "Puppet is up to date!" 
fi 

接下來,使用者需要在 Manifests 目錄內建立一個名為 **site.pp** 的清單檔案,該檔案將在虛擬機器上安裝一些軟體。

node 'brclelocal03.brcl.com' { 
   package { ['vim','git'] : 
      ensure => latest 
   } 
} 
echo "Running puppet" 
sudo puppet apply /etc/puppet/manifests/site.pp 

一旦使用者準備好上述指令碼和所需的 Vagrant 檔案配置,使用者就可以 cd 到測試目錄並執行 **vagrant up 命令**。這將啟動一個新的虛擬機器,然後安裝 Puppet 並使用 Shell 指令碼執行它。

以下是輸出。

Notice: Compiled catalog for localdev.example.com in environment production in 0.09 seconds 
Notice: /Stage[main]/Main/Node[brclelocal03.brcl.com]/Package[git]/ensure: created 
Notice: /Stage[main]/Main/Node[brcllocal03.brcl.com]/Package[vim]/ensure: ensure changed 'purged' to 'latest'

驗證多臺機器配置

如果我們需要在本地測試多臺機器的配置,只需更改 Vagrant 配置檔案即可。

新的 Vagrant 檔案配置

config.vm.define "brclelocal003" do |brclelocal003| 
   brclelocal03.vm.hostname = "brclelocal003.brcl.com" 
end  

config.vm.define "production" do |production| 
   production.vm.hostname = "brcleprod004.brcl.com" 
end

假設我們有一臺新的生產伺服器,需要安裝 SSL 實用程式。我們只需要用以下配置擴充套件舊的清單。

node 'brcleprod004.brcl.com' inherits 'brcleloacl003.brcl.com' { 
   package { ['SSL'] : 
      ensure => latest 
   } 
} 

在清單檔案中進行配置更改後,我們只需要轉到測試目錄並執行基本的 vagrant up 命令,這將啟動 **brclelocal003.brcl.com** 和 **brcleprod004.brcl.com** 機器。在本例中,我們嘗試啟動生產機器,這可以透過執行 **vagrant up production 命令** 來完成。這將建立一個名為 production 的新機器(如 Vagrant 檔案中定義),並在其中安裝 SSL 包。

廣告