在「基礎架構即程式碼」這本書裡看到 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
這樣就可以對主機進行檢查了。
想法
- 個人不太喜歡 Ruby ,但 spec 的寫法的確很簡潔。日後若要使用,勢必要再對 ruby熟悉一些。
- Ansible 應該可以使用 check mode ,也就是 playbook 單純描述預期的狀態,執行 ansible-playbook 時,可以帶入
--check
與--diff
來做到類似的功能。
沒有留言:
張貼留言