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:
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:
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" } ] }
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
, 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}" }
Sekarang, struktur fail anda sepatutnya kelihatan seperti ini:
#!/usr/bin/env bash cd /var/docker/metar && docker-compose up -d
Run
, kemudian jalankan<code>metar_app/ ├── metar-build.json ├── base-setup ├── main.tf └── user-data</code>
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:
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!