Ansible 是一款易於上手的自動化工具,結合 AWS 雲端服務,能有效簡化雲端資源的組態與管理流程。本文除了探討 Ansible 與 AWS 整合的優勢,更著重於實務操作,提供讀者清晰的步驟與程式碼範例,涵蓋 VPC 建立、EC2 例項管理等核心應用,並深入淺出地解釋程式碼的關鍵設定,讓即使不熟悉 Ansible 的開發者也能快速掌握 Ansible 在 AWS 雲端環境中的應用技巧,提升工作效率。

Ansible 與 AWS 的整合應用:雲端基礎設施自動化管理

隨著雲端運算技術的快速發展,企業對於基礎設施的管理需求日益增加。Ansible 作為一種簡單易用的自動化工具,與 Amazon Web Services(AWS)結合,能夠實作高效的雲端資源管理與自動化佈署。本文將探討如何使用 Ansible 進行 AWS 資源的組態與管理。

為什麼選擇 Ansible 與 AWS?

自 1993 年 Mark Burgess 發起 CFEngine 專案以來,組態管理工具不斷革新 IT 維運流程。隨後,Puppet 和 Chef 相繼崛起,為 IT 自動化提供了更多選擇。而 Ansible 於 2012 年首次發布,憑藉其簡單易用和低學習曲線的特點,在眾多工具中脫穎而出。

AWS 自 2006 年開始提供 IT 基礎設施服務,以雲端運算的形式革新了傳統的基礎設施管理方式。透過雲端運算,企業可以將前期資本支出轉化為隨業務規模變化的低變動成本,無需提前數周或數月規劃和採購伺服器,而是可以在幾分鐘內快速啟動數百甚至數千台伺服器。

Ansible 在 AWS 中的應用

本將展示如何利用 Ansible 的雲端模組輕鬆組態和管理 AWS 資源,包括 EC2、VPC、RDS、S3、ELB、Auto Scaling、IAM 和 Route 53。透過真實世界的範例,詳細步驟和完整的程式碼,讀者能夠快速掌握使用 Ansible 進行 AWS 基礎設施自動化管理的方法。

VPC 組態與管理

虛擬私有雲(VPC)是 AWS 中的關鍵元件。Ansible 可用於建立和管理 VPC,包括子網、安全組和路由表的組態。

---
- name: Create VPC
  hosts: localhost
  tasks:
    - name: Create a VPC
      ec2_vpc_net:
        name: my-vpc
        cidr_block: 10.0.0.0/16
        region: us-west-2
        state: present
      register: vpc

內容解密:

  • ec2_vpc_net 模組用於建立 VPC。
  • namecidr_block 分別指定了 VPC 的名稱和 CIDR 區塊。
  • region 指定了 VPC 所在的區域。
  • state: present 確保 VPC 處於存在狀態。

EC2 例項管理

Ansible 也可用於建立和管理 EC2 例項,包括例項的啟動、停止和終止。

---
- name: Launch EC2 Instance
  hosts: localhost
  tasks:
    - name: Launch an EC2 instance
      ec2:
        key_name: my-keypair
        instance_type: t2.micro
        image_id: ami-0c94855ba95c71c99
        region: us-west-2
        vpc_subnet_id: subnet-12345678
        group_id: sg-12345678
        state: present

內容解密:

  • ec2 模組用於建立和管理 EC2 例項。
  • key_nameinstance_typeimage_id 分別指定了例項的金鑰對、例項型別和映像 ID。
  • regionvpc_subnet_idgroup_id 分別指定了例項所在的區域、子網 ID 和安全組 ID。
  • state: present 確保例項處於執行狀態。

AWS 基礎介紹與入門

Amazon Web Services(AWS)提供了一系列可擴充套件的雲端運算服務,讓開發者能夠在幾分鐘內建立應用程式,並且只需支付使用的費用。本章節將介紹如何設定 AWS 帳戶、建立第一個 EC2 例項,並使用 SSH 連線到該例項。

什麼是 Amazon Web Services(AWS)?

AWS 提供運算資源和服務,讓使用者能夠在幾分鐘內建立應用程式,並按照使用量付費。使用者可以租用 AWS 上的虛擬伺服器,進行組態、安全設定和執行,就像操作實體伺服器一樣。不同的是,這些虛擬伺服器執行在由 AWS 管理的全球網路上。

主要特點

  • 隨用隨付:只需為正在執行的虛擬伺服器付費,無需預付費用或持續維護成本。
  • 自動擴充套件:當應用程式需求增加時,虛擬伺服器可以自動擴充套件成多個伺服器。
  • 成本效益:相比於本地佈署,使用 AWS 可以節省高達 80% 的成本。

AWS 功能分類別

AWS 提供了多種服務,涵蓋不同功能領域,例如運算、儲存、資料函式庫、網路等。每個類別中都有多項服務,例如 AWS 提供了五種資料函式庫服務,每種都針對特定用途進行了最佳化。

常用的 AWS 服務

本文將重點介紹以下基礎服務類別中的 AWS 服務:

  • EC2(Elastic Compute Cloud):彈性雲端運算服務,用於建立和管理虛擬伺服器。
  • VPC(Virtual Private Cloud):虛擬私有雲,用於建立隔離的網路環境。
  • RDS(Relational Database Service) :關聯式資料函式庫服務,用於建立和管理資料函式庫。
  • S3(Simple Storage Service):簡單儲存服務,用於儲存和檢索資料。
  • ELB(Elastic Load Balancing):彈性負載平衡,用於分配流量到多個例項。
  • Auto Scaling:自動擴充套件服務,用於根據需求動態調整例項數量。
  • Route 53:DNS 網域名稱系統服務,用於管理網域名稱解析。

#### 內容解密:

上述 AWS 服務共同構成了強大的雲端基礎設施,能夠支援各種規模的應用程式。透過這些服務,使用者可以建立高用性、可擴充套件和安全的應用架構。

入門

要開始使用 AWS,首先需要:

  1. 註冊 AWS 帳戶:存取 AWS 官方網站並註冊帳戶。
  2. 設定帳戶:完成帳戶設定,包括信用卡註冊等步驟。
  3. 熟悉 AWS 控制檯:瞭解 AWS 管理控制檯的基本操作。
  4. 建立第一個 EC2 例項:按照建立第一個虛擬伺服器。
  5. 使用 SSH 連線 EC2 例項:學習如何安全地連線到虛擬伺服器。

圖表翻譯:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Ansible 自動化 AWS 雲端資源管理

package "Ansible 架構" {
    component [Control Node] as control

    package "Ansible 組件" {
        component [Inventory] as inventory
        component [Playbooks] as playbooks
        component [Roles] as roles
        component [Modules] as modules
    }

    package "Managed Nodes" {
        component [Web Server] as web
        component [DB Server] as db
        component [App Server] as app
    }
}

control --> inventory : 主機清單
control --> playbooks : 任務定義
playbooks --> roles : 引用角色
roles --> modules : 使用模組
control --> web : SSH 連線
control --> db : SSH 連線
control --> app : SSH 連線

note right of control
  無需在目標主機安裝 Agent
  透過 SSH 執行任務
end note

@enduml

此圖示展示了開始使用 AWS 的基本步驟,從註冊帳戶到連線第一個虛擬伺服器。

圖表翻譯:

本圖表展示了使用 AWS 的初始步驟,包括註冊、設定、熟悉控制檯、建立 EC2 例項以及使用 SSH 連線。這些步驟為後續的雲端運算操作奠定了基礎。

AWS 雲端服務入門

彈性運算服務:EC2

Amazon Elastic Compute Cloud(EC2)是一種提供可調整運算能力的雲端服務,旨在簡化開發者的網頁規模運算。EC2 提供簡單的網路服務介面,讓使用者能夠以最小的摩擦取得並組態運算資源。使用者對運算資源具有完全的控制權,並且可以在 Amazon 經驗證的運算環境中執行。

EC2 能夠在幾分鐘內取得並啟動新的伺服器例項,讓使用者能夠根據運算需求快速擴充套件或縮減容量。由於 EC2 採用按需付費的模式,使用者只需支付實際使用的容量,因此能夠降低運算成本。此外,EC2 提供了開發工具,幫助開發者建立具備容錯能力的應用程式,並隔離常見的故障情況。

內容解密:

EC2 的主要特點包括:

  • 可根據需求快速擴充套件或縮減運算資源
  • 提供完整的運算資源控制權
  • 採用按需付費模式,降低成本
  • 提供容錯能力與故障隔離機制

虛擬私有雲:VPC

Amazon Virtual Private Cloud(VPC)允許使用者在 Amazon Web Services(AWS)雲端中建立一個邏輯隔離的部分,在此部分中,使用者可以在自定義的虛擬網路中啟動 AWS 資源。使用者對虛擬網路環境具有完全的控制權,包括選擇自己的 IP 位址範圍、建立子網路,以及組態路由表和網路閘道。

VPC 允許使用者自定義網路組態,以滿足特定的需求。例如,使用者可以為網站伺服器建立一個具有 Internet 存取許可權的公用子網路,並將後端系統(如資料函式庫或應用伺服器)放置在沒有 Internet 存取許可權的私有子網路中。使用者可以利用多層安全機制,包括安全群組和網路存取控制清單,來控制對 EC2 例項的存取。

內容解密:

VPC 的主要特點包括:

  • 提供邏輯隔離的虛擬網路環境
  • 允許自定義 IP 位址範圍、子網路和路由表
  • 提供多層安全機制,確保資源安全

關聯式資料函式庫服務:RDS

Amazon Relational Database Service(RDS)是一種能夠輕鬆設定、操作和擴充套件雲端關聯式資料函式庫的網路服務。RDS 提供具成本效益且可調整的容量,同時管理耗時的資料函式倉管理工作,讓使用者能夠專注於應用程式和業務。

RDS 支援多種熟悉的資料函式庫引擎,包括 MySQL、Oracle、Microsoft SQL Server 和 PostgreSQL。這意味著使用者現有的程式碼、應用程式和工具可以與 RDS 無縫整合。RDS 自動修補資料函式庫軟體並備份資料函式庫,將備份儲存在使用者定義的保留期間內,並支援時間點還原。

內容解密:

RDS 的主要特點包括:

  • 簡化資料函式庫設定、操作和擴充套件
  • 提供具成本效益且可調整的容量
  • 自動修補和備份資料函式庫
  • 支援多種熟悉的資料函式庫引擎

簡單儲存服務:S3

Amazon S3 是為網際網路設計的儲存服務,旨在簡化開發者的網頁規模運算。S3 提供簡單的網路服務介面,讓使用者能夠儲存和檢索任意數量的資料,無論何時何地,都可以從網際網路上進行。

S3 為開發者提供了高度可擴充套件、可靠、安全、快速且具成本效益的基礎設施,這與 Amazon 用於執行其全球網站網路的基礎設施相同。S3 旨在最大限度地發揮規模效益,並將這些效益傳遞給開發者。

內容解密:

S3 的主要特點包括:

  • 提供高度可擴充套件和可靠的儲存服務
  • 簡單易用的網路服務介面
  • 高度安全的資料儲存機制
  • 按需付費的計費模式

彈性負載平衡:ELB

Elastic Load Balancing 自動將傳入的應用程式流量分配到多個 EC2 例項,從而提高應用程式的容錯能力。ELB 無縫地提供所需的負載平衡容量,以分配應用程式流量。

ELB 自動擴充套件其請求處理能力,以滿足應用程式流量的需求。此外,ELB 與 Auto Scaling 整合,確保後端容量能夠滿足變化的流量水平,而無需人工干預。

內容解密:

ELB 的主要特點包括:

  • 自動分配傳入的應用程式流量
  • 提供容錯能力和負載平衡
  • 自動擴充套件請求處理能力

網域名稱系統服務:Route 53

Amazon Route 53 是一種高度可用且可擴充套件的 Domain Name System(DNS)網路服務,旨在為開發者和企業提供極為可靠且具成本效益的方式,將終端使用者引導至網際網路應用程式。

Route 53 能夠將使用者請求連線到在 AWS 中執行的基礎設施,例如 EC2 例項、Elastic Load Balancer 或 S3 儲存桶,也可以將使用者引導至 AWS 外部的基礎設施。Route 53 使用全球 DNS 伺服器網路,以低延遲回應 DNS 查詢。

內容解密:

Route 53 的主要特點包括:

  • 提供高度可用且可擴充套件的 DNS 服務
  • 能夠連線使用者請求到 AWS 或非 AWS 基礎設施
  • 使用全球 DNS 伺服器網路,提供低延遲查詢

AWS 全球基礎設施

無論是大型全球公司還是小型新創公司,都可能擁有遍佈全球的潛在客戶。傳統基礎設施難以為廣泛分佈的使用者群體提供良好的效能,而雲端運算改變了這個局面——使用者可以輕鬆地在全球任何或所有 AWS 區域佈署應用程式。

這意味著使用者可以以最小的成本為客戶提供更低的延遲和更好的體驗。

內容解密:

AWS 全球基礎設施的主要特點包括:

  • 提供全球覆寫的雲端服務
  • 能夠輕鬆佈署應用程式到多個區域
  • 提供更低的延遲和更好的客戶體驗

建立AWS帳戶與初次使用

要開始使用Amazon Web Services(AWS),首先需要建立一個AWS帳戶。以下是設定AWS帳戶的步驟:

步驟1:建立AWS帳戶

  1. 開啟網頁瀏覽器,前往http://aws.amazon.com
  2. 點選「Sign In to the Console」按鈕。
  3. 選擇「I am a new user」,輸入電子郵件地址,然後點選「Sign in using our secure server」。

步驟2:填寫帳戶資訊

  1. 輸入姓名、電子郵件地址(再次確認)、密碼(兩次),然後點選「Create account」。
  2. 選擇「Personal Account」或「Company Account」,填寫聯絡資訊,輸入驗證碼,接受AWS客戶協定,然後點選「Securely Submit」。

步驟3:提供付款資訊

  1. 輸入信用卡號碼和帳單地址資訊,然後點選「Continue」。

步驟4:驗證身份

  1. 輸入有效的電話或手機號碼,然後點選「Call Me Now」。
  2. 接聽電話,輸入顯示的PIN碼或口頭報出PIN碼。

步驟5:選擇支援方案

  1. 完成身份驗證後,點選「Continue to select your Support Plan」。
  2. 選擇支援方案,然後點選「Continue」。

完成上述步驟後,您將收到一封確認電子郵件,表示您的AWS帳戶已設定完成。請注意,您已提供信用卡資訊來支付所使用的AWS資源,因此請謹慎使用資源並瞭解各項服務的定價方案。

EC2 定價方案

有關EC2定價的詳細資訊,請參閱http://aws.amazon.com/ec2/pricing

S3 定價方案

有關S3定價的詳細資訊,請參閱http://aws.amazon.com/s3/pricing

AWS免費使用層

初始帳戶註冊提供為期一年的免費使用層。請參閱http://aws.amazon.com/free以瞭解您可以免費使用的服務清單。

AWS費用估算器

Amazon提供了一個線上計算器來估算您的每月AWS帳單。請參閱http://calculator.s3.amazonaws.com/index.html

使用AWS管理主控台

AWS提供了一個根據網頁的管理主控台,讓您能夠透過直觀的介面存取和管理AWS資源。您可以透過主控台執行各種任務,從佈署新應用程式到監控應用程式的健康狀態。

主控台首頁

主控台首頁提供了您AWS資源的概覽。

帳單和成本管理

您可以透過點選右上角帳戶名稱下的「Billing & Cost Management」來檢視每月的帳單。

自訂一鍵導航

您可以自訂選單列上的一鍵導航功能,將常用的服務新增到選單列中。

各服務主控台

每個服務都有自己的主控台,您可以從AWS管理主控台存取這些主控台。例如,EC2主控台用於管理虛擬伺服器。

建立第一個EC2例項

EC2是AWS最廣泛使用的服務,它革新了伺服器的供應方式。讓我們來建立第一個EC2例項。

建立金鑰對

在使用EC2之前,您需要建立一個金鑰對。AWS使用公鑰加密技術來保護您的例項登入資訊。

  1. 開啟Amazon EC2儀錶板。
  2. 從導航列中選擇一個區域。
  3. 點選「Key Pairs」,然後點選「Create Key Pair」。
  4. 輸入金鑰對的名稱,然後點選「Create」。

程式碼範例:建立金鑰對

# 使用AWS CLI建立金鑰對
aws ec2 create-key-pair --key-name yan-key-pair-apsydney --query 'KeyMaterial' --output text > yan-key-pair-apsydney.pem

內容解密:

  • aws ec2 create-key-pair:此命令用於建立新的金鑰對。
  • --key-name yan-key-pair-apsydney:指定金鑰對的名稱。
  • --query 'KeyMaterial':查詢傳回的金鑰材料。
  • --output text:將輸出格式設定為純文字。
  • > yan-key-pair-apsydney.pem:將金鑰材料儲存到名為yan-key-pair-apsydney.pem的檔案中。

請妥善保管您的私鑰檔案,因為這是您登入例項所需的唯一憑證。

在AWS上啟動Linux例項的完整

連線至Linux例項的準備工作

在連線至Linux例項之前,您需要確保私鑰檔案的許可權設定正確,以避免安全風險。對於使用Mac或Linux電腦的使用者,可以使用chmod命令來設定私鑰檔案的許可權。

設定私鑰檔案許可權

$ chmod 400 yan-key-pair-apsydney.pem

此命令確保只有您能夠讀取私鑰檔案,從而提高安全性。

從Windows連線至Linux例項

如果您使用的是Windows電腦,您可以使用PuTTY或MindTerm來連線至Linux例項。下面是使用PuTTY的步驟:

  1. 下載並安裝PuTTY:前往PuTTY官方網站下載並安裝完整的PuTTY套件。
  2. 啟動PuTTYgen:在開始功能表中找到PuTTYgen並啟動它。
  3. 選擇金鑰型別:在「Type of key to generate」下選擇SSH-2 RSA。
  4. 載入金鑰:點選「Load」並選擇您之前建立的私鑰檔案(.pem檔案)。您可能需要將檔案型別設定為「所有檔案」才能看到.pem檔案。
  5. 儲存私鑰:點選「Save private key」並確認您要儲存沒有密碼保護的金鑰。PuTTY會自動新增.ppk副檔名。

使用PuTTYgen轉換私鑰檔案

**圖表翻譯:** 
此圖示顯示了使用PuTTYgen將.pem檔案轉換為.ppk檔案的步驟。

建立安全群組

安全群組(Security Group)作為例項的防火牆,控制進出例項的流量。您需要新增規則以允許從您的IP地址透過SSH連線至例項。

建立安全群組的步驟

  1. 開啟Amazon EC2控制檯並選擇您要建立安全群組的區域。
  2. 在導航窗格中,點選「Security Groups」。
  3. 點選「Create Security Group」並輸入安全群組的名稱和描述。
  4. 在「Inbound」標籤下,新增以下規則:
    • 允許HTTP和HTTPS從任何地方(0.0.0.0/0)存取。
    • 允許SSH從您的IP地址(以CIDR表示法指定,例如203.0.100.2/32)存取。

#### 內容解密:
- HTTP和HTTPS規則允許您的例項接收來自任何IP的網頁流量。
- SSH規則限制只有您的IP地址能夠透過SSH連線至例項,提高了安全性。

啟動例項

啟動例項涉及選擇Amazon Machine Image(AMI)、例項型別和組態安全群組。

啟動例項的步驟

  1. 開啟Amazon EC2控制檯並點選「Launch Instance」。
  2. 選擇64位的Amazon Linux AMI並點選「Select」。
  3. 選擇t2.micro例項型別(免費層資格)並點選「Review and Launch」。
  4. 在「Review Instance Launch」頁面,選擇您之前建立的安全群組。
  5. 點選「Launch」並選擇您之前建立的金鑰對。

#### 內容解密:
- 選擇Amazon Linux AMI作為您的例項範本。
- `t2.micro`例項型別是免費層資格的一部分,適合測試和小規模應用。
- 選擇正確的安全群組以控制例項的流量。

檢視例項狀態

在例項啟動後,您可以在Amazon EC2控制檯的「Instances」畫面檢視其狀態。例項啟動後,其狀態會從「pending」變為「running」,並且會收到一個公有DNS名稱。

檢視例項狀態

**圖表翻譯:** 
此圖示顯示了例項從啟動到執行的狀態變化。