本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Linux 堆疊上使用搜尋
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
此範例是以具有單一PHP應用程式伺服器的 Linux 堆疊為基礎。它使用 Chef 搜尋取得伺服器的公有 IP 地址,並將地址放入 /tmp
目錄的檔案中。它基本上會從節點物件擷取相同的資訊 (如直接取得屬性值 所述),但程式碼更為簡單,而且不是取決於堆疊組態和部署屬性結構的詳細資訊。
以下簡短地彙總如何針對此範例建立堆疊。如需詳細資訊,請參閱建立新的堆疊。
注意
如果您尚未在上執行自訂配方 AWS OpsWorks 堆棧實例之前,你應該先通過這個在 Linux 執行個體上執行配方例子。
建立堆疊
-
開啟 AWS OpsWorks 堆疊主控台
,然後按一下新增堆疊 -
指定下列設定,並接受其他設定的預設值,然後按一下 Add Stack (新增堆疊)。
-
名稱 — 搜尋 JSON
-
默認SSH密鑰-Amazon EC2 key pair
如果您需要建立 Amazon EC2 key pair,請參閱 Amazon EC2 金鑰配對。請注意,key pair 必須屬於與執行個體相同的AWS區域。此範例使用美國西部 (奧勒岡) 區域。
-
-
按一下 [新增圖層],然後使用預設設定將PHP應用程式伺服器層新增至堆疊。
-
新增全年無休執行個體 (具有預設設定) 至 layer,以及啟動它。
設定技術指南
-
在
opsworks_cookbooks
內建立並導覽至名為searchjson
的目錄。 -
使用下列內容建立
metadata.rb
檔案,並將它儲存至opstest
。name "searchjson" version "0.1.0"
-
在
recipes
內建立searchjson
目錄。 -
使用下列配方建立
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
時,會將該字串新增至檔案。 -
建立
.zip
存檔opsworks_cookbooks
、將存檔上傳到 Amazon S3 儲存貯體、公開存檔,然後記錄存檔URL。如需技術指南儲存庫的詳細資訊,請參閱技術指南儲存庫。傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?或如何刪除 S3 儲存貯體?。
您現在可以安裝技術指南,並執行配方。
執行配方
-
編輯堆疊以啟用自訂技術指南,然後指定下列設定。
-
存儲庫類型-HTTP 存檔
-
存儲庫 URL-您之前記錄的食譜存檔 URL
針對其他設定使用預設值,然後按一下 Save (儲存) 以更新堆疊組態。
-
-
編輯自訂 layer 組態,並指派 searchjson::default 給 layer 的安裝事件。 AWS OpsWorks 堆疊會在執行個體開機後執行方案,或者如果您明確觸發 Setup 事件。
-
執行更新自訂技術指南堆疊命令,以在堆疊執行個體上安裝最新版的自訂技術指南儲存庫。如果存在舊版的儲存庫,則此命令會予以覆寫。
-
執行 Setup (安裝) 堆疊命令來執行配方,這會在執行個體上觸發安裝事件,並執行
searchjson::default
。保留 Running command setup page (執行命令安裝頁面) 的開啟狀態。
成功執行配方之後,您就可以驗證配方。
驗證 searchjson
-
第一步是檢查 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) ...
-
用SSH於登入執行個體並列出的內容
/tmp
,其中應包含名為包ip_addresses
含 IP 位址的檔案。