在 Linux 堆疊上使用搜尋 - AWS OpsWorks

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

在 Linux 堆疊上使用搜尋

重要

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

此範例根據具有單一 PHP 應用程式伺服器的 Linux 堆疊。它使用 Chef 搜尋取得伺服器的公有 IP 地址,並將地址放入 /tmp 目錄的檔案中。它基本上會從節點物件擷取相同的資訊 (如直接取得屬性值 所述),但程式碼更為簡單,而且不是取決於堆疊組態和部署屬性結構的詳細資訊。

以下簡短地彙總如何針對此範例建立堆疊。如需詳細資訊,請參閱 建立新的堆疊

注意

如果您之前尚未在 AWS OpsWorks Stacks 實體上執行自訂方案,則應先檢視在 Linux 執行個體上執行配方範例。

建立堆疊
  1. 開啟 AWS OpsWorks Stacks 主控台,然後按一下 Add Stack (新增堆疊)

  2. 指定下列設定,並接受其他設定的預設值,然後按一下 Add Stack (新增堆疊)

    • 名稱 — 搜索

    • 預設安全殼層金鑰 — Amazon EC2 key pair

    如果您需要建立 Amazon EC2 key pair,請參閱 Amazon EC2 金鑰配對。請注意,金鑰對必須屬於與執行個體相同的 AWS 區域。此範例使用美國西部 (奧勒岡) 區域。

  3. 一下 [新增圖層],並使用預設設定將 PHP 應用程式伺服器層新增至堆疊。

  4. 新增全年無休執行個體 (具有預設設定) 至 layer,以及啟動它

設定技術指南
  1. opsworks_cookbooks 內建立並導覽至名為 searchjson 的目錄。

  2. 使用下列內容建立 metadata.rb 檔案,並將它儲存至 opstest

    name "searchjson" version "0.1.0"
  3. recipes 內建立 searchjson 目錄。

  4. 使用下列配方建立 default.rb 檔案,並將它儲存至 recipes 目錄。

    phpserver = search(:node, "layers:php-app").first Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********") file "/tmp/ip_addresses" do content "#{phpserver[:ip]}" mode 0644 action :create end

    Linux 堆疊僅支援 node 搜尋索引。配方會使用此索引來取得 php-app layer 中的執行個體清單。因為 layer 已知只有一個執行個體,所以配方只需要將第一個執行個體指派給 phpserver。如果 layer 具有多個執行個體,您可以列舉它們以擷取所需資訊。每個清單項目都是一個雜湊表,其中包含一組執行個體屬性。ip 屬性設定為執行個體的公有 IP 地址,因此您可以將後續配方程式碼中的該地址呈現為 phpserver[:ip]

    將訊息新增至 Chef 日誌之後,配方接著會使用 file 資源來建立名為 ip_addresses 的檔案。content 屬性設定為以字串呈現 phpserver[:ip]。Chef 建立 ip_addresses 時,會將該字串新增至檔案。

  5. 建立.zip存檔opsworks_cookbooks將存檔上傳到 Amazon S3 儲存貯體、公開存檔,並記錄存檔的 URL。如需技術指南儲存庫的詳細資訊,請參閱技術指南儲存庫

    傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?如何刪除 S3 儲存貯體?

您現在可以安裝技術指南,並執行配方。

執行配方
  1. 編輯堆疊以啟用自訂技術指南,然後指定下列設定。

    • 存儲庫類型-HTTP 存檔

    • 儲存庫 URL — 您之前錄製的食譜封存網址

    針對其他設定使用預設值,然後按一下 Save (儲存) 以更新堆疊組態。

  2. 編輯自訂圖層組態並指派searchjson::default給圖層的 Setup 事件。 AWS OpsWorks 堆疊會在執行個體開機後執行方案,或者如果您明確觸發安裝程式事件。

  3. 執行更新自訂技術指南堆疊命令,以在堆疊執行個體上安裝最新版的自訂技術指南儲存庫。如果存在舊版的儲存庫,則此命令會予以覆寫。

  4. 執行 Setup (安裝) 堆疊命令來執行配方,這會在執行個體上觸發安裝事件,並執行 searchjson::default。保留 Running command setup page (執行命令安裝頁面) 的開啟狀態。

成功執行配方之後,您就可以驗證配方。

驗證 searchjson
  1. 第一步是檢查 Chef 日誌中的最新安裝事件。在 [執行中命令設定] 頁面上,按一下 php-app1 執行個體的 [記錄檔] 資料行中的 [示],以顯示記錄。向下捲動以在接近中間的位置找到您的日誌訊息,這看起來與下列類似。

    ... [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] WARN: Current bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'********** [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1) ...
  2. 使用 SSH 登入執行個體,並列出 /tmp 的內容,其中應該包括名為 ip_addresses 且包含 IP 地址的檔案。