亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 科技週邊 IT業(yè)界 如何在包裝工和Terraform中毫不費力地部署應用程序

如何在包裝工和Terraform中毫不費力地部署應用程序

Feb 16, 2025 pm 01:12 PM

How to Deploy Apps Effortlessly with Packer and Terraform

Packer和Terraform:高效DevOps部署的利器

本文探討如何利用開源DevOps工具Packer和Terraform協(xié)同構建和管理基礎設施,實現(xiàn)高效的應用部署。

核心要點:

  • Packer和Terraform的結合:Packer用於創(chuàng)建包含所需軟件和配置的機器鏡像,Terraform則利用這些鏡像構建實際基礎設施(例如服務器或容器)。
  • DevOps實踐:文章以構建PHP應用為例,演示了使用Packer構建鏡像,並用Terraform部署基礎設施的完整流程,有效簡化發(fā)布週期管理、基礎設施更新,並提升系統(tǒng)可用性。
  • 挑戰(zhàn)與優(yōu)勢:Packer和Terraform雖然功能強大且靈活,但也需要一定的技術知識才能有效使用,並需謹慎管理配置文件和狀態(tài)文件,在大型部署中可能會變得複雜。然而,它們在節(jié)省時間、減少錯誤和提高部署穩(wěn)定性方面仍具有顯著優(yōu)勢。

阿里雲(yún)發(fā)布了一份關於DevOps的精彩白皮書,其中指出:“DevOps不僅僅是簡單地實施敏捷原則來管理基礎設施,John Willis和Damon Edwards用CAMS(文化、自動化、度量和共享)來定義DevOps。DevOps旨在促進開發(fā)和運維團隊之間的協(xié)作?!? 這體現(xiàn)了DevOps中連接軟件開發(fā)和基礎設施管理的新角色或思維模式,需要同時掌握兩方面的知識,並充分利用日益重要的雲(yún)計算模式。但DevOps實踐並非僅限於大型企業(yè),開發(fā)者也能輕鬆將其融入日常工作。本教程將演示如何僅使用少量配置文件輕鬆編排整個部署流程,並在阿里雲(yún)彈性計算服務(ECS)實例上運行應用程序。

Packer簡介:

Packer是HashiCorp開發(fā)的開源DevOps工具,可通過單個JSON配置文件創(chuàng)建鏡像,方便長期跟蹤更改。該軟件跨平臺兼容,並能並行創(chuàng)建多個鏡像。 使用Homebrew安裝非常簡單:brew install packer。 Packer創(chuàng)建包含操作系統(tǒng)和應用程序所需額外軟件的“即用型”鏡像,如同創(chuàng)建自定義發(fā)行版。例如,您可以輕鬆創(chuàng)建包含自定義PHP應用程序的Debian鏡像。

Terraform簡介:

部署包含兩大任務:打包應用程序到合適的環(huán)境中(創(chuàng)建鏡像),以及創(chuàng)建運行應用程序的基礎設施(服務器)。 Terraform同樣來自HashiCorp,它基於與Packer相同的原則,允許您僅使用單個TF格式配置文件在阿里雲(yún)中構建基礎設施,方便版本控制並清晰了解應用程序底層的工作原理。 Terraform的安裝以及阿里雲(yún)官方提供商的配置,請參考其他相關文章。

目標:

本教程將以DevOps方式創(chuàng)建和部署簡單的PHP應用程序,涵蓋從運行軟件到支持基礎設施的各個方面。

步驟:

為了簡化流程,我們將創(chuàng)建一個基於docker-compose的應用程序,用於從機場獲取METAR氣象數(shù)據(jù)(使用ICAO機場代碼,並從美國國家氣象局獲取數(shù)據(jù))。然後,我們將使用Ubuntu和Packer創(chuàng)建鏡像,並使用該鏡像和Terraform部署基礎設施。

PHP應用程序:

為了方便起見,我們提供了一個現(xiàn)成的應用程序。您可以查看源代碼(包含index.php、2個用於解碼METAR數(shù)據(jù)的JavaScript文件、少量CSS和一個PNG圖片)。該應用程序基於docker-compose,稍後我們將使用Packer將其作為依賴項安裝。

使用Packer構建鏡像:

在您的計算機上創(chuàng)建一個名為~/metar-app的文件夾,然後進入該文件夾並創(chuàng)建一個名為metar-build.json的文件,內容如下:

{
  "variables": {
    "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}",
    "region": "{{env `ALICLOUD_REGION`}}",
    "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}"
  },
  "builders": [
    {
      "type": "alicloud-ecs",
      "access_key": "{{user `access_key`}}",
      "secret_key": "{{user `secret_key`}}",
      "region":"{{user `region`}}",
      "image_name": "metar_app",
      "source_image": "ubuntu_16_0402_64_20G_alibase_20180409.vhd",
      "ssh_username": "root",
      "instance_type": "ecs.t5-lc1m1.small",
      "internet_charge_type": "PayByTraffic",
      "io_optimized": "true"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "script": "base-setup"
    }
  ]
}

在同一目錄下,創(chuàng)建一個名為base-setup的文件,內容如下:

#!/usr/bin/env bash

apt-get update && apt-get install -y apt-transport-https ca-certificates curl git-core software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update && apt-get install -y docker-ce docker-compose
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

mkdir /var/docker
git clone https://github.com/roura356a/metar.git /var/docker/metar

準備好這兩個文件後,運行packer build metar-build.json,等待其完成。請注意,要使此操作生效,您需要在計算機中設置三個環(huán)境變量:ALICLOUD_REGIONALICLOUD_ACCESS_KEYALICLOUD_SECRET_KEY。此步驟需要一些時間,因為它會創(chuàng)建ECS實例,在其上安裝所有軟件,然後停止實例,創(chuàng)建其快照,最後創(chuàng)建整個系統(tǒng)的鏡像。 鏡像創(chuàng)建完成後,Packer將輸出==> Builds finished

使用Terraform部署基礎設施:

現(xiàn)在,在同一文件夾中,創(chuàng)建一個名為main.tf的文件,內容如下:

provider "alicloud" {}

data "alicloud_images" "search" {
  name_regex = "metar_app"
}

data "alicloud_instance_types" "search" {
  instance_type_family = "ecs.xn4"
  cpu_core_count = 1
  memory_size = 1
}

data "alicloud_security_groups" "search" {}

data "alicloud_vswitches" "search" {}

resource "alicloud_instance" "app" {
  instance_name = "metar_app"
  image_id = "${data.alicloud_images.search.images.0.image_id}"
  instance_type = "${data.alicloud_instance_types.search.instance_types.0.id}"

  vswitch_id = "${data.alicloud_vswitches.search.vswitches.0.id}"
  security_groups = [
    "${data.alicloud_security_groups.search.groups.0.id}"
  ]
  internet_max_bandwidth_out = 100

  password = "Test1234!"

  user_data = "${file("user-data")}"
}

output "ip" {
  value = "${alicloud_instance.app.public_ip}"
}

在同一目錄下,創(chuàng)建一個名為user-data的文件,內容如下:

#!/usr/bin/env bash

cd /var/docker/metar && docker-compose up -d

現(xiàn)在,您的文件結構應如下所示:

<code>metar_app/
├── metar-build.json
├── base-setup
├── main.tf
└── user-data</code>

運行terraform init,然後運行terraform plan檢查一切是否正常,最後運行terraform apply啟動部署過程。

基礎設施構建完成後,Terraform將輸出新創(chuàng)建的ECS實例的IP地址,例如:111.111.111.111。

測試:

如果一切順利,您可以訪問http://111.111.111.111/LESO查看聖塞巴斯蒂安機場的最新天氣報告(位於西班牙北部,擁有美麗的進場航線)。

總結:

您幾乎不費吹灰之力就完成了應用程序的完整DevOps部署。這將極大地簡化您和團隊維護髮布週期、基礎設施更新以及提高系統(tǒng)可用性的工作,無需再直接處理主機和Linux命令。

Packer和Terraform常見問題:

  • Packer和Terraform的主要區(qū)別是什麼? Packer用於創(chuàng)建跨多個平臺的相同機器鏡像,而Terraform用於安全高效地構建、更改和版本控制基礎設施。
  • Packer如何與Terraform協(xié)同工作? Packer創(chuàng)建機器鏡像,Terraform使用這些鏡像創(chuàng)建基礎設施。
  • 何時在Packer中配置,何時在Terraform中配置? 在Packer中配置通常用於在機器鏡像中安裝和配置軟件(在創(chuàng)建基礎設施之前),而在Terraform中配置通常用於在創(chuàng)建基礎設施之後執(zhí)行任務。
  • 可以使用Packer而無需Terraform嗎? 可以。
  • 如何使用Packer和Terraform部署應用程序? 首先使用Packer創(chuàng)建機器鏡像,然後Terraform使用該鏡像創(chuàng)建基礎設施,最後將應用程序部署到新創(chuàng)建的服務器或容器。
  • 使用Packer和Terraform進行應用程序部署的好處是什麼? 自動化、節(jié)省時間、減少錯誤、提高可靠性和穩(wěn)定性、支持多種平臺和服務提供商。
  • 使用Packer和Terraform的局限性和挑戰(zhàn)是什麼? 需要一定的技術知識,需要謹慎管理配置文件和狀態(tài)文件,並非所有平臺或提供商都支持所有功能和選項。
  • 如何開始使用Packer和Terraform? 安裝工具,創(chuàng)建配置文件。
  • 可以將Packer和Terraform與其他DevOps工具一起使用嗎? 可以。
  • 使用Packer和Terraform的一些最佳實踐是什麼? 保持配置文件簡單和模塊化,使用版本控制,定期測試和驗證配置,使用一致的命名約定,記錄配置和基礎設施設置。

以上是如何在包裝工和Terraform中毫不費力地部署應用程序的詳細內容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認為人類始終超越機器的領域的另一個挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個

您的設備餵養(yǎng)AI助手並收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內容。 您的設備餵養(yǎng)AI助手並收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設備(包括電動剃須刀和牙刷)已成為AI驅動的“使用機器學習算法來跟蹤一個人的使用方式,Devi的方式

由於新的Microsoft AI型號 由於新的Microsoft AI型號 Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個使用最廣泛使用的全球預測系統(tǒng)更快,更精確地預測重大天氣事件的能力。該名為Aurora的模型已接受過培訓。

高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM 高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項研究,我們試圖使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達50倍。

威脅AI聊天機器人,它將撒謊,作弊和'讓您死”以阻止您,並警告 威脅AI聊天機器人,它將撒謊,作弊和'讓您死”以阻止您,並警告 Jul 04, 2025 am 12:40 AM

根據(jù)一項新的研究,人工智能(AI)模型在模型的目標和用戶決定之間發(fā)生衝突時可能會威脅和勒索人類。

ai不斷地'幻覺”,但是有一個解決方案 ai不斷地'幻覺”,但是有一個解決方案 Jul 07, 2025 am 01:26 AM

大型技術實驗人工智能(AI)的主要關注點並不是它可能主導人類。真正的問題在於大語言模型(LLMS)的持續(xù)不準確性,例如Open AI的Chatgpt,Google的Gemini和

為什麼AI會更頻繁地進行Hallucin,我們如何停止它? 為什麼AI會更頻繁地進行Hallucin,我們如何停止它? Jul 08, 2025 am 01:44 AM

人工智能(AI)越先進,它越傾向於“幻覺”並提供虛假或不準確的信息。 Openai的研究是其最新和強大的推理模型(O3和O4-Mini)的研究,這對HH進行了研究。

See all articles