Rumah > pembangunan bahagian belakang > tutorial php > Packer Hashicorp - Adakah sesuatu untuk pemaju PHP?

Packer Hashicorp - Adakah sesuatu untuk pemaju PHP?

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-02-10 16:02:09
asal
310 orang telah melayarinya

Packer: Alat yang berkuasa di kotak alat pemaju PHP? Terpulang kepada anda!

Hashicorp's Packer - Is It Something for PHP Developers?

Hashicorp's Packer - Is It Something for PHP Developers? Pendek kata: Sebagai pemaju PHP, Packer alat penting dalam kotak alat anda? Jawapannya bergantung pada apa yang anda kerjakan.

Jika anda terlibat dalam kerja-kerja pelayan (untuk pelanggan atau syarikat) dan lakukan kerja pembangunan pada masa yang sama, jawapannya adalah ya. Packer boleh membantu anda.

Tetapi jika anda hanya pemaju dan jarang berurusan dengan kerja-kerja pelayan secara langsung, Packer tidak akan banyak membantu anda.

Walaupun begitu, mempelajari asas -asas untuk mewujudkan persekitaran pelayan akan memberi manfaat yang besar kepada mana -mana pemaju PHP. Anda akan menemui teknologi ini lebih kurang sepanjang kerjaya anda (semua yang anda buat berjalan di atasnya!). Menguasai kepakaran ini pasti akan meningkatkan prospek kerjaya anda! Sekurang -kurangnya, anda akan lebih memahami karya rakan sekerja DevOps.

Jika anda berminat dengan ini, atau anda sering melakukan kerja-kerja pelayan manual, sila teruskan membaca.

Mata Utama:

Hashicorp's Packer - Is It Something for PHP Developers?

Packer Applicability: Packer amat berguna untuk pemaju PHP yang terlibat dalam pengurusan pengurusan dan pembangunan pelayan, yang membantu memudahkan penciptaan persekitaran pelayan yang konsisten.

Autonomi Pembangunan: Kemajuan dalam teknologi pengkomputeran moden membolehkan pemaju untuk menguruskan persekitaran pembangunan yang kompleks secara langsung pada peranti peribadi mereka, dengan itu meningkatkan autonomi dan meningkatkan konsistensi antara persekitaran pembangunan dan pengeluaran.
  • Integrasi dengan Vagrant: Kedua -dua Packer dan Vagrant meningkatkan persekitaran pembangunan, tetapi ciri unik Packer adalah untuk membuat imej mesin secara automatik yang boleh digunakan pada pelbagai platform, menjimatkan masa persekitaran persekitaran.
  • Kerjasama DevOps: Packer menyediakan profesional DevOps dengan alat untuk menyediakan pasukan pembangunan dengan persekitaran yang selaras pengeluaran, memudahkan proses pembangunan dan mengurangkan kesilapan persediaan.
  • Tindakan Praktikal: Artikel ini menyediakan tutorial praktikal untuk menubuhkan Packer dan menggunakannya untuk membuat imej mesin maya, menunjukkan keupayaan Packer untuk mengendalikan tugas konfigurasi yang kompleks.
  • Pembangunan Masa Depan: Pembelajaran menggunakan alat seperti Packer bukan sahaja dapat memenuhi keperluan projek semasa, tetapi juga menyediakan pemaju untuk integrasi teknikal dan kerjasama dengan pasukan yang berbeza pada masa akan datang.
  • Melihat ke belakang:
  • Pendek kata #2: Jika anda mahir dalam vagrant dan memahami tujuannya sebagai alat, sila langkau ke bahagian artikel ini.
  • Hanya sepuluh tahun yang lalu, perkembangan aplikasi PHP pada dasarnya seperti ini: pemaju memuat naik beberapa kod ke pelayan web melalui FTP dan kemudian memeriksa sama ada ia berfungsi. Jika ia tidak berfungsi, mereka menyelesaikan masalah, membuat perubahan dalam editor teks, muat semula fail yang terjejas sekali lagi melalui FTP, dan kemudian lihat jika perubahan menyelesaikan masalah tersebut. Jika ya, mereka akan meneruskan fungsi atau masalah seterusnya, mengulangi proses (dan berdoa agar tidak ada kesilapan dalam kerja yang baru saja mereka selesaikan). Mereka juga boleh melakukan beberapa penyegerakan FTP.

    Ini adalah alur kerja untuk pemaju PHP bebas purata pada masa itu untuk menolak kod ke pelayan pembangunan (atau lebih buruk lagi, terus ke pelayan pengeluaran) (sebenarnya, sesetengah pemaju masih menggunakan proses yang sama hari ini). Pada masa itu, membina pelayan web itu sendiri biasanya pekerjaan orang lain.

    Di samping itu, dalam masa lalu yang tidak jauh, agar pasukan pembangunan bekerjasama, mungkin terdapat beberapa bentuk sistem kawalan versi serentak, dan pasukan itu juga boleh menubuhkan penggunaan automatik. Apabila perubahan komited ke repositori, ia secara automatik digunakan ke sistem pementasan atau pengeluaran. Keadaan ini sebenarnya merupakan teknologi terbaik untuk pembangunan aplikasi web pada masa itu.

    Pada zaman dahulu yang indah, istilah integrasi berterusan, mesin maya, pengkomputeran awan, orkestrasi infrastruktur, automasi pusat data, dan juga "DevOps" pada dasarnya tidak diketahui. Mereka baru dilahirkan. Amazon baru sahaja memulakan perniagaan perkhidmatan Internet mereka. Ingat, ini hanya sepuluh tahun yang lalu!

    ah, betapa mudahnya masa itu, bukan?

    Tidak, itu bukan kes itu. Pada masa itu, pembangunan lebih perlahan, lebih rumit, dan lebih mudah terdedah kepada kesilapan. Pelayan juga perlu "didayakan" untuk ujian, yang biasanya bermakna pemaju perlu menunggu sehingga "Networker" mempunyai pelayan yang sedia untuk digunakan, seperti versi PHP terkini. Dalam banyak kes, ini sering menjadi pertempuran, dan untuk "Networkers", menjaga pelayan "dikendalikan" adalah seperti memadamkan api.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Pengkomputeran dan virtualisasi hari ini:

    Sekarang, dengan teknologi komputer di hujung jari anda, pemaju boleh membawa infrastruktur pembangunan yang lebih kompleks dengan mereka. Hari ini, kuasa pengkomputeran komputer riba atau PC jauh lebih besar daripada pelayan web sedekad yang lalu.

    Malah, banyak telefon pintar yang kita ada hari ini lebih berkuasa daripada pelayan dari sepuluh tahun yang lalu.

    Hashicorp's Packer - Is It Something for PHP Developers? Teknologi hebat, bukan?

    Sebagai peningkatan kuasa pengkomputeran yang tersedia, semakin banyak orang mula menyedari bahawa kuasa pengkomputeran ini dapat dipecahkan ke dalam "mesin" yang berasingan. Ini membolehkan mereka melakukan operasi yang sama sekali berbeza pada masa yang sama. Lebih penting lagi, kuasa pengkomputeran boleh digunakan dengan lebih baik, dengan itu menjimatkan sumber. Ini adalah pemacu utama pengkomputeran kuasa virtualisasi.

    Dengan kata lain, hari ini, dengan keupayaan untuk mencipta mesin maya, pemaju boleh membawa persekitaran pembangunan mereka sendiri, tidak lagi terhad kepada orang lain yang perlu menyediakan mereka dengan persekitaran kerja yang betul. Lebih penting lagi, mereka boleh membina persekitaran pembangunan lengkap secara tempatan dan mensimulasikan pelayan web lengkap.

    Ini bukan sahaja menjadikan pemaju lebih autonomi, persekitaran pembangunan tempatan ini mempunyai satu lagi kelebihan yang besar: ia dipanggil "konsistensi pengeluaran pembangunan"-kami berada dalam buku yang mesra newbie "Jump Start Php Environment" Ini dibincangkan secara terperinci. Konsistensi pengeluaran pembangunan pada dasarnya bermakna pemaju boleh membangunkan sistem hampir sama kerana aplikasi akhirnya digunakan untuk persekitaran pengeluaran.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Kelebihan Konsistensi Pengeluaran - Ia membolehkan pemaju menulis kod berkualiti tinggi kerana mereka boleh melakukan perkara yang betul dengan cara yang betul buat kali pertama.

    Sekarang, pemaju boleh mempunyai segala yang mereka perlukan untuk membangunkan aplikasi yang sangat kompleks dalam beg galas mereka, termasuk persekitaran pembangunan yang sangat kompleks.

    Jelas sekali, keupayaan ini juga membawa kerumitan. Pelayan maya mesti dibina, dan perisian mesti dipasang dan dikonfigurasikan. Semua ini boleh menjadi sangat memakan masa, dan masa adalah wang. Ini juga bermakna pemaju mungkin perlu belajar banyak untuk menjalankan persekitaran sedemikian. Ini juga memakan masa.

    penampilan vagrant:

    Untuk membantu pemaju melengkapkan "bangunan" persekitaran pembangunan mereka, Hashicorp Inc. melancarkan program yang dipanggil Vagrant. Dengan Vagrant, konfigurasi persekitaran pembangunan adalah kod yang dapat dengan mudah dikongsi, dilancarkan kembali, dan dilancarkan ke hadapan. Pemaju bebas untuk mencuba perkara -perkara baru, seperti versi terkini PHP, tanpa bimbang bahawa pelayan mungkin mengambil masa berjam -jam untuk ditubuhkan atau kegagalan mungkin mengambil masa berjam -jam untuk diselesaikan. Pemaju tidak perlu menunggu sesiapa sahaja untuk mewujudkan persekitaran ini, dan mereka tidak akan mengganggu sesiapa jika persekitaran sepenuhnya terhempas.

    lebih lanjut mengenai vagrant - pengenalan semula kepada vagrant: cara yang betul untuk menggunakan php

    Walau bagaimanapun, masih terdapat satu lagi masalah yang perlu diselesaikan. Walaupun Vagrant sangat bagus untuk membina persekitaran pembangunan, ia memakan masa untuk dijalankan, terutamanya dengan banyak konfigurasi (lihat di bawah untuk maklumat lanjut mengenai konfigurasi). Bergantung pada perisian yang terlibat, ia boleh mengambil masa antara 2 dan 20 minit untuk membina kotak dan mengkonfigurasi perisian.

    Penggunaan masa ini juga memburukkan lagi fakta bahawa vagrant hanya boleh membina satu kotak untuk satu sistem maya (yang dipanggil "penyedia") pada satu masa. Sebagai contoh, jika anda ingin membina persekitaran anda secara tempatan dan membina persekitaran di AWS, anda perlu membuat dua fail vagrant yang berbeza dan menjalankannya secara berasingan. Ini sebenarnya tidak praktikal. Singkatnya, Vagrant sangat baik membina persekitaran pembangunan tunggal, dan itu sahaja.

    Penampilan Packer:

    Untuk meneruskan, anda mesti memainkan lebih banyak peranan DevOps. Packer meletakkan tugas membuat imej mesin maya ke dalam konfigurasi pusat yang agak mudah, jadi anda boleh mendapatkan kelebihan yang sama dalam persekitaran pembangunan automatik, tetapi kini ia juga boleh digunakan untuk membangunkan imej asas.

    Imej mesin maya juga dipanggil peranti maya. Ia adalah salinan mesin maya yang boleh digunakan untuk membuat mesin maya baru. Dalam istilah vagrant, imej ini dipanggil "kotak".

    Jika anda memahami proses membuat cermin anda sendiri, anda akan tahu bahawa operasi manual sangat menyusahkan. Jika anda tidak tahu, anda bernasib baik kerana anda boleh melangkau kerumitan membina mereka secara manual dan sekarang anda boleh mula menggunakan Packer. Walau bagaimanapun, anda masih perlu mempelajari beberapa asas bangunan cermin/pelayan. Sekali lagi, ini adalah pengetahuan yang berharga untuk pemaju dan mana -mana pemaju perlu meluangkan masa untuk mempelajari asas -asas.

    Sebaik sahaja anda mula menggunakan Packer dan anda sudah menggunakan Vagrant, soalan pertama yang anda fikirkan adalah, "Apakah perbezaan antara Packer dan Vagrant?" Akhirnya, Packer mencipta imej yang boleh digunakan oleh Vagrant untuk membina persekitaran pembangunan. Sekiranya anda telah menggunakan kotak vagrant Hashicorp sebelum ini, kemungkinan ia juga dibina dengan Packer.

    Sebagai orang DevOps yang menggunakan Packer, anda boleh menyediakan pasukan pembangunan dengan imej persekitaran pengeluaran yang mereka dapat dengan mudah membangun menggunakannya. Ini sekali lagi menyokong konsistensi pengeluaran pembangunan dan memudahkan proses pembangunan.

    Kami menyebut masa penjimatan sebelum ini. Packer juga boleh membina dan menggunakan imej -imej ini selari. Oleh itu, anda boleh membina imej untuk tuan rumah yang berbeza, awan peribadi anda, dan vagrant hampir serentak. Di samping itu, cermin "pra-bakar" ini lebih cepat daripada kotak yang dikonfigurasikan dalam vagrant. Lebih cepat! Jika pasukan anda telah "didayakan" dan memusnahkan kotak, perisian pra-bakar dan imej yang dikonfigurasikan yang dibuat dengan Packer akan menyelamatkan pasukan anda banyak masa.

    Proses Packer juga membuat membuat imej asas berulang. Ini bermakna sistem pengeluaran anda mempunyai kualiti yang lebih tinggi, kerana pembinaan semula imej VM boleh diuji dan automatik terlebih dahulu. Dengan kata lain, Packer membantu mengurangkan kesilapan manusia.

    Apabila membina cermin, anda juga boleh mengawal beberapa subprocesses. Kami akan membincangkannya kemudian. Anda juga boleh membaca lebih lanjut mengenai konsep dan ciri Packer dalam dokumentasi Packer. Perhatikan bahawa anda boleh membina imej untuk pelbagai platform yang berbeza. Anda juga boleh menggunakan banyak program konfigurasi (seperti Chef, Boneka, Ansible) atau perisian konfigurasi skrip shell. Dan, anda boleh melakukan pemprosesan pasca, seperti membuat kotak vagrant atau menolak imej ke pendaftaran Docker (dan banyak lagi).

    wow ... Terdapat terlalu banyak teori, bukan?

    mari kita lakukan sesuatu yang praktikal untuk membantu menjelaskan konsep Packer dan cara menggunakannya.

    beberapa aliran kerja pembungkus:

    Ini adalah perwakilan visual dari apa yang akan kita lakukan.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Walaupun Packer tidak memerlukan vagrant untuk membuat imej, vagrant ditambah kepada graf di atas untuk memberi anda pemahaman yang lebih baik tentang di mana ia berada di "paip".

    Untuk membuat anda mula mempelajari asas -asas Packer, matlamat latihan berikut adalah untuk membuat imej yang boleh dijalankan di Rackspace dan fail "kotak" VirtualBox. Matlamatnya adalah untuk menunjukkan kepada anda bahawa anda boleh menjana imej dan konfigurasi yang sama untuk pembangunan dan penggunaan pada pelayan pengeluaran (teori) anda.

    Kami menggunakan Rackspace kerana ia mempunyai backend yang sangat mudah untuk menguruskan infrastruktur mengira, dan kerana ia menggunakan OpenStack, sistem standard untuk pengurusan infrastruktur.

    kami juga menggunakan VirtualBox kerana ia adalah sistem virtualisasi tempatan yang bebas dan digunakan secara meluas. Jika anda lebih suka, anda boleh menggunakan sistem lain seperti AWS dan VMware, bagaimanapun, anda perlu mengubah suai bahan yang disediakan dalam tutorial ini kerana ia dibuat khusus untuk kedua -dua sistem.

    Sila ambil perhatian: Pelayan maya yang kami bina dalam artikel ini tidak semestinya "pengeluaran siap". Mereka hanya untuk tujuan demonstrasi.

    Imej awal yang akan kami bina dengan Packer akan menjadi imej Debian Jessie (64-bit) dengan Nginx dan Php7 pra-dipasang.

    Keperluan: Sebelum anda memulakan, anda perlu memasang Vagrant dan Virtualisasi Virtualbox Software (versi 5.0) pada komputer anda. Anda juga memerlukan komputer 64-bit. Jika anda menggunakan sistem Windows, anda juga harus memasang Git untuk Windows supaya kami boleh menggunakan konsol bashnya.

    Seperti yang saya nyatakan di atas, kami menggunakan Rackspace dalam tutorial ini, jadi anda perlu membuat akaun di sana. Menyediakan akaun agak cepat dan mudah.

    anda juga memerlukan sambungan internet yang agak cepat, kerana VirtualBox membina muat turun imej yang sangat besar (kira -kira 250MB). Akhirnya, anda perlu mempunyai kira -kira 12GB ruang cakera percuma di komputer anda untuk menyelesaikan keseluruhan proses.

    Artikel ini juga mengandaikan bahawa anda tahu pengetahuan asas menggunakan perintah vagrant, ssh, dan shell, dan mempunyai pengetahuan asas mengenai mesin linux dan maya.

    Sediakan komputer anda untuk menjalankan Packer

    Sila ikuti arahan untuk memasang Packer di komputer anda.

    Pada masa penulisan, Packer 0.11.0 baru saja dikeluarkan.

    Selepas pemasangan selesai, masukkan paket dalam konsol (git bash) anda. Anda mesti melihat sesuatu seperti ini.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Sekarang, kami akan pergi ke Rackspace dan memulakan pelayan dan membuat imej asas. Nota: Jika anda mempunyai AWS atau sokongan pembungkus lain sebagai tuan rumah awan untuk platform pembina, langkah -langkah yang perlu anda ambil akan sama. Kami memperkenalkan Rackspace dalam tutorial ini. Juga ambil perhatian bahawa membuat pelayan akan mengenakan bayaran beberapa yuran ke akaun hos anda. Walau bagaimanapun, jumlahnya akan kecil. Kos mengikuti tutorial ini tidak boleh melebihi satu dolar.

    Teruskan membina pelayan Jessie 8 dan namakannya "Ujian Packer". Rackspace sangat intuitif dan mudah difahami. Mulakan pelayan 1GB untuk membuat imej daripadanya.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Selepas pelayan aktif, buat cermin pelayan yang baru dibuat (butang "Operasi" di sudut kanan atas). Selepas membuat dan menyimpan imej, anda boleh memadam pelayan.

    pergi ke "Server- & gt; Mirror" dan anda harus melihat imej baru anda. Klik untuk pergi ke halaman butiran Mirror. Kami memerlukan ID cermin.

    Hashicorp's Packer - Is It Something for PHP Developers? Baiklah. Sekarang anda sudah bersedia untuk imej asas untuk digunakan di Rackspace, kami akan mula membina imej kami sendiri. Proses ini sebenarnya agak rumit, terutamanya bagi mereka yang hanya mempunyai pengetahuan terhad tentang persekitaran pelayan dan pembungkus. Oleh itu, untuk memberikan bantuan, kami telah membuat repositori pembungkus demo untuk anda muat turun. Sila klon repositori ini dari konsol (git bash) anda.

    Pindah ke direktori "PHP-Packer-Demo" yang baru diwujudkan.
    <code>git clone https://github.com/smolinari/PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    Gunakan editor kegemaran anda untuk membuka fail Jessie64.json dan masukkan kelayakan pengguna Rackspace anda dan ID cermin.
    <code>cd PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    Sidenote cepat: Anda juga boleh menambah kekunci API Rackspace anda dan bukannya kata laluan anda. Jika anda benar -benar mula menggunakan Packer, anda juga boleh memindahkan kelayakan akses untuk memisahkan fail dan mengabaikannya menggunakan Git. Walau bagaimanapun, berbuat demikian adalah di luar skop artikel ini. Hashicorp's Packer - Is It Something for PHP Developers?

    fail jessie64.json adalah teras Packer. Ini adalah fail konfigurasi yang mengawal Packer untuk melakukan tindakan. Ia sama dengan vagrantfile yang digunakan dalam vagrant (kami juga memberikan anda vagrantfile dalam muat turun).

    kini jalankan Packer dengan arahan berikut.

    Proses binaan ini mengambil masa beberapa minit. Oleh kerana kita sedang mengusahakan tutorial, mari kita faham apa yang berlaku di dalam Packer sambil menunggu ia selesai. Proses ini tidak boleh melebihi kira -kira 30 minit, atau output dalam konsol tidak boleh berhenti selama lebih dari 10 minit. Jika ini benar, ralat telah berlaku.

    <code>packer build jessie64.json</code>
    Salin selepas log masuk
    Salin selepas log masuk

    pembina

    Hashicorp's Packer - Is It Something for PHP Developers? Pertama, Packer memulakan proses membina menggunakan imej asas yang kami tentukan. Imej -imej ini dimulakan sebagai pelayan itu sendiri, dan kami juga menentukan pelayan ini dalam fail Jessie64.json. Anda boleh mencari nilai JSON spesifik "pembina" di bahagian atas fail Jessie64.json.

    Pembina bertanggungjawab untuk membuat cermin yang anda mahukan serasi dengan persekitaran yang anda targetkan. Sebagai contoh, menggunakan AWS AMI, anda sebenarnya boleh membina imej VirtualBox anda untuk digunakan dengan Vagrant dan AWS.

    Dalam latihan kami, kami menggabungkan imej "OpenStack" dan "VirtualBox-ISO". Malangnya, Packer tidak dapat menggunakan imej OpenStack untuk membina imej VirtualBox, jadi kami juga mencipta imej VirtualBox.

    anda akan melihat bahagian "boot_command" dalam kod JSON di atas. Di sini kita sebenarnya berada di automasi untuk memasukkan arahan yang diperlukan untuk memasang Debian Jessie 8 sebagai sistem operasi di VirtualBox VM. Anda juga boleh menonton proses pemasangan di VirtualBox apabila Packer sedang membina, jika anda mahu.

    Sudah tentu, terdapat banyak "sihir" yang berlaku di sini, anda harus benar -benar memahami mekanisme dalaman pemasangan Linux dan mekanisme dalaman Packer untuk menggabungkan imej Virtualbox secara manual. Syukurlah, terdapat banyak orang DevOps yang sangat baik yang menyediakan fail Packer. Json kepada orang ramai.

    Program Konfigurasi

    Apabila pembina memulakan imej dalam VM di Rackspace dan VirtualBox, Packer akan mula mengkonfigurasi perisian yang ditakrifkan dalam skrip shell. Dengan Packer, anda juga boleh menggunakan sistem seperti boneka, chef, atau ansible, dan banyak sistem lain untuk mengatur konfigurasi. Kami hanya menggunakan skrip shell, anda boleh mencari skrip ini dalam direktori /skrip.

    Ini adalah bahagian konfigurasi fail konfigurasi kami.

    <code>git clone https://github.com/smolinari/PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    program konfigurasi "fail" adalah bagaimana kami menambah konfigurasi kepada VM. Ia memuat fail konfigurasi pada komputer kami ke dalam direktori /TMP pada VM. Semasa proses konfigurasi, terdapat beberapa arahan dalam skrip shell yang menyalin fail konfigurasi ke lokasi yang betul pada VM. Kami mempunyai fail php.ini seperti fail konfigurasi "lalai" Nginx atau PHP yang diubahsuai. Anda boleh mencari fail yang kami gunakan dalam folder /transfer_files.

    Anda juga akan melihat bahagian "Override" di atas. Ini memberitahu Packer untuk menjalankan skrip tertentu hanya untuk setiap binaan imej. Dalam latihan kami, kami perlu melakukan pemprosesan yang kurang pada imej "OpenStack" untuk menjadikannya "konsisten" dengan imej VirtualBox, jadi kami hanya memproses skrip persediaan.sh.

    Akhir sekali, terdapat bahagian pemproses pasca konfigurasi.

    <code>cd PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    Ini bertanggungjawab untuk benar -benar membina kotak vagrant.

    Adalah penting untuk diingat bahawa semua yang kita konfigurasi sekarang adalah "pra-bakar" ke cermin. Packer menyelamatkan kami (atau pasukan pembangunan kami) banyak masa dengan automasi ini!

    Imej yang dibina

    Selepas Packer telah mengkonfigurasi semua perisian yang kami konfigurasikan dalam fail Jessie64.json, ia akan menutup VM dan menyimpan imej baru VM tersebut. Untuk imej Rackspace, anda akan menemui imej baru di bahagian Imej yang disimpan di panel Kawalan Pengurusan Rackspace. Untuk imej VirtualBox, anda akan menemui fail "Jessie64.box" dalam direktori semasa.

    itu sahaja. Packer telah melakukan tugasnya!

    Apa yang harus saya buat sekarang?

    Anda kini boleh menggunakan imej Rackspace untuk membuat pelayan baru. Cubalah. Pergi ke bahagian pelayan dan pilih Buat pelayan, kemudian pergi ke cermin yang disimpan. Anda harus melihat imej yang baru disimpan di bawah pelayan yang dipadam. Pilihnya dan mulakan pelayan. Sebaik sahaja ia aktif, anda boleh mendapatkan alamat IP yang diberikan kepada anda dan memasukkannya ke dalam penyemak imbas anda. Anda harus melihat skrin selamat datang NGINX.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Untuk imej VirtualBox, kita juga perlu menggunakan vagrant untuk beberapa kerja. Baca dengan teliti sekarang. Ini akan menjadi sangat sukar!

    Buat VirtualBox VM

    Dalam direktori yang mengandungi fail vagrant, masukkan arahan berikut.

    <code>git clone https://github.com/smolinari/PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    itu sahaja! Ok, kami membantu anda dengan membuat fail vagrant untuk anda. Anda perlu mengetahui lebih lanjut mengenai Vagrant untuk membuat fail yang tersedia sendiri. Seperti yang dinyatakan sebelum ini, jika anda seorang pemaju yang serius, anda harus belajar ini.

    anda kini harus melihat imej baru sebagai VM dalam UI VirtualBox.

    Perintah pertama di atas menambah kotak baru kepada Vagrant, jadi ia tahu di mana untuk menggunakannya. Kami menamakan kotak "Jessie64" dan menggunakan kotak yang kami buat. Perintah kedua memberitahu Vagrant untuk membuat mesin maya di VirtualBox dan menjalankannya.

    anda juga akan melihat bahawa permulaan awal kotak hanya mengambil masa satu atau dua minit. Jika kita terus mengkonfigurasi dalam vagrant, ia akan mengambil masa 10 hingga 20 minit. Ini menjimatkan masa lagi.

    Sebaik sahaja perintah "vagrant up" selesai, masukkan url

    https://www.php.cn/link/14e676072a5b15381b6f7f33c3528215 di penyemak imbas anda.

    Dalam kedua -dua sistem, anda juga boleh menggunakan pengguna "vagrant" dan kata laluan "vagrant" kepada sambungan SSH. Pelayan ini tidak selamat!

    kami belum selesai sepenuhnya!

    mari kita buat sesuatu yang lebih menarik.

    Bayangkan berapa kali anda telah melakukan sesuatu yang serupa apabila anda melakukan langkah seterusnya. Kami kini mengautomasikan proses pemasangan dan konfigurasi perisian!

    mari kita anggap kita telah melakukan banyak kerja pembangunan Symfony. Mari kita teruskan dan sediakan imej kita supaya versi Symfony dipasang dan siap untuknya secara automatik.

    Sebelum anda memulakan, padamkan pelayan pada Rackspace. (Kami tidak mahu membelanjakan wang yang tidak perlu.)

    Juga, dalam konsol anda, mari kita tamatkan dan hapus kotak vagrant yang hanya dimuatkan. Masukkan perintah berikut:

    Pasang Symfony (dan Demo) untuk bersenang -senang (atau tidak?)
    <code>cd PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    Sekali lagi, mari kita anggap kita mempunyai pasukan pembangunan yang sering menggunakan Symfony. Mari mengautomasikan pelayan yang dibolehkan simfoni. Kami hanya memuatkan aplikasi Demo Symfony, tetapi kerja tambahan ini harus memberi anda idea yang baik tentang bagaimana Packer membantu menyokong usaha pembangunan dan infrastruktur dalam automasi.

    pergi ke direktori /skrip, buka skrip persediaan.sh dengan editor kegemaran anda, dan tambahkan kod skrip shell berikut ke bahagian bawah.

    <code>git clone https://github.com/smolinari/PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    Kod di atas pada dasarnya adalah apa yang perlu kita lakukan untuk menubuhkan Symfony, PHP, dan Nginx dengan betul.

    Komen telah ditambah untuk menjelaskan apa yang akan berlaku dalam langkah -langkah konfigurasi ini.

    Selepas menambah dan menyimpan kod di atas, mari kita biarkan Packer melakukan kerja berat lagi.

    bergerak satu tahap dalam sistem fail ke mana kami mempunyai fail Jessie64.json dan masukkan arahan yang kami masukkan sebelumnya.

    <code>cd PHP-Packer-Demo
    </code>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    Anda kini boleh mengendalikan perniagaan lain atau mempunyai satu lagi cawan kopi (atau berjalan -jalan di atas treadmill). Ia akan mengambil sedikit masa untuk membina imej demo Symfony baru.

    Apabila anda selesai, anda harus melihat skrin seperti ini.

    Hashicorp's Packer - Is It Something for PHP Developers?

    Sekarang bahawa imej itu dibina dan siap, kita boleh memulakan imej OpenStack sebagai pelayan baru di Rackspace lagi.

    Untuk VirtualBox VM anda, masukkan semula dua arahan yang disebutkan di atas di bawah "Buat VirtualBox VM".

    Untuk pelayan Rackspace, anda akan mendapat IP baru. Masukkan

    <code>packer build jessie64.json</code>
    Salin selepas log masuk
    Salin selepas log masuk
    anda harus melihat aplikasi demo Symfony berjalan.

    Pada VM tempatan anda, anda boleh memasukkan yang berikut:

    <code> "builders": [
        {
          "type": "openstack",
          "username": "ENTER_RACKSPACE_USERNAME_HERE",
          "password": "ENTER_RACKSPACE_PASSWORD_HERE",
          "region": "IAD",
          "identity_endpoint": "https://identity.api.rackspacecloud.com/v2.0",
          "ssh_username": "root",
          "image_name": "Test Packer Image",
          "source_image": "ENTER_YOUR_IMAGE_ID_HERE",
          "flavor": "2"
        },
        {
          "type": "virtualbox-iso",
          "boot_command": [
            "<esc><wait>",
    </wait></esc>        "install <wait>",
    </wait>        "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/vanilla-debian-8-jessie-preseed.cfg <wait>",
    </wait>        "debian-installer=en_US <wait>",
    </wait>        "auto <wait>",
    </wait>        "locale=en_US <wait>",
    </wait>        "kbd-chooser/method=us <wait>",
    </wait>        "netcfg/get_hostname={{ .Name }} <wait>",
    </wait>        "netcfg/get_domain=vagrantup.com <wait>",
    </wait>        "fb=false <wait>",
    </wait>        "debconf/frontend=noninteractive <wait>",
    </wait>        "console-setup/ask_detect=false <wait>",
    </wait>        "console-keymaps-at/keymap=us <wait>",
    </wait>        "keyboard-configuration/xkb-keymap=us <wait>",
    </wait>        "<enter><wait>"
    </wait></enter>      ],
          "disk_size": "10140",
          "guest_additions_mode": "disable",
          "guest_os_type": "Debian_64",
          "hard_drive_interface": "sata",
          "headless": true,
          "http_directory": "http",
          "iso_checksum": "dd25bcdde3c6ea5703cc0f313cde621b13d42ff7d252e2538a11663c93bf8654",
          "iso_checksum_type": "sha256",
          "iso_url": "http://cdimage.debian.org/cdimage/release/8.3.0/amd64/iso-cd/debian-8.3.0-amd64-netinst.iso",
          "shutdown_command": "sudo /sbin/halt -p",
          "ssh_password": "vagrant",
          "ssh_username": "vagrant",
          "ssh_port": "22",
          "ssh_wait_timeout": "10000s",
          "vm_name": "debian-jessie",
          "vboxmanage": [
            ["modifyvm", "{{.Name}}", "--memory", "1024"],
            ["modifyvm", "{{.Name}}", "--cpus", "1"]
          ]
        }
      ],
    </code>
    Salin selepas log masuk
    anda akan melihat kandungan yang sama.

    Ia sejuk, bukan?

    Kesimpulan:

    kami melihat kembali masa lalu dan kemudian kembali ke masa kini. Mudah -mudahan kami membuat anda memahami sebab -sebab virtualisasi komputer, penciptaan perisian seperti Vagrant dan Packer, dan hubungan antara keduanya.

    Jika anda berjaya membuat dua pelayan, anda juga boleh membayangkan kelebihan yang boleh diberikan oleh Packer sebagai ahli DevOps dan pemaju. Kelebihan ini termasuk, tetapi tidak terhad kepada:

      Konsistensi pengeluaran -persekitaran pembangunan hampir sama dengan persekitaran pengeluaran.
    • Simpan Masa-Perisian dan Konfigurasi adalah "Pra-Baked" dalam imej, dan anda tidak lagi perlu menambahkannya secara manual.
    • Cermin pengujian alam sekitar boleh dianggap "lengkap" dan diuji untuk mengelakkan kesilapan manusia.
    • Versi Persekitaran - Apabila anda menukar persekitaran, anda boleh menggunakan Git untuk versi pembungkus yang berbeza.
    • menyokong "seni bina yang tidak berubah" - bukannya membina atau mengubah suai VM yang sedia ada (yang mungkin menjadi sumber kesilapan), hanya "memusnahkan" contoh VM dan membuat yang baru.
    Saya harap anda menikmati artikel ini dan latihan imej membina dengan Packer. Sila beritahu kami pemikiran anda mengenai Packer dalam komen di bawah.

    Soalan Lazim Mengenai Packer Hashicorp, untuk Pemaju PHP

    Apakah pembungkus Hashicorp dan bagaimana ia memberi manfaat kepada pemaju PHP?

    Packer Hashicorp adalah alat sumber terbuka yang mengautomasikan penciptaan mana -mana jenis imej mesin. Ia menyokong pengurusan konfigurasi moden dengan membolehkan anda menulis kod infrastruktur dan menyimpannya dalam sistem kawalan versi. Packer boleh menjadi alat yang mengubah permainan untuk pemaju PHP. Ia membolehkan anda mewujudkan persekitaran pembangunan yang sama, dengan itu mengurangkan masalah "berjalan pada mesin saya". Ia juga membolehkan anda membuat imej siap sedia yang boleh digunakan dalam pengeluaran dalam beberapa minit, bukan jam atau hari.

    Bagaimana Packer dibandingkan dengan alat lain yang serupa?

    Packer menonjol untuk kepelbagaian dan keserasiannya. Ia menyokong pelbagai platform, termasuk AWS, DigitalOcean, Docker, Google Cloud, dan banyak lagi. Ia juga mengintegrasikan dengan baik dengan alat hashicorp lain seperti Terraform dan Vagrant untuk menyediakan aliran kerja yang lancar untuk infrastruktur pengurusan.

    bagaimana memasang Packer?

    Packer mudah dipasang. Ia diedarkan sebagai pakej binari untuk semua platform dan seni bina yang disokong. Anda hanya perlu memuat turun pakej yang sesuai dengan sistem anda dari laman web Packer, unzipnya, dan gerakkannya ke jalan anda.

    Bagaimana untuk membuat imej mesin menggunakan Packer?

    Untuk membuat imej mesin menggunakan Packer, anda perlu menulis fail templat dalam format JSON. Fail ini mentakrifkan jenis mesin dan perisian yang akan dipasang. Sebaik sahaja templat siap, anda boleh menggunakan arahan "Packer Build" untuk membuat imej.

    Bolehkah saya menggunakan Packer dengan alat pengurusan konfigurasi saya yang sedia ada?

    Ya, Packer berfungsi dengan baik dengan alat pengurusan konfigurasi yang sedia ada seperti Chef, Boneka, Ansible, dll. Anda boleh menggunakan alat ini untuk mengkonfigurasi perisian pada imej mesin yang dibuat oleh Packer.

    Bagaimanakah Packer mengendalikan kegagalan semasa penciptaan imej?

    Packer mempunyai mekanisme pengendalian ralat yang kuat. Jika ralat berlaku semasa penciptaan imej, Packer menandakan imej sebagai gagal dan membersihkan semua sumber yang dibuat. Ini memastikan bahawa anda tidak berakhir dengan pencerminan separuh siap atau tidak konsisten.

    Bolehkah saya menggunakan Packer dalam saluran penyepaduan berterusan/berterusan saya (CI/CD)?

    benar -benar. Packer sangat sesuai untuk saluran paip CI/CD. Anda boleh menggunakannya semasa proses membina untuk membuat imej mesin dan kemudian menggunakan imej tersebut ke persekitaran pengeluaran anda.

    bagaimana untuk debug masalah di Packer?

    Packer menyediakan log terperinci untuk membantu anda menyahpepijat masalah. Anda juga boleh membolehkan mod debug untuk mendapatkan output yang lebih terperinci semasa penciptaan imej.

    Bolehkah saya menyumbang kod ke projek Packer saya?

    Ya, Packer adalah projek sumber terbuka yang mengalu -alukan sumbangan masyarakat. Anda boleh menyumbang kod dengan melaporkan kesilapan, mencadangkan ciri, meningkatkan dokumentasi, atau mengemukakan permintaan tarik.

    di mana saya boleh mendapatkan lebih banyak sumber untuk belajar Packer?

    laman web rasmi Packer dan repositori GitHub adalah tempat yang bagus untuk memulakan pembelajaran. Mereka menyediakan dokumentasi, tutorial, dan contoh yang komprehensif. Anda juga boleh menemui banyak catatan blog, video dan kursus dalam talian mengenai Packer di Internet.

Atas ialah kandungan terperinci Packer Hashicorp - Adakah sesuatu untuk pemaju PHP?. 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