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

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

如何在包裝工和Terraform中毫不費(fèi)力地部署應(yīng)用程序

Feb 16, 2025 pm 01:12 PM

How to Deploy Apps Effortlessly with Packer and Terraform

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

本文探討如何利用開源DevOps工具Packer和Terraform協(xié)同構(gòu)建和管理基礎(chǔ)設(shè)施,實(shí)現(xiàn)高效的應(yīng)用部署。

核心要點(diǎn):

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

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

Packer簡介:

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

Terraform簡介:

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

目標(biāo):

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

步驟:

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

PHP應(yīng)用程序:

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

使用Packer構(gòu)建鏡像:

在您的計(jì)算機(jī)上創(chuàng)建一個(gè)名為~/metar-app的文件夾,然后進(jìn)入該文件夾并創(chuàng)建一個(gè)名為metar-build.json的文件,內(nèi)容如下:

{
  "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)建一個(gè)名為base-setup的文件,內(nèi)容如下:

#!/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

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

使用Terraform部署基礎(chǔ)設(shè)施:

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

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)建一個(gè)名為user-data的文件,內(nèi)容如下:

#!/usr/bin/env bash

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

現(xiàn)在,您的文件結(jié)構(gòu)應(yīng)如下所示:

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

運(yùn)行terraform init,然后運(yùn)行terraform plan檢查一切是否正常,最后運(yùn)行terraform apply啟動部署過程。

基礎(chǔ)設(shè)施構(gòu)建完成后,Terraform將輸出新創(chuàng)建的ECS實(shí)例的IP地址,例如:111.111.111.111。

測試:

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

總結(jié):

您幾乎不費(fèi)吹灰之力就完成了應(yīng)用程序的完整DevOps部署。這將極大地簡化您和團(tuán)隊(duì)維護(hù)發(fā)布周期、基礎(chǔ)設(shè)施更新以及提高系統(tǒng)可用性的工作,無需再直接處理主機(jī)和Linux命令。

Packer和Terraform常見問題:

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

以上是如何在包裝工和Terraform中毫不費(fèi)力地部署應(yīng)用程序的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的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

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

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

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

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

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

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

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

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

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

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

大型技術(shù)實(shí)驗(yàn)人工智能(AI)的主要關(guān)注點(diǎn)并不是它可能主導(dǎo)人類。真正的問題在于大語言模型(LLMS)的持續(xù)不準(zhǔn)確性,例如Open AI的Chatgpt,Google的Gemini和

See all articles