使用 Chef 部署勾點 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Chef 部署勾點

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

部署的自訂方式是實作自訂配方來執行所需任務,並將它指派給適當 layer 的部署事件。另一種,有時更簡單的方法-特別是如果您不需要實現其他目的的食譜-是使用 Chef 部署掛鉤來運行自定義代碼。此外,自訂部署配方會在內建配方已執行部署之後執行。部署勾點可讓您在部署期間互動,例如,從儲存庫簽出應用程式碼之後,但在重新啟動 Apache 之前。

Chef 會以四個階段部署應用程式:

  • 出庫 — 從存放庫下載檔案

  • 轉 — 視需要執行移轉

  • 符號連結-建立符號連結

  • 重啟 — 重新啟動應用程式

Chef 部署勾點提供一種簡單的方法,選擇性地在每個階段完成之後執行使用者所提供的 Ruby 應用程式來自訂部署。若要使用部署勾點,請實作一或多個 Ruby 應用程式,並將它們放入您應用程式的 /deploy 目錄中 (如果您的應用程式沒有 /deploy 目錄,則請在 APP_ROOT 層級建立該目錄)。應用程式必須具有下列其中一個名稱,以決定其何時執行。

  • before_migrate.rb 是在 Checkout (簽出) 階段完成之後但在 Migrate (遷移) 之前執行。

  • before_symlink.rb 是在 Migrate (遷移) 階段完成之後但在 Symlink (符號連結) 之前執行。

  • before_restart.rb 是在 Symlink (符號連結) 階段完成之後但在 Restart (重新啟動) 之前執行。

  • after_restart.rb 是在 Restart (重新啟動) 階段完成之後執行。

Chef 部署勾點使用標準節點語法,即可存取節點物件,就像配方一樣。部署勾點也可以存取您所指定之任何應用程式環境變數的值。不過,您必須使用 new_resource.environment["VARIABLE_NAME"] 存取變數的值,而不是 ENV["VARIABLE_NAME"]