使用 Ansible 自動化部署無服務應用
導讀 | Ansible 被設計為實際工作中的最簡化的部署工具。這意味著它不是一個完整的程式語言。你需要編寫定義任務的 YAML 模板,並列出任何需要自動完成的任務。 |
大多數人認為 Ansible 是一種更強大的“處於 for 循環中的 SSH”,在簡單的使用場景下這是真的。但其實 Ansible 是任務,不是 SSH。在許多情況下,我們透過 SSH 進行連接,但它也支援 Windows 機器上的 Windows 遠端管理(WinRM),以及作為雲端服務的通用語言的 HTTPS API 之類的東西。
在雲端中,Ansible 可以在兩個獨立的層面上操作:控制面和實例資源。控制面由所有沒有運行在作業系統上的東西組成。包括設定網路、新實例、供應更高層級的服務,如亞馬遜的 S3 或 DynamoDB,以及保持雲端基礎設施安全和服務客戶所需的一切。
實例上的工作是你已經知道 Ansible 可以做的:啟動和停止服務、設定檔模版化、安裝軟體包以及透過 SSH 執行的所有與作業系統相關的操作。
現在,什麼是無服務呢?這要看你問誰,無服務要么是對公有雲的無限延伸,或者是一個全新的範例,其中所有的東西都是 API 調用,以前從來沒有這樣做過。
Ansible 採取第一種觀點。在 「無服務」 是專門術語之前,使用者必須管理和配置 EC2 執行個體、虛擬私有雲 (VPC) 網路以及其他所有內容。無服務是託管服務方向邁出的另一步,並且與 Ansible 的無代理體系結構相得益彰。
在我們開始 Lambda 範例之前,讓我們先來看看一個簡單的設定 CloudFormation 堆疊任務:
- name: Build network cloudformation: stack_name: prod-vpc state: present template: base_vpc.yml
編寫這樣的任務只需要幾分鐘,但它是建立基礎架構所涉及的最後的半手動步驟 - 點擊 “Create Stack” - 這將 playbook 與其他放在一起。現在你的 VPC 只是在建立新區域時可以呼叫的另一項任務了。
由於雲端提供者是你帳戶中發生些什麼的真相來源,因此 Ansible 有許多方法來取回並使用 ID、名稱和其他參數來過濾和查詢運行的實例或網路。以 cloudformation_facts 模組為例,我們可以從我們剛剛建立的範本中得到子網路 ID、網路範圍和其他資料。
- name: Pull all new resources back in as a variable cloudformation_facts: stack_name: prod-vpc register: network_stack
對於無服務應用,除了 DynamoDB 表,S3 bucket 和其他任何其他功能之外,你肯定還需要一個 Lambda 函數的補充。幸運的是,透過使用 lambda 模組, Lambda 函數可以以上次任務的堆疊相同的方式建立:
- lambda: name: sendReportMail zip_file: "{{ deployment_package }}" runtime: python3.6 handler: report.send memory_size: 1024 role: "{{ iam_exec_role }}" register: new_function
如果你有其他想用來交付無服務應用程式的工具,這也是可以的。開源的無服務框架有自己的 Ansible 模組,它也可以運作:
- serverless: service_path: '{{ project_dir }}' stage: dev register: sls - name: Serverless uses CloudFormation under the hood, so you can easily pull info back into Ansible cloudformation_facts: stack_name: "{{ sls.service_name }}" register: sls_facts
這不是你需要的全部,因為無服務項目也必須存在,你將在那裡大量的定義你的函數和事件來源。對於此例,我們將製作一個回應 HTTP 請求的函數。無服務框架使用 YAML 作為其設定語言(和 Ansible 一樣),所以這應該看起來很熟悉。
# serverless.yml service: fakeservice provider: name: aws runtime: python3.6 functions: main: handler: test_function.handler events: - http: path: / method: get
在 AnsibleFest 中,我將介紹這個範例和其他深入的部署策略,以最大限度地利用你已經擁有的 playbook 和基礎設施,還有新的無服務實踐。無論你是否能到,我希望這些例子可以讓你開始使用 Ansible,無論你是否有任何服務要管理。
AnsibleFest 是一個單日會議,匯集了數百名 Ansible 用戶、開發人員和行業合作夥伴。加入我們吧,這裡有產品更新、鼓舞人心的交談、技術深度潛水,動手演示和整天的網絡。
以上是使用 Ansible 自動化部署無服務應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

CentOS將於2024年停止維護,原因是其上游發行版RHEL 8已停止維護。該停更將影響CentOS 8系統,使其無法繼續接收更新。用戶應規劃遷移,建議選項包括CentOS Stream、AlmaLinux和Rocky Linux,以保持系統安全和穩定。

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

CentOS硬盤掛載分為以下步驟:確定硬盤設備名(/dev/sdX);創建掛載點(建議使用/mnt/newdisk);執行mount命令(mount /dev/sdX1 /mnt/newdisk);編輯/etc/fstab文件添加永久掛載配置;卸載設備使用umount命令,確保沒有進程使用設備。

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。
