国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 科技週邊 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ù)知識(shí)才能有效使用,並需謹(jǐn)慎管理配置文件和狀態(tài)文件,在大型部署中可能會(huì)變得複雜。然而,它們?cè)诠?jié)省時(shí)間、減少錯(cuò)誤和提高部署穩(wěn)定性方面仍具有顯著優(yōu)勢。

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

Packer簡介:

Packer是HashiCorp開發(fā)的開源DevOps工具,可通過單個(gè)JSON配置文件創(chuàng)建鏡像,方便長期跟蹤更改。該軟件跨平臺(tái)兼容,並能並行創(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格式配置文件在阿里雲(yún)中構(gòu)建基礎(chǔ)設(shè)施,方便版本控制並清晰了解應(yīng)用程序底層的工作原理。 Terraform的安裝以及阿里雲(yún)官方提供商的配置,請(qǐng)參考其他相關(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,等待其完成。請(qǐng)注意,要使此操作生效,您需要在計(jì)算機(jī)中設(shè)置三個(gè)環(huán)境變量:ALICLOUD_REGION、ALICLOUD_ACCESS_KEYALICLOUD_SECRET_KEY。此步驟需要一些時(shí)間,因?yàn)樗鼤?huì)創(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啟動(dòng)部署過程。

基礎(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ù)髮布週期、基礎(chǔ)設(shè)施更新以及提高系統(tǒng)可用性的工作,無需再直接處理主機(jī)和Linux命令。

Packer和Terraform常見問題:

  • Packer和Terraform的主要區(qū)別是什麼? Packer用於創(chuàng)建跨多個(gè)平臺(tái)的相同機(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)用程序部署的好處是什麼? 自動(dòng)化、節(jié)省時(shí)間、減少錯(cuò)誤、提高可靠性和穩(wěn)定性、支持多種平臺(tái)和服務(wù)提供商。
  • 使用Packer和Terraform的局限性和挑戰(zhàn)是什麼? 需要一定的技術(shù)知識(shí),需要謹(jǐn)慎管理配置文件和狀態(tài)文件,並非所有平臺(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)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

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版

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

開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) 開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) Jun 17, 2025 pm 04:43 PM

在開發(fā)類似於Udemy的學(xué)習(xí)平臺(tái)時(shí),重點(diǎn)不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因?yàn)楝F(xiàn)代教育平臺(tái)依賴於媒體,快速且易於消化。

用於購買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) 用於購買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) Jun 25, 2025 am 08:28 AM

在一個(gè)在線信任不可談判的世界中,SSL證書對(duì)於每個(gè)網(wǎng)站都至關(guān)重要。 SSL認(rèn)證的市場規(guī)模在2024年價(jià)值56億美元,並且由於電子商務(wù)業(yè)務(wù)的激增而推動(dòng)了強(qiáng)勁的增長

SaaS的5個(gè)最佳支付門戶:您的最終指南 SaaS的5個(gè)最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當(dāng)客戶與商人之間的橋樑,安全地傳輸付款信息並促進(jìn)交易。 為了

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

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

由於新的Microsoft AI型號(hào) 由於新的Microsoft AI型號(hào) Jul 05, 2025 am 12:44 AM

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

您的設(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è)備(包括電動(dòng)剃須刀和牙刷)已成為AI驅(qū)動(dòng)的“使用機(jī)器學(xué)習(xí)算法來跟蹤一個(gè)人的使用方式,Devi的方式

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

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

See all articles