Rumah > Peranti teknologi > industri IT > Cara Menyebarkan Aplikasi Dengan Mudah Dengan Packer dan Terraform

Cara Menyebarkan Aplikasi Dengan Mudah Dengan Packer dan Terraform

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-02-16 13:12:44
asal
1010 orang telah melayarinya

How to Deploy Apps Effortlessly with Packer and Terraform

pembungkus dan terraform: alat yang berkuasa untuk penyebaran devOps yang cekap

Artikel ini membincangkan cara menggunakan alat sumber terbuka DevOps Packer dan Terraform untuk bekerjasama dalam membina dan menguruskan infrastruktur untuk mencapai penggunaan aplikasi yang cekap.

mata teras:

    Gabungan Packer dan Terraform: Packer digunakan untuk membuat imej mesin yang mengandungi perisian dan konfigurasi yang diperlukan, sementara Terraform menggunakan imej -imej ini untuk membina infrastruktur sebenar (seperti pelayan atau bekas).
  • Amalan DevOps: Mengambil pembinaan aplikasi PHP sebagai contoh, artikel menunjukkan proses lengkap menggunakan Packer untuk membina imej dan menggunakan infrastruktur dengan Terraform, dengan berkesan mempermudah pengurusan kitaran pelepasan, kemas kini infrastruktur, dan meningkatkan ketersediaan sistem.
  • Cabaran dan Kelebihan: Packer dan Terraform, walaupun kuat dan fleksibel, juga memerlukan pengetahuan teknikal tertentu untuk digunakan dengan berkesan, dan memerlukan pengurusan fail konfigurasi dan status yang teliti, yang boleh menjadi rumit dalam penggunaan yang besar. Walau bagaimanapun, mereka masih mempunyai kelebihan yang ketara dalam menjimatkan masa, mengurangkan kesilapan, dan meningkatkan kestabilan penempatan.
Alibaba Cloud mengeluarkan kertas putih yang indah di DevOps, yang menyatakan: "DevOps bukan sekadar hanya melaksanakan prinsip -prinsip tangkas untuk menguruskan infrastruktur, John Willis dan Damon Edwards menggunakan kamera (budaya, automasi, pengukuran dan perkongsian) untuk menentukan DevOps. DevOps direka untuk memudahkan kerjasama antara pasukan pembangunan dan operasi. Tetapi amalan DevOps tidak terhad kepada perusahaan besar, dan pemaju dapat dengan mudah memasukkannya ke dalam kerja harian mereka. Tutorial ini menunjukkan bagaimana dengan mudah mengatur keseluruhan proses penempatan menggunakan hanya sebilangan kecil fail konfigurasi dan menjalankan aplikasi pada contoh perkhidmatan pengkomputeran elastik awan Alibaba (ECS).

Packer PENGENALAN:

Packer adalah alat DevOps sumber terbuka yang dibangunkan oleh Hashicorp. Perisian ini bersesuaian dengan platform dan boleh membuat pelbagai imej selari. Pemasangan menggunakan homebrew sangat mudah:

. Packer mencipta imej "siap sedia" yang mengandungi perisian tambahan yang diperlukan oleh sistem operasi dan aplikasi, sama seperti membuat pengedaran tersuai. Sebagai contoh, anda boleh membuat imej Debian dengan mudah yang mengandungi aplikasi PHP tersuai. brew install packer

Pengenalan kepada Terraform:

Penyebaran terdiri daripada dua tugas utama: pembungkusan aplikasi ke dalam persekitaran yang betul (membuat imej), dan membuat infrastruktur (pelayan) yang menjalankan aplikasi. Terraform juga dari Hashicorp, berdasarkan prinsip yang sama seperti Packer, yang membolehkan anda membina infrastruktur di Alibaba Cloud menggunakan hanya satu profil format TF tunggal, yang memudahkan kawalan versi dan mempunyai pemahaman yang jelas tentang bagaimana aplikasi asas berfungsi. Untuk pemasangan Terraform dan konfigurasi pembekal rasmi Alibaba Cloud, sila rujuk artikel lain yang berkaitan.

sasaran:

Tutorial ini akan mencipta dan menggunakan aplikasi PHP yang mudah di DevOps, yang meliputi segala -galanya daripada menjalankan perisian untuk menyokong infrastruktur.

Langkah:

Untuk memudahkan proses, kami akan membuat aplikasi berasaskan docker untuk mendapatkan data cuaca METAR dari lapangan terbang (menggunakan kod lapangan terbang ICAO dan mendapatkan data dari Perkhidmatan Cuaca Kebangsaan AS). Kami kemudian akan membuat imej menggunakan Ubuntu dan Packer dan menggunakan infrastruktur menggunakan imej dan terraform itu.

PHP Aplikasi:

Untuk kemudahan, kami menyediakan aplikasi luar. Anda boleh melihat kod sumber (termasuk index.php, 2 fail JavaScript untuk penyahkodan data METAR, sedikit CSS dan imej PNG). Aplikasi ini berdasarkan kepada Docker-Compose, yang akan kami pasang sebagai kebergantungan menggunakan Packer kemudian.

Bina imej dengan Packer: 3

Dalam direktori yang sama, buat fail yang bernama Base-Setup, dengan kandungan berikut:

{
  "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"
    }
  ]
}
Salin selepas log masuk

Apabila anda menyediakan kedua -dua fail ini, jalankan

dan tunggu mereka selesai. Perhatikan bahawa untuk ini berkuatkuasa, anda perlu menetapkan tiga pembolehubah persekitaran dalam komputer anda:
#!/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
Salin selepas log masuk
,

, dan packer build metar-build.json. Langkah ini mengambil sedikit masa kerana ia mewujudkan contoh ECS, memasang semua perisian di atasnya, kemudian menghentikan contoh, membuat gambarnya, dan akhirnya mencipta imej seluruh sistem. Selepas imej dibuat, Packer akan mengeluarkan ALICLOUD_REGION. ALICLOUD_ACCESS_KEY ALICLOUD_SECRET_KEY ==> Builds finished menggunakan infrastruktur dengan terraform:

Sekarang, dalam folder yang sama, buat fail bernama main.tf, dengan kandungan berikut:

Dalam direktori yang sama, buat fail bernama pengguna data, dengan kandungan berikut:

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}"
}
Salin selepas log masuk

Sekarang, struktur fail anda sepatutnya kelihatan seperti ini:

#!/usr/bin/env bash

cd /var/docker/metar && docker-compose up -d
Salin selepas log masuk

Run

, kemudian jalankan
<code>metar_app/
├── metar-build.json
├── base-setup
├── main.tf
└── user-data</code>
Salin selepas log masuk
untuk memeriksa sama ada semuanya normal, dan akhirnya berjalan

untuk memulakan proses penempatan. terraform init terraform plan Selepas infrastruktur dibina, Terraform akan mengeluarkan alamat IP contoh ECS yang baru dibuat, contohnya: 111.111.111.111.111. terraform apply

ujian:

Jika semuanya berjalan lancar, anda boleh menyemak laporan cuaca terkini untuk Lapangan Terbang San Sebastian (terletak di utara Sepanyol dengan laluan masuk yang indah).

Ringkasan:

Anda hampir tidak mempunyai usaha untuk melengkapkan penyebaran penuh permohonan anda. Ini akan memudahkan kitaran pelepasan penyelenggaraan, kemas kini infrastruktur, dan meningkatkan ketersediaan sistem tanpa perlu memproses host dan arahan Linux secara langsung.

Soalan -soalan yang sering ditanya mengenai Packer dan Terraform:

  • Apakah perbezaan utama antara Packer dan Terraform? Packer digunakan untuk mencipta imej mesin yang sama di pelbagai platform, sementara Terraform digunakan untuk membina, menukar dan mengawal versi infrastruktur dengan selamat dan cekap.
  • Bagaimana Packer berfungsi bersempena dengan Terraform? Packer mencipta imej mesin, dan Terraform menggunakan imej -imej ini untuk membuat infrastruktur.
  • Bilakah ia dikonfigurasikan dalam Packer, dan bilakah ia dikonfigurasi dalam Terraform? Konfigurasi dalam Packer biasanya digunakan untuk memasang dan mengkonfigurasi perisian dalam imej mesin (sebelum infrastruktur dibuat), sementara konfigurasi di Terraform biasanya digunakan untuk melaksanakan tugas selepas infrastruktur dibuat.
  • Bolehkah anda menggunakan Packer tanpa Terraform? Ya.
  • Bagaimana untuk menggunakan aplikasi menggunakan Packer dan Terraform? Pertama buat imej mesin menggunakan Packer, kemudian Terraform menggunakan imej itu untuk membuat infrastruktur, dan akhirnya menggunakan aplikasi ke pelayan atau bekas yang baru dibuat.
  • Apakah faedah menggunakan Packer dan Terraform untuk penggunaan aplikasi? Automasi, menjimatkan masa, mengurangkan kesilapan, meningkatkan kebolehpercayaan dan kestabilan, menyokong pelbagai platform dan penyedia perkhidmatan.
  • Apakah batasan dan cabaran menggunakan Packer dan Terraform? Beberapa pengetahuan teknikal diperlukan, fail konfigurasi dan fail status perlu diuruskan dengan berhati -hati, dan tidak semua platform atau penyedia menyokong semua ciri dan pilihan.
  • Bagaimana untuk memulakan dengan Packer dan Terraform? Pasang alat dan buat fail konfigurasi.
  • Bolehkah pembungkus dan terraform digunakan dengan alat DevOps lain? Ya.
  • Apakah amalan terbaik untuk menggunakan Packer dan Terraform? Pastikan fail konfigurasi mudah dan modular, gunakan kawalan versi, menguji dan mengesahkan konfigurasi secara kerap, menggunakan konvensyen penamaan yang konsisten, konfigurasi dokumen dan tetapan infrastruktur.

Atas ialah kandungan terperinci Cara Menyebarkan Aplikasi Dengan Mudah Dengan Packer dan Terraform. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan