SaltStack的多雲管理解決方案——Salt Cloud故障排查步驟

本文介紹了各種步驟,用於對使用Salt Cloud時可能出現的問題進行故障排除。

您也可以參考在Github上維護的這一份技術資料:Troubleshooting Salt Cloud

Virtual Machines Are Created, But Do Not Respond - 虛機已經創建出來了,但是沒有響應

Master服務器上是否打開了TCP端口4505和4506? 這對於新手很容易被忽略。 可以在此處找到有關如何在各種平臺上打開防火牆端口的信息。

Generic Troubleshooting Steps - 常規的故障排查步驟

本節描述了一組說明,這些說明對許多情況都有用,並且可能解決大多數出現的問題。

Debug Mode - 使用調試模式

通常,以調試模式運行Salt Cloud會顯示有關部署的信息,否則這些信息就不是那麼明顯:

salt-cloud -p myprofile myinstance -l debug

請記住,將會出現許多消息,這些消息首先看起來像是錯誤,但實際上是爲了向開發人員提供實際信息,以幫助調試。 如果您尚未配置的雲平臺驅動程序,那麼會得到一組相關的消息。 在這種情況下,該消息通常旨在確認未配置它們。

Salt Bootstrap - 更新部署腳本

默認情況下,Salt Cloud使用Salt Bootstrap腳本來部署實例:

該腳本與Salt Cloud打包在一起,但是可以在不更新Salt包的情況下對該腳本進行更新:

salt-cloud -u

The Bootstrap Log - 查看部署日誌

如果使用了默認的部署腳本,則/tmp/目錄中應該有一個名爲bootstrap-salt.log的文件。 該文件包含部署的完整輸出,包括可能發生的任何錯誤。

Keeping Temp Files - 保留臨時文件

一旦通過SSH服務可以訪問了,Salt Cloud便會將特定於minion的文件上傳到實例,然後執行一個部署腳本以將它們分發到正確的位置並安裝Salt。 --keep-tmp選項將指示Salt Cloud完成工作任務不要刪除這些文件,以便用戶可以檢查它們是否存在問題:

salt-cloud -p myprofile myinstance --keep-tmp

默認情況下,Salt Cloud將在目標實例上創建一個名爲/tmp/.saltcloud/的目錄。 該目錄應該由要執行部署腳本的用戶所有,並且應該具有0700的權限。

大多數雲主機被配置爲使用root作爲默認的初始部署用戶,因此,該目錄及其中的所有文件都應由root用戶擁有。

/tmp/.saltcloud/目錄應包含以下文件:

  • 一個deploy.sh腳本。 該腳本應具有0755的權限。
  • 以minion命名的.pem.pub密鑰。 .pem文件應具有0600的權限。確保已將.pem.pub文件正確複製到實例的/etc/salt/pki/minion/目錄。
  • 一個名爲minion的文件。 該文件應該已經複製到/etc/salt/目錄中。
  • 可選地,一個稱爲grains的文件。 該文件(如果存在)應該已經複製到/etc/salt/目錄中。

Unprivileged Primary Users - 非特權的基礎用戶

一些雲主機(最著名的是EC2)配置了不同的基礎用戶。 ec2-userubuntufedorabitnami是一些常見的示例。 在這些情況下,/tmp /.saltcloud/目錄及其中的所有文件應歸該用戶所有。

一些雲主機(例如EC2)被配置爲在使用sudo命令時不要求這些用戶提供密碼。 因爲要求sudo用戶提供密碼更安全,所以可以用這種方式配置其他主機。

如果需要此實例提供密碼,則需要在Salt Cloud中對其進行配置。 可以將sudo使用的密碼添加到驅動程序配置或雲主機配置文件中:

sudo_password: mypassword

/tmp/ is Mounted as noexec

使用noexec選項掛載/tmp/目錄更加安全。 這在大多數雲主機上並不常見,但在私有環境中非常普遍。 要查看是否以這種方式掛載/tmp/目錄,請運行以下命令:

mount | grep tmp

如果此命令的輸出包含如下所示的行,則/tmp/目錄將掛載爲noexec

tmpfs on /tmp type tmpfs (rw,noexec)

如果是這種情況,則需要更改deploy_command才能通過sh命令運行deploy腳本,而不是嘗試直接執行它。 這可以在驅動程序或profile配置文件配置中指定:

deploy_command: sh /tmp/.saltcloud/deploy.sh

請注意,默認情況下,Salt Cloud會將其文件放置在名爲/tmp/.saltcloud/的目錄中。 也可以在驅動程序或profile配置文件配置中對此進行更改:

tmp_dir: /tmp/.saltcloud/

如果更改了該目錄,則也需要更改deploy_command以反映tmp_dir配置。

Executing the Deploy Script Manually - 手動執行部署腳本

如果部署所需的所有文件都已成功上傳到正確的位置,並且包含正確的權限和所有權,則可以手動執行部署腳本,以檢查是否還存在其他問題:

cd /tmp/.saltcloud/
./deploy.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章