Scripting
為什麼在 shell 腳本上使用 Chef/Puppet?
Puppet 和 Chef 工具的新功能。似乎他們正在做的工作可以通過 shell 腳本來完成。也許在這些出現之前,它是在 shell 腳本中完成的。
我同意它們更具可讀性。但是,除了可讀性之外,與 shell 腳本相比還有其他優點嗎?
特定領域的語言對您編寫的程式碼量有很大影響。例如,您可以爭辯說:
chmod 640 /my/file
和
file { "/my/file": mode => 640, }
但是這些之間有很大的區別:
FILE=/my/file chmod 640 $FILE chown foo $FILE chgrp bar $FILE wget -O $FILE "http://my.puppet.server/dist/$FILE" # where the URL contains "Hello world"
和
file { "/my/file": mode => 640, owner => foo, group => bar, content => "Hello world", }
如果 wget 失敗會發生什麼?您的腳本將如何處理?如果在你的腳本中之後有一些東西需要 $FILE 具有正確的內容,會發生什麼?
您可能會爭辯說,可以只放入
echo "Hello world" > $FILE
腳本,除了在第一個範例中,腳本必須在客戶端上執行,而 puppet 在伺服器上編譯所有這些。因此,如果您更改內容,您只需在伺服器上更改它,它會針對您想要放置的任意數量的系統進行更改。puppet 會自動為您處理依賴關係和傳輸問題。沒有可比性 - 適當的配置管理工具可以節省您的時間和復雜性。您嘗試做的越多,shell 腳本就越顯得不夠用,而使用 puppet 執行它會節省更多的精力。