Scripting

為什麼在 shell 腳本上使用 Chef/Puppet?

  • June 1, 2018

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 執行它會節省更多的精力。

引用自:https://serverfault.com/questions/504070