iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 27
0
DevOps

Ops 的轉職之路 - Puppet 從入門就放棄系列 第 27

Day 27 - Puppet 的測試工具

本系列文資料可參考以下:

既然 Puppet 手握整個 infrastructure 的生殺大權,那麼 Puppet 的設定會是一整間公司的命脈,萬一寫錯某個>設定可能就會造成專案無法運作,嚴重甚至整間公司都發生問題。

事前的測試將會是預防發生錯誤最好的方法,由於是 Code,所以我們可以用測試工具來寫 Test case,目前應用到
的主流工具:


puppet-lint

puppet-lint 是用來測試 puppet code 的 coding style 套件,內建許多 puppet 應該要遵守的 style guide

除了檢測以外,puppet-lint 還可以直接替你 fix 有格式不正確的部份,自動調整格式或是補上該有的字元。

puppet-lint 可以直接用 gem 安裝

$ gem install puppet-lint

拿去餵 module 的路徑就可以測。

$ puppet-lint /etc/puppet/modules

rspec-puppet

Unit test 最推薦的測試工具,這算是單機測試中最重要的一環,

gem 安裝 rspec-puppet

$ gem install rspec-puppet

範例 rspec-puppet 的作法

# role_spec.rb
require 'spec_helper'

describe 'role::base' do
  context 'with defaults for all parameters' do
    let(:facts) { global_facts }
    it do
      should contain_class('profile::base')
      should contain_class('profile::users')
    end
  end
end

這個範例會測試有 include 以下 class

  • include profile::base
  • include profile::user

beaker-rspec

rspecbeaker 的橋樑,同時也集成 serverspec

beaker

acceptance test 驗收測試是所有測試中的最後一環,對於 Puppet 中非常重要,因為 Puppet 提供多種不同 OS 環境的支援,但 Unit Test 僅能測試 function,但不同的環境上仍有疑慮,beaker 可以讓你在多個虛擬環境中執行命令來進行 puppet 實際的佈署。

gem 安裝 beaker

$ gem install beaker

serverspec

serverspec 則是用來啟動虛擬環境,支援 DockerVagrant 來處理虛擬環境。

gem 安裝 serverspec

$ gem install serverspec

上述這三個 Test case tools 是目前在 Puppet 上最主流的工具,能夠應付目前所有的測試。

若整個 infrastructure 也能 100% 測試,那麼還擔心你的環境出錯嗎 ?


上一篇
Day 26 - 讓 Puppet 進版控吧!
下一篇
Day 28 - 備份與還原
系列文
Ops 的轉職之路 - Puppet 從入門就放棄30

尚未有邦友留言

立即登入留言