
- Puppet 教程
- Puppet - 首頁
- Puppet 基礎
- Puppet - 概述
- Puppet - 架構
- Puppet - 安裝
- Puppet - 配置
- Puppet - 環境配置
- Puppet - Master
- Puppet - Agent 設定
- Puppet - SSL 證書設定
- 安裝和配置 r10K
- Puppet - 驗證設定
- Puppet - 程式碼風格
- Puppet - 清單檔案
- Puppet - 模組
- Puppet - 檔案伺服器
- Puppet - Facter 和事實
- 高階 Puppet
- Puppet - 資源
- Puppet - 資源抽象層
- Puppet - 模板
- Puppet - 類
- Puppet - 函式
- Puppet - 自定義函式
- Puppet - 環境
- Puppet - 型別和提供程式
- Puppet - RESTful API
- Puppet - 即時專案
- Puppet 有用資源
- Puppet - 快速指南
- Puppet - 有用資源
- Puppet - 討論
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 包。