星期六, 10月 21, 2023

serverspec

在「基礎架構即程式碼」這本書裡看到 serverspec 這個工具,是 rspec 的延伸,主要是檢查是否合乎規格,但對象換成了主機,而不是程式。

以下安裝都是在 Ubuntu 22.04 上進行,首先要安裝 ruby

sudo apt install ruby bundler

接著要透過 gem 來安裝 serverspec ,使用 gem install 預設是安裝到系統 /usr/local ,但我不想這樣,我希望是安裝到自己使用者目錄下,這時候可以用 –user-install

gem install serverspec --user-install

這樣就安裝完成了。

接下來建立一個目錄,作為工作區,然後初始化 serverspec 專案

mkdir -p work
serverspec-init

這時候會詢問主機的資訊

Select OS type:

  1) UN*X
  2) Windows

Select number: 1

Select a backend type:

  1) SSH
  2) Exec (local)

Select number: 1

Vagrant instance y/n: n
Input target host name: www.example.jp

主機規格描述,是放在 spec/www.example.jp/sample_spec.rb

所以就編輯這個檔案就可以。

連線到主機,是使用 SSH,這邊若是不想輸入密碼,就要把 public key 複製過去

ssh-copy-id user@www.example.jp

登入使用者不一樣,是要調整 spec/spec_helper.rb 裡的 user。

要進行測試,就執行

rake spec

這樣就可以對主機進行檢查了。

想法

  1. 個人不太喜歡 Ruby ,但 spec 的寫法的確很簡潔。日後若要使用,勢必要再對 ruby熟悉一些。
  2. Ansible 應該可以使用 check mode ,也就是 playbook 單純描述預期的狀態,執行 ansible-playbook 時,可以帶入 --check--diff 來做到類似的功能。

參考資料

沒有留言: