検索
ホームページテクノロジー周辺機器IT業界PackerとTerraformでアプリを簡単に展開する方法

How to Deploy Apps Effortlessly with Packer and Terraform

パッカーとテラフォーム:効率的なDEVOPS展開のための強力なツール

この記事では、オープンソースのDevOpsツールパッカーとテラフォームを使用して、インフラストラクチャの構築と管理に協力して、効率的なアプリケーションの展開を実現する方法について説明します。

コアポイント:

  • パッカーとテラフォームの組み合わせ:パッカーは、必要なソフトウェアと構成を含むマシン画像を作成するために使用されますが、Terraformはこれらの画像を使用して実際のインフラストラクチャ(サーバーやコンテナなど)を構築します。
  • DevOpsの練習:PHPアプリケーションの構築を例にとると、この記事では、Packerを使用して画像を構築し、テラフォームを使用してインフラストラクチャを展開する完全なプロセスを示し、リリースサイクル管理、インフラストラクチャの更新、システムの可用性の向上を効果的に簡素化します。
  • 課題と利点:パッカーとテラフォームは、強力で柔軟ですが、効果的に使用するには一定量の技術的知識を必要とし、構成ファイルとステータスファイルを慎重に管理する必要があります。ただし、時間の節約、エラーの削減、展開の安定性の向上には依然として大きな利点があります。

Alibaba Cloudは、DevOpsに関する素晴らしいホワイトペーパーをリリースしました。「DevOpsは単にインフラストラクチャを管理するためのアジャイルな原則を実装するだけではありません。JohnWillisとDamon Edwardsは、Devopsを定義するためにCams(文化、自動化、測定、共有)を使用します。 DevOpsは、開発チームとオペレーションチームのコラボレーションを促進するように設計されています。これは、ソフトウェア開発とインフラストラクチャ管理を接続するDevOpsの新しい役割または考え方を反映しており、知識を必要とし、クラウドコンピューティングモデルの増加を最大限に活用しています。しかし、DevOpsの実践は大規模な企業に限定されず、開発者はそれを毎日の仕事に簡単に組み込むことができます。このチュートリアルでは、少数の構成ファイルのみを使用して展開プロセス全体を簡単にオーケストレーションし、Alibaba Cloud Elastic Computing Services(ECS)インスタンスでアプリケーションを実行する方法を示しています。

パッカーはじめに:

Packerは、HashiCorpによって開発されたオープンソースDevOpsツールです。ソフトウェアはクロスプラットフォーム互換性があり、並行して複数の画像を作成できます。 HomeBrewを使用したインストールは非常に簡単です:brew install packer。 Packerは、カスタム配布の作成と同様に、オペレーティングシステムとアプリケーションで必要な追加のソフトウェアを含む「すぐに使用できる」画像を作成します。たとえば、カスタムPHPアプリケーションを含むDebian画像を簡単に作成できます。

Terraformの紹介:

展開は、アプリケーションを適切な環境にパッケージ化する(画像の作成)と、アプリケーションを実行するインフラストラクチャ(サーバー)の作成という2つの主要なタスクで構成されています。 Terraformは、Packerと同じ原則に基づいてHashicorpからのものでもあり、単一のTF形式プロファイルのみを使用してAlibaba Cloudにインフラストラクチャを構築できます。これにより、バージョン制御が容易になり、基礎となるアプリケーションがどのように機能するかを明確に理解できます。 TerraformのインストールとAlibaba Cloudの公式プロバイダーの構成については、他の関連記事を参照してください。

ターゲット:

このチュートリアルは、ソフトウェアのランニングからインフラストラクチャのサポートまで、すべてをカバーするDevOpsで簡単なPHPアプリケーションを作成および展開します。

ステップ:

プロセスを簡素化するために、Docker-Composeベースのアプリケーションを作成して、空港からMetar気象データを取得します(ICAO空港コードを使用して米国国立気象サービスからデータを取得します)。次に、UbuntuとPackerを使用して画像を作成し、その画像とTerraformを使用してインフラストラクチャを展開します。

phpアプリケーション:

便利なため、既製のアプリケーションを提供します。ソースコード(index.php、2つのJavaScriptファイルを含むMetarデータ、少量のCSS、PNG画像を含む)を表示できます。このアプリはDocker-Composeに基づいており、後でPackerを使用して依存関係としてインストールします。

パッカーを使用して画像を構築します:

コンピューターに〜/Metar-Appという名前のフォルダーを作成し、そのフォルダーに移動して、次のようにMeta-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"
    }
  ]
}

これら2つのファイルを準備するときは、

を実行し、それらが完了するのを待ちます。これを有効にするためには、コンピューターに3つの環境変数を設定する必要があることに注意してください:
#!/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。 ECSインスタンスを作成し、すべてのソフトウェアをインストールし、インスタンスを停止し、そのスナップショットを作成し、最終的にシステム全体の画像を作成するため、このステップには時間がかかります。 画像が作成された後、PackerはALICLOUD_REGIONに出力されます。 ALICLOUD_ACCESS_KEY ALICLOUD_SECRET_KEY==> Builds finishedTerraformを使用してインフラストラクチャを展開:

今、同じフォルダーで、次のコンテンツを含む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}"
}

実行
#!/usr/bin/env bash

cd /var/docker/metar && docker-compose up -d
を実行してから、

を実行してすべてが正常かどうかを確認し、最終的に

を実行して展開プロセスを開始します。
<code>metar_app/
├── metar-build.json
├── base-setup
├── main.tf
└── user-data</code>

インフラストラクチャが構築された後、Terraformは、たとえば111.111.111.111.111など、新しく作成されたECSインスタンスのIPアドレスを出力します。 terraform init terraform planterraform applyテスト:

すべてがうまくいけば、サンセバスチャン空港の最新の気象レポート(美しいエントリールートがあるスペイン北部にある)の最新の気象レポートをチェックできます。

概要:

アプリケーションの完全なDevOps展開を完了する努力はほとんどありません。これにより、メンテナンスリリースサイクル、インフラストラクチャの更新が大幅に簡素化され、ホストとLinuxコマンドを直接処理することなくシステムの可用性が向上します。

パッカーとテラフォームに関するよくある質問:

  • パッカーとテラフォームの主な違いは何ですか? パッカーは、複数のプラットフォームで同じマシンイメージを作成するために使用されますが、Terraformは安全かつ効率的にインフラストラクチャを構築、変更、バージョンするために使用されます。
  • PackerはTerraformとどのように機能しますか? Packerはマシン画像を作成し、Terraformはこれらの画像を使用してインフラストラクチャを作成します。
  • いつパッカーで構成され、いつテラフォームで構成されていますか?パッカーの構成は通常、マシン画像でソフトウェアのインストールと構成(インフラストラクチャが作成される前)に使用されますが、通常、インフラストラクチャの作成後にタスクを実行するためにテラフォームの構成を使用します。
  • TerraformなしでPackerを使用できますか? はい。
  • PackerとTerraformを使用してアプリケーションを展開する方法は? 最初にPackerを使用してマシン画像を作成し、次にTerraformはその画像を使用してインフラストラクチャを作成し、最後にアプリケーションを新しく作成したサーバーまたはコンテナに展開します。
  • アプリケーションの展開にPackerとTerraformを使用することの利点は何ですか? 自動化、時間を節約し、エラーを減らし、信頼性と安定性を改善し、複数のプラットフォームとサービスプロバイダーをサポートします。
  • PackerとTerraformを使用することの制限と課題は何ですか? いくつかの技術的な知識が必要です。構成ファイルとステータスファイルは注意して管理する必要があり、すべてのプラットフォームまたはプロバイダーがすべての機能とオプションをサポートするわけではありません。
  • パッカーとテラフォームを始める方法は? ツールをインストールし、構成ファイルを作成します。
  • 他のDevOpsツールでパッカーとテラフォームを使用できますか? はい。
  • パッカーとテラフォームを使用するためのベストプラクティスは何ですか? 構成ファイルをシンプルでモジュラーに保ち、バージョン制御を使用し、定期的にテストして構成を検証し、一貫した命名規則、ドキュメント構成、インフラストラクチャ設定を使用します。

以上がPackerとTerraformでアプリを簡単に展開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
2025年に購読する上位21の開発者ニュースレター2025年に購読する上位21の開発者ニュースレターApr 24, 2025 am 08:28 AM

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください

AWS ECSとLambdaを備えたサーバーレス画像処理パイプラインAWS ECSとLambdaを備えたサーバーレス画像処理パイプラインApr 18, 2025 am 08:28 AM

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

CNCF ARM64パイロット:インパクトと洞察CNCF ARM64パイロット:インパクトと洞察Apr 15, 2025 am 08:27 AM

このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません