検索
ホームページバックエンド開発PHPチュートリアルHashicorp' s Packer-それはPHP開発者にとって何かですか?

Packer:PHP開発者ツールボックスの強力なツール?それはあなた次第です!

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

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

要するに、PHP開発者として、Packerはあなたのツールボックスに不可欠なツールですか?答えは、あなたが何のために働いているかによって異なります。

サーバー側の作業(クライアントまたは企業向け)に関与し、同時に開発作業を行う場合、答えはイエスです。パッカーはあなたをとても助けることができます。

しかし、あなたが単なる開発者であり、サーバー側の作業に直接対処することはめったにない場合、パッカーはあなたをあまり助けません。

それでも、サーバー環境を作成することの基本を学ぶことは、どのPHP開発者にとっても大きな利益をもたらすでしょう。あなたはあなたのキャリアを通じて多かれ少なかれこれらのテクノロジーに遭遇します(あなたが作成するすべてはそれらの上で実行されます!)。これらの専門知識を習得することは、間違いなくあなたのキャリアの見通しを改善するでしょう!少なくとも、DevOpsの同僚の仕事をよりよく理解することができます。

これに興味がある場合、または頻繁に手動サーバー側の作業をしている場合は、読み続けてください。

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

キーポイント:

  • パッカーの適用性:パッカーは、一貫したサーバー環境の作成を簡素化するのに役立つサーバー管理と開発タスクに関与しているPHP開発者にとって特に役立ちます。
  • 開発自律性:最新のコンピューティングテクノロジーの進歩により、開発者は個人のデバイスで複雑な開発環境を直接管理し、それにより自律性を改善し、開発環境と生産環境の一貫性を高めることができます。
  • Vagrantとの統合:PackerとVagrantの両方が開発環境を強化しますが、Packerのユニークな機能は、さまざまなプラットフォームで使用できるマシン画像を自動的に作成し、環境設定時間を節約することです。
  • DevOpsコラボレーション:Packerは、DevOpsの専門家に、開発チームに生産整列環境を提供し、開発プロセスを簡素化し、セットアップエラーを削減するツールを提供します。
  • 実用的なアクション:この記事では、パッカーのセットアップとそれを使用して仮想マシンイメージを作成するための実用的なチュートリアルを提供し、複雑な構成タスクを効率的に処理するパッカーの能力を示します。
  • 将来の開発:Packerなどのツールを使用することを学ぶことは、現在のプロジェクトのニーズを満たすだけでなく、将来のさまざまなチームとの技術的統合とコラボレーションのために開発者を準備することもできます。
振り返ってみる:

短い#2:あなたがVagrantに熟練していて、その目的をツールとして理解している場合は、この記事のこの部分をスキップしてください。

これは、当時の平均的な独立したPHP開発者のワークフローであり、コードを開発サーバーにプッシュする(またはさらに悪いことに、生産サーバーに直接)(実際、現在も同じプロセスを使用しています)。当時、Webサーバー自体を構築することは、通常、他の人の仕事でした。

さらに、開発チームが協力するためには、それほど遠くないことで、何らかの形の同時バージョン制御システムがある可能性があり、チームは自動展開を設定することさえできます。変更がリポジトリにコミットされると、ステージングまたは生産システムに自動的に展開されます。この状況は、実際には当時のWebアプリケーション開発に最適なテクノロジーでした。

素晴らしい昔では、継続的な統合、仮想マシン、クラウドコンピューティング、インフラストラクチャオーケストレーション、データセンターの自動化、さらには「DevOps」という用語は基本的に不明です。彼らは生まれたばかりです。 Amazonは、インターネットサービスビジネスを開始しました。覚えておいてください、これはわずか10年前でした!

ああ、時間はどれほど簡単だよね?

いいえ、そうではありません。当時、開発はより遅く、面倒で、エラーが発生しやすくなりました。また、サーバーは常にテストのために「有効」する必要があります。これは通常、開発者が最新のPHPバージョンなどの使用準備が整ったサーバーがあるまで待つ必要があることを意味します。多くの場合、これはしばしば戦いであり、「ネットワーク人」にとって、サーバーを「操作」することは、火を消すようなものです。

Hashicorp's Packer - Is It Something for PHP Developers? コンピューティングと仮想化今日:

今、コンピューターテクノロジーが指先で、開発者はより複雑な開発インフラストラクチャを携帯することができます。今日、ラップトップまたはPCのコンピューティングパワーは、10年前のWebサーバーのコンピューティングパワーよりもはるかに大きい。

実際、今日のスマートフォンの多くは、10年前のサーバーよりも強力です。

Hashicorp's Packer - Is It Something for PHP Developers? テクノロジーは素晴らしいですね。

利用可能なコンピューティング能力の増加に伴い、このコンピューティングパワーが別々の「マシン」に分解できることをますます多くの人々が認識し始めています。これにより、完全に異なる操作を同時に実行できます。さらに重要なことは、コンピューティングパワーをより適切に利用して、リソースを節約できることです。これらは、コンピューティングパワー仮想化の主なドライバーです。

言い換えれば、今日、仮想マシンを作成する機能により、開発者は独自の開発環境を運ぶことができ、適切な職場環境を提供しなければならない他の人に限定されなくなりました。さらに重要なことは、完全な開発環境をローカルに構築し、完全なWebサーバーをシミュレートできることです。

これにより、開発者がより自律的になるだけでなく、このローカル開発環境にはもう1つの大きな利点があります。それは「開発プロダクションの一貫性」と呼ばれます - 私たちは初心者に優しい本「ジャンプスタートPHP環境」にいます。これについて詳しく説明しました。開発プロダクションの一貫性は、基本的に、開発者がアプリケーションが最終的に生産環境に展開されるのとほぼ同じシステムで開発できることを意味します。

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

生産の一貫性の利点 - 開発者は、正しいことを初めて実行できるため、開発者が高品質のコードを書くことができます。

今、開発者は、非常に複雑な開発環境を含むバックパックで非常に複雑なアプリケーションを開発するために必要なすべてを持つことができます。

明らかに、この能力は複雑さももたらします。仮想サーバーを構築する必要があり、ソフトウェアをインストールして構成する必要があります。これらはすべて非常に時間がかかり、時間はお金です。これはまた、開発者がそのような環境を実行するために多くを学ぶ必要があるかもしれないことを意味します。これも時間がかかります。

vagrantの外観:

開発者が開発環境の「建物」を完了するのを支援するために、Hashicorp Inc.はVagrantというプログラムを開始しました。 Vagrantを使用すると、開発環境構成はコードであり、簡単に共有し、ロールバックし、前方に転がすことができます。開発者は、サーバーがセットアップに数時間かかるか、失敗が解決するのに数時間かかる場合があることを心配することなく、PHPの最新バージョンなど、新しいことを無料で試すことができます。開発者は、誰もがこの環境を作成するのを待つ必要はありません。また、環境が完全にクラッシュした場合、誰も気にしません。

Vagrantの詳細 - Vagrantへの再導入:PHPを使用する正しい方法

しかし、解決すべき別の問題がまだあります。 Vagrantは開発環境を構築するのに最適ですが、特に多くの構成を使用して、実行するのに時間がかかります(構成の詳細については以下を参照してください)。関係するソフトウェアによっては、ボックスを構築してソフトウェアを構成するのに2〜20分かかることがあります。

この時間消費は、Vagrantが一度に単一の仮想化システム(「プロバイダー」と呼ばれる)用に1つのボックスのみを構築できるという事実を悪化させます。たとえば、環境をローカルに構築し、AWSに環境を構築する場合は、2つの異なるVagrantファイルを作成して個別に実行する必要があります。これは実際には実用的ではありません。要するに、Vagrantは単一の開発環境を構築するのが非常に得意であり、それだけです。

パッカーの外観:

続行するには、DevOpsの役割をもっとプレイする必要があります。 Packerは、仮想化されたマシンイメージを比較的単純な中央構成に作成するタスクを配置するため、自動開発環境でVagrantの同じ利点を得ることができますが、基本画像の開発にも使用できます。

仮想マシンの画像は、仮想デバイスとも呼ばれます。これは、新しい仮想マシンの作成に使用できる仮想マシンの事前に構築されたコピーです。 Vagrantの用語では、これらの画像は「ボックス」と呼ばれます。

独自のミラーを作成するプロセスを理解している場合、手動操作は非常に面倒であることがわかります。わからない場合は、手動でそれらを構築する手間をスキップでき、パッカーの使用を開始できるため、幸運です。ただし、ミラー/サーバーの構築の基本を学ぶ必要があります。繰り返しになりますが、これは開発者にとって貴重な知識であり、開発者はすべての時間をかけて基本を学ぶ必要があります。

Packerの使用を開始し、すでにVagrantを使用している場合、最初の質問は「PackerとVagrantの違いは何ですか?」最終的に、PackerはVagrantが開発環境を構築するために使用できる画像を作成します。 HashicorpのVagrant Boxを以前に使用したことがある場合は、Packerで構築されている可能性があります。

Packerを使用しているDevOpsの人として、開発チームに、使用できる生産環境の画像を提供できます。これは再び開発プロダクションの一貫性をサポートし、開発プロセスを簡素化します。

前に節約時間を節約しました。パッカーは、これらの画像を並行して構築および展開することもできます。そのため、さまざまなホスト、プライベートクラウド、およびVagrantの画像をほぼ同時に作成できます。さらに、これらの「事前に焼かれた」ミラーは、Vagrantで構成されたボックスよりもはるかに速く始まります。はるかに速い!チームが「有効」され、ボックスを破壊した場合、パッカーで作成された事前焼きソフトウェアと構成された画像は、チームを大幅に節約できます。

パッカープロセスにより、基本的な画像の作成が再現可能になります。これは、VMの画像再構成を事前にテストおよび自動化できるため、生産システムの品質が高いことを意味します。言い換えれば、パッカーはヒューマンエラーを減らすのに役立ちます。

ミラーを構築するときは、いくつかのサブプロセスを制御することもできます。後で説明します。 Packerのドキュメントで、Packerの概念と機能の詳細についても読むこともできます。多くの異なるプラットフォームの画像を作成できることに注意してください。また、多くの構成プログラム(シェフ、パペット、アンシブルなど)やシェルスクリプト構成ソフトウェアを使用することもできます。また、Vagrantボックスの作成やDockerレジストリ(およびその他多く)に画像を押すなど、後処理を行うことができます。

すごい...理論が多すぎますね。

パッカーの概念とそれの使用方法を明確にするのに役立つ実用的なことをしましょう。

いくつかのパッカーワークフロー:

これは、私たちがやろうとしていることの視覚的な表現です。

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

パッカーは画像を作成するためにVagrantを必要としませんが、上記のグラフにVagrantが追加され、「パイプ」のどこにあるかをよりよく理解することができます。

パッカーの基本を学び始めるために、次の演習の目標は、RackspaceとVirtualBoxの「ボックス」ファイルで実行できる画像を作成することです。目標は、(理論的)生産サーバーで開発と使用のための同じ画像と構成を生成できることを示すことです。

Rackspaceは、コンピューティングインフラストラクチャを管理するための非常にシンプルなバックエンドを備えており、インフラストラクチャ管理の標準システムであるOpenStackを使用しているためです。

また、VirtualBoxは、無料で広く使用されているローカル仮想化システムであるため、VirtualBoxも使用しています。必要に応じて、AWSやVMwareなどの他のシステムを使用できますが、両方のシステム専用に作成されているため、このチュートリアルで提供される資料を変更する必要があります。

注意:この記事で作成した仮想サーバーは、決して「生産準備ができている」ことではありません。彼らはデモンストレーションのみを目的としています。

パッカーで構築する最初の画像は、NginxとPHP7がプリインストールされたDebian Jessie(64ビット)画像になります。

要件:開始する前に、コンピューターにVagrant and Virtualization Software VirtualBox(バージョン5.0)をインストールする必要があります。 64ビットコンピューターも必要です。 Windowsシステムを使用している場合は、Bashコンソールを使用できるようにWindows用のGitもインストールする必要があります。

上で述べたように、このチュートリアルではRackspaceを使用しているため、アカウントを作成する必要があります。アカウントの設定は比較的高速で簡単です。

また、VirtualBoxは非常に大きな画像ダウンロード(約250MB)を構築するため、比較的速いインターネット接続も必要です。最後に、プロセス全体を完了するには、コンピューターに約12GBの無料ディスクスペースが必要です。

この記事では、Vagrant、SSH、およびShellコマンドの使用に関する基本的な知識を知っており、Linuxと仮想マシンの基本的な知識があることも想定しています。

パッカーを実行するようにコンピューターを設定します

指示に従って、コンピューターにパッカーをインストールしてください。

執筆時点で、Packer 0.11.0がリリースされました。

インストールが完了したら、(git bash)コンソールにパケットを入力します。あなたはこのようなものを見るはずです。

Hashicorp's Packer - Is It Something for PHP Developers? 次に、Rackspaceにアクセスしてサーバーを起動してベースイメージを作成します。注:BuilderプラットフォームのクラウドホストとしてAWSまたはその他のパッカーサポートがある場合、実行する必要がある手順は似ています。このチュートリアルでRackspaceを紹介します。また、サーバーを作成すると、ホストアカウントにいくつかの料金が請求されることに注意してください。ただし、金額は小さくなります。このチュートリアルに従うコストは、1ドルを超えてはなりません。

Jessie 8サーバーの構築を続け、「パッカーテスト」と名付けます。 Rackspaceは非常に直感的で理解しやすいです。 1GBサーバーを起動して、そこから画像を作成します。

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

サーバーがアクティブになったら、新しく作成されたサーバー(右上隅の「操作」ボタン)のミラーを作成します。画像を作成して保存した後、サーバーを削除できます。

「サーバー> mirror」に移動すると、新しい画像が表示されます。それをクリックして、ミラーの詳細ページに移動します。ミラーIDが必要です。

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

わかりました。基本的な画像がRackspaceで使用できるようになったので、独自の画像の構築を開始します。このプロセスは、特にサーバー環境とパッカーに関する知識が限られている人にとっては、実際には非常に複雑です。そのため、ヘルプを提供するために、ダウンロードできるデモパッカーリポジトリを作成しました。 (git bash)コンソールからこのリポジトリをクローンしてください。

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

新しく作成された「PHP-Packer-Demo」ディレクトリに移動します。

<code>cd PHP-Packer-Demo
</code>

お気に入りの編集者を使用してJessie64.jsonファイルを開き、Rackspaceユーザー資格情報とミラーIDを入力します。

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

クイックサイドノート:パスワードの代わりにRackspace APIキーを追加することもできます。実際にPackerの使用を開始する場合は、アクセス資格情報を移動してファイルを分離し、Gitを使用してそれらを無視することもできます。ただし、そうすることはこの記事の範囲を超えています。

jessie64.jsonファイルはパッカーの中核です。これは、アクションを実行するためにパッカーを制御する構成ファイルです。 Vagrantで使用されているVagrantFileに似ています(ダウンロードでVagrantFileも提供します)。

次のコマンドでパッカーを実行します。

<code>packer build jessie64.json</code>
このビルドプロセスには数分かかります。チュートリアルに取り組んでいるので、実際にパッカーが完成するのを待っている間に何が起こっているのかを実際に理解しましょう。このプロセスは約30分を超えないでください。または、コンソールの出力が10分以上停止しないでください。これが本当なら、エラーが発生しました。

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

ビルダー

最初に、Packerは、定義した基本画像を使用してビルドプロセスを開始します。これらの画像はサーバー自体として開始され、Jessie64.jsonファイルにこれらのサーバーも定義します。 jessie64.jsonファイルの上部にある「ビルダー」の特定のJSON値を見つけることができます。

<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>
ビルダーは、ターゲットとしている環境と互換性のあるミラーを作成する責任があります。たとえば、AWS AMIを使用して、VagrantとAWSで使用するためにVirtualBoxイメージを実際に作成できます。

私たちの演習では、「OpenStack」と「VirtualBox-ISO」画像を組み合わせています。残念ながら、PackerはOpenStack画像を使用してVirtualBoxイメージを作成できないため、VirtualBoxイメージも作成しました。

上記のJSONコードの「boot_command」セクションに気付くでしょう。ここでは、実際には、Debian Jessie 8をVirtualBox VMのオペレーティングシステムとしてインストールするために必要なコマンドを入力するために自動化に参加しています。必要に応じて、Packerが構築しているときにVirtualBoxのインストールプロセスを視聴することもできます。

もちろん、ここでは多くの「魔法」が起こっています。このような仮想ボックス画像を手動で組み合わせるために、LinuxのインストールとPackerの内部メカニズムの内部メカニズムを本当に理解する必要があります。ありがたいことに、このようなPacker .JSONファイルを一般に提供する優れたDevOpsの人々がたくさんいます。

構成プログラム

ビルダーがRackspaceおよびVirtualBoxのVMで画像を起動すると、PackerはShellスクリプトで定義されたソフトウェアの構成を開始します。 Packerを使用すると、Puppet、Chef、Ansibleなどのシステムを使用して、構成を調整するために他の多くのシステムを使用することもできます。シェルスクリプトのみを使用し、これらのスクリプトを /scriptsディレクトリに見つけることができます。

これは、構成ファイルの構成部分です。

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>
「ファイル」構成プログラムは、VMに構成を追加する方法です。コンピューター上の構成ファイルをVMの /TMPディレクトリにロードします。構成プロセス中に、シェルスクリプトには、構成ファイルをVMの正しい場所にコピーするコマンドがあります。 Nginxの「デフォルト」構成ファイルや変更されたPHPなどのPHP.iniファイルがあります。 /transfer_filesフォルダーで使用しているファイルを見つけることができます。

また、上記の「オーバーライド」セクションにも気付くでしょう。これにより、パッカーは、各画像ビルドに対してのみ特定のスクリプトを実行するように指示します。私たちの演習では、virtualboxイメージと「一貫した」にするために「openstack」画像での処理を減らす必要があるため、Setup.shスクリプトのみを処理する必要があります。

最後に、コンフィ分後のプロセッサパーツがあります。

これは、浮浪者ボックスを実際に構築する責任があります。
<code>cd PHP-Packer-Demo
</code>

現在構成しているものはすべて、鏡に「事前に焼かれている」ことを覚えておくことが重要です。 Packerは、この自動化で多くの時間を節約します!

構築された画像

PackerがJessie64.jsonファイルで構成したすべてのソフトウェアを構成した後、VMSを閉じて、これらのVMの新しい画像を保存します。 Rackspace画像の場合、Rackspace Managementコントロールパネルの保存された画像セクションに新しい画像があります。 VirtualBoxイメージの場合、現在のディレクトリに「jessie64.box」ファイルがあります。

それだけです。パッカーはその仕事をしました!

私は今何をすべきですか?

Rackspaceイメージを使用して新しいサーバーを作成できるようになりました。試してみてください。サーバーセクションに移動し、[サーバーの作成]を選択し、保存されたミラーに移動します。削除されたサーバーの下に、新しく保存された画像が表示されるはずです。それを選択してサーバーを起動します。アクティブになったら、IPアドレスを指定してブラウザに入力できます。 nginxウェルカム画面が表示されます。

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

VirtualBox画像の場合、いくつかの作業にVagrantを使用する必要があります。今すぐ注意深く読んでください。これは非常に難しくなります!

virtualbox vm

を作成します Vagrantファイルを含むディレクトリに、次のコマンドを入力します。

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>
それだけです!わかりました、私たちはあなたのためにVagrantファイルを作成することであなたを助けます。利用可能なファイルを自分で作成するには、Vagrantの詳細について詳しく知る必要があります。前述のように、あなたが真剣な開発者であるならば、あなたはこれを学ぶべきです。

VirtualBoxのUIでVMとして新しい画像を表示する必要があります。

上記の最初のコマンドは、新しいボックスをVagrantに追加するため、どこで使用するかを知っています。ボックスに「jessie64」と名付け、作成したばかりのボックスを使用します。 2番目のコマンドは、VirtualBoxで仮想マシンを作成して実行するようにVagrantに指示します。

また、ボックスの最初の起動には1分または2分しかかからないことに気付くでしょう。 Vagrantで構成を続けると、10〜20分かかります。これにより、時間を節約できます。

「Vagrant up」コマンドが完了したら、url

https://www.php.cn/link/14e676072a5b15381b6f7f33c3528215

urlをブラウザーに入力します。

両方のシステムでは、「Vagrant」ユーザーとパスワード「Vagrant」をSSH接続に使用することもできます。これらのサーバーは安全ではありません!

まだ完全には完成していません!

もっと面白いことをしましょう。

次のステップを実行したときに、同様のことを何回行ったか想像してみてください。現在、ソフトウェアのインストールと構成プロセスを自動化しています!

多くのSymfony開発作業を行ったと仮定しましょう。 Symfonyバージョンがインストールされ、自動的に準備が整うように、進んで画像を設定しましょう。

開始する前に、Rackspaceでサーバーを削除します。 (私たちは不必要なお金を使いたくありません。)

また、コンソールでは、ロードしたVagrantボックスを終了して削除しましょう。次のコマンドを入力してください:

symfony(およびdemo)を楽しみます(またはそうではありませんか?)

繰り返しますが、Symfonyを使用することが多い開発チームがあると仮定しましょう。 Symfony対応サーバーを自動化しましょう。 Symfony Demoアプリケーションのみをロードしますが、この追加の作業により、Packerが自動化における開発とインフラストラクチャのオーケストレーションの取り組みをサポートする方法についての良いアイデアが得られるはずです。
<code>cd PHP-Packer-Demo
</code>

/scriptsディレクトリに移動し、お気に入りのエディターでsetup.shスクリプトを開き、次のシェルスクリプトコードを下部に追加します。

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

上記のコードは、Symfony、PHP、およびNginxを適切にセットアップするために、基本的に行う必要があることです。

これらの構成手順で何が起こるかを説明するために、

コメントが追加されました。

上記のコードを追加して保存した後、Packerに再び重い仕事をさせましょう。

ファイルシステムの1つのレベルをJessie64.jsonファイルを持っている場所に移動し、以前に入力したコマンドを入力します。

<code>cd PHP-Packer-Demo
</code>

他のビジネスを処理したり、コーヒーをもう1杯持ったりすることができます(またはトレッドミルを歩き回ることができます)。新しいSymfonyデモイメージを構築するには時間がかかります。

完了したら、このような画面が表示されるはずです。

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

画像が構築されて準備が整ったので、OpenStack画像をRackspaceの新しいサーバーとして再び開始できます。

VirtualBox VMの場合、「VirtualBox VMの作成」に上記の2つのコマンドをもう一度入力します。

rackspaceサーバーの場合、新しいIPが取得されます。

を入力します
<code>packer build jessie64.json</code>

Symfonyデモアプリケーションが実行されているのが表示されます。

地元のVMでは、次のように入力できます。

<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>
同じコンテンツが表示されます。

かっこいいですよね?

結論:

私たちは過去を振り返り、それから現在に戻りました。うまくいけば、コンピューター仮想化の理由、VagrantやPackerなどのソフトウェアの作成、2つの間の接続を理解できるようになりました。

2つのサーバーを正常に作成すると、PackerがDevOpsメンバーおよび開発者として提供できる利点を想像することもできます。これらの利点には、以下が含まれますが、これらに限定されません

生産の一貫性 - 開発環境は、生産環境とほぼ同じです。
  • 時間の節約 - ソフトウェアと構成は画像で「事前に焼き付けられている」ため、手動で追加する必要がなくなります。
  • 環境テスト - 複製されたミラーは「完全」と見なされ、ヒューマンエラーを避けるためにテストすることができます。
  • 環境バージョン化 - 環境を変更すると、GITを使用してさまざまなパッカービルドをバージョンできます。
  • 「不変のアーキテクチャ」をサポートします - 既存のVM(これはエラーのソースである可能性がある)を構築または変更する代わりに、VMインスタンスを「破壊」して新しいインスタンスを作成します。
  • この記事と、パッカーと一緒に画像を構築するエクササイズを楽しんだことを願っています。以下のコメントで、パッカーに関するご意見をお聞かせください。
Hashicorpのパッカーに関するFAQ、PHP開発者のためのFAQ

ハシコープのパッカーとは何ですか?また、PHP開発者にどのように利益をもたらしますか?

Hashicorpのパッカーは、あらゆる種類のマシン画像の作成を自動化するオープンソースツールです。インフラストラクチャコードを作成してバージョン制御システムに保存できるようにすることにより、最新の構成管理をサポートします。パッカーは、PHP開発者向けのゲームを変えるツールになることができます。これにより、同じ開発環境を作成することができ、「マシンでの実行」の問題を軽減できます。また、数時間や日ではなく数分で生産に展開できるすぐに使用できる画像を作成することもできます。

パッカーは他の同様のツールとどのように比較されますか?

パッカーは、その汎用性と互換性を際立たせています。 AWS、DigitalOcean、Docker、Google Cloudなど、さまざまなプラットフォームをサポートしています。また、TerraformやVagrantなどの他のハシコープツールとうまく統合して、管理インフラストラクチャにシームレスなワークフローを提供します。

パッカーのインストール方法は?

パッカーは簡単にインストールできます。サポートされているすべてのプラットフォームとアーキテクチャのバイナリパッケージとして配布されます。 Packer Webサイトからシステムに合ったパッケージをダウンロードし、解凍し、パスに移動するだけです。

パッカーを使用してマシンイメージを作成する方法は?

パッカーを使用してマシン画像を作成するには、JSON形式でテンプレートファイルを記述する必要があります。このファイルは、インストールするマシンとソフトウェアの種類を定義します。テンプレートの準備ができたら、「パッカービルド」コマンドを使用して画像を作成できます。

既存の構成管理ツールでPackerを使用できますか?

はい、Packerはシェフ、人形、Ansibleなどの既存の構成管理ツールとうまく連携しています。これらのツールを使用して、Packerが作成したマシン画像でソフトウェアを構成できます。

パッカーは、画像作成中にどのように障害を処理しますか?

パッカーには、強力なエラー処理メカニズムがあります。画像作成中にエラーが発生した場合、パッカーは故障したときに画像をマークし、作成されたすべてのリソースをクリーンアップします。これにより、半フィニッシュまたは一貫性のないミラーリングになりません。

継続的な統合/継続展開(CI/CD)パイプラインでPackerを使用できますか?

絶対に。パッカーは、CI/CDパイプラインに最適です。ビルドプロセス中に使用してマシン画像を作成し、これらの画像を生産環境に展開できます。

パッカーで問題をデバッグする方法は?

Packerは、問題をデバッグするのに役立つ詳細なログを提供します。また、画像作成中にデバッグモードがより詳細な出力を取得できるようにすることもできます。

パッカープロジェクトにコードを寄付できますか?

はい、パッカーはコミュニティの貢献を歓迎するオープンソースプロジェクトです。エラーを報告したり、機能を提案したり、ドキュメントを改善したり、プルリクエストを送信したりすることで、コードを貢献できます。

パッカーを学ぶためのリソースはどこで見つけることができますか?

Packerの公式WebサイトとGitHubリポジトリは、学習を開始するのに最適な場所です。包括的なドキュメント、チュートリアル、および例を提供します。また、インターネット上のパッカーに関する多くのブログ投稿、ビデオ、オンラインコースを見つけることもできます。

以上がHashicorp&#x27; s Packer-それはPHP開発者にとって何かですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDをどのくらいの頻度で再生する必要がありますか?セッションIDをどのくらいの頻度で再生する必要がありますか?Apr 23, 2025 am 12:03 AM

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPでセッションCookieパラメーターをどのように設定しますか?PHPでセッションCookieパラメーターをどのように設定しますか?Apr 22, 2025 pm 05:33 PM

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は何ですか?PHPでセッションを使用する主な目的は何ですか?Apr 22, 2025 pm 05:25 PM

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションをどのように共有できますか?サブドメイン間でセッションをどのように共有できますか?Apr 22, 2025 pm 05:21 PM

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。

HTTPSを使用することはセッションセキュリティにどのように影響しますか?HTTPSを使用することはセッションセキュリティにどのように影響しますか?Apr 22, 2025 pm 05:13 PM

HTTPSは、データ送信を暗号化し、中間の攻撃を防ぎ、認証を提供することにより、セッションのセキュリティを大幅に改善します。 1)暗号化されたデータ送信:HTTPSはSSL/TLSプロトコルを使用してデータを暗号化して、送信中にデータが盗まれたり改ざんされたりしないようにします。 2)中間の攻撃を防ぐ:SSL/TLSハンドシェイクプロセスを通じて、クライアントはサーバー証明書を検証して接続の正当性を確保します。 3)認証の提供:HTTPSは、接続が正当なサーバーであることを保証し、データの整合性と機密性を保護します。

PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

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 統合開発環境

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール