如何有效操控管理多台 EC2
簡介
近年來有許多企業看準雲端的優勢,逐漸投入雲端的懷抱,開始把許多服務透過雲端部署,除了享受雲端帶來的便利,同時也會有另一個問題產生,當機器越來越多台的時候,管理人員不太可能一台一台去做管理,就像是當企業員工越來越多時,人資要如何有效去管理,查看每個人的出缺勤紀錄呢?這個時候就需要一個幫助企業可以集中管理資源的工具,而在 AWS 裡可以透過 SSM 來達到這件事情。
AWS Systems Manager (SSM) 是一個集中管理 AWS 資源的服務,幫助使用者清楚掌握資源運作的狀況,且能執行 AWS 資源自動化處理,對於使用者來說,在管理上面擁有非常大的效益,可滿足合規及安全的要求。
在 AWS SSM 服務下有分成 營運管理、應用程式管理、動作與變更、Instance 和節點及共享資源 等五個面向的功能,在 Instance 和節點 的操作下,有以下重點功能:
-
Managed Instance: 可以看到透過 AWS SSM 管理的 EC2 Instance(需要在 Instance 上安裝 SSM Agent)。
-
Session Manager: 不需要透過 SSH、Bastion Server 連線至 EC2,透過 HTTPS 協定連線至 EC2,幫助企業有效控管 Instance 存取權限。
如果想知道如何透過 Session Manager 連線至 EC2,可詳看此篇文章—連線至 EC2 的三種方法與比較 – SSH、EC2 Instance Connect、System Manager。
-
State Manager: 透過自動化程序讓 Instance 維持在定義的狀態,可定期去追蹤 Instance 是否有依照設置狀態下執行。
-
Patch Manager: 自動修補 Instance 系統及應用程式的更新。
-
Run Command: 以遠端的方式,透過 Command 安全地管理 Instance 的設定。
本文會以 Run Command 為主,去探討 AWS SSM 能夠協助什麼地方。
前置作業
首先準備一台 EC2 ,此台 EC2 必須要具有 AWS SSM 權限及安裝 SSM Agent:
- SSM Agent 是一個 Amazon 軟體,如要使用 SSM 服務就必須要安裝, 部分 EC2 預設已經安裝 SSM Agent,詳請請洽官方文件。
如何在開機前事先安裝 SSM Agent,可以在創建 EC2 時,透過 User Data 達到此目的。
- 如果該機器未安裝 SSM Agent,即可透過 User Data 或是進到 EC2 下達 CLI 指令。
設置方法
請務必準備好 AWS 帳號與具有 SSM 權限和 SSM Agent 的 EC2
- 首先,可以到 AWS SSM 控制台,在左側導覽格,選擇
Managed Instances
,即可看到有安裝 EC2 Agent 的 EC2 狀態
-
假設今天想要透過 Command 一次對多台的 EC2 做軟體升級或是更改配置,所以這個時候就可以透過 Run Command 來達到此目的,不須 ssh 連線到每一台機器裡面去做操作。
-
在 AWS SSM 控制台中,在左側導覽格中選擇 Run Command。
-
然後選擇 Run a command 中,會看到許多官方預設提供的 Command document,在每個文件中,都會載明適用於哪些系統,像是 Linux、Windows⋯等。
-
在此範例使用 AWS-RunShellScript Command document.
- 接下來要來選擇要對哪幾台 EC2 去做操作,這裡會看到有三種方法。
- Specify instance tags,指的是 EC2 有設置 Tag, 使用者可以選擇對有這個 Tag 的 EC2 做操作。
- Choose instances manually,代表使用者可以選擇目前 Running EC2 做操作。 > 注意:這些 Running 的 EC2 都必須要安裝 SSM Agent 及擁有 SSM Role 才能操作。
-
Choose a resource group,意指可以選取是先建立好的 resource group。
使用者可以透過 SSM Console 左側導覽格看到 Resource Group,使用可以事先選取幾個 Instance 群組化。
-
接下來要在 Commands 的部分,貼上要下的指令:
- 使用者也可以選擇將 Command Output 推到 S3 Bucket 或是 CloudWatch log。
- 同時也能將 Command Status 透過 SNS 發送通知。
-
設定完成後即可按下 Run。
-
這時候就在控制台畫面看到 Run Command 的結果,像是執行成功、失敗或 Timeout 以及 Instance 數量。
總結
使用者能透過 SSM 運行 Run Command 大幅提升了 EC2 的方便性及安全性,這有助於團隊簡化維護流程,讓使用者輕鬆自動化執行常見的動作,像是程式安裝、更改設定檔⋯等等。且可與 AWS Identity and Access Management (IAM) 整合,加以控制使用者可對 Instance 執行的動作,AWS CloudTrail 會記錄透過 Systems Manager 採取的所有動作,有效快速稽核整個環境的變更。