開発環境を繰り返し構築する必要はもうありません - Vagrant

開発環境を繰り返し構築する必要はもうありません - Vagrant

新しい同僚が会社に入社するたびに、その同僚は自分のコンピューター上でさまざまな環境を構成する必要があり、これは時間と労力がかかります。開発とテストを実行するたびに、開発環境を手動で再構成して構築する必要があり、手順が面倒でエラーが発生しやすくなります。

偉大な神がここにいるとき、彼はそれを建てます。偉大な神がここにいないとき、彼は胸に手を当ててそこに座ってため息をついています。この目的のために、VVVVVagrant が誕生しました!!!

仮想マシンオーケストレーションツール Vagrant

彼は、仮想マシンに基づいて、完璧な物理的分離を作成できます。

一度構築すればどこでも使用できます。新入社員はイメージをコピーするだけですぐに開発を開始できます。ボスのお気に入りです!

ネットワーク構成を制御し、クラスターを構築するには、テキストと数行だけが必要です。

シェル スクリプト、Ansible の自動デプロイメントなどをサポートする優れたサードパーティ サポートも、彼を安心させています。彼は私たちの主人公 Vagrant です。

今回は、Vagrant がもたらす利便性を享受するために、Python 開発環境の構築を例に挙げてみます。

インストール

Mac環境用の2行コマンド

  1. brew cask 仮想ボックスのインストール
  2. brew cask vagrant をインストールする

他の環境では、2つのインストールパッケージをダウンロードするだけです

Vagrant パッケージ https://www.vagrantup.com/downloads.html

バーチャルボックス https://www.virtualbox.org/wiki/Downloads

インストールが成功したか確認する

  1. $ vagrantバージョン
  2. インストールバージョン: 2.2.5
  3. 最新バージョン: 2.2.5
  4.  
  5. 最新バージョンVagrant実行しています

環境を初期化する

画像をダウンロードする最初の方法

  1. 浮浪者ボックス追加  --provider 仮想ボックス Centos/7  

このうち、--provider virtualboxはvirtualboxによって公式に提供されているかどうかを確認することを意味します

2番目のダウンロード方法

  1. 浮浪者ボックス追加   --name centos/7 --provider virtualbox /Users/pzqu/Documents/code/test/vbox/centos_virtualbox.box  

ここで、/Users/pzqu/Documents/code/test/vboxが私が選択したダウンロードディレクトリです。

ボックス操作の一連のコマンドドキュメントについては、https://www.vagrantup.com/docs/cli/box.html を参照してください。

初期化

  1. cd /Users/pzqu/Documents/code/test/vbox
  2. vagrant init centos/7

この時点で、ディレクトリ内に Vagrantfile が生成されます。これが自動構成の鍵となります。

https://www.vagrantup.com/docs/vagrantfile/

コメントを見れば、主に Ruby 構文を含む書き方を大まかに把握できます。ローカル ディレクトリを仮想マシンにマウントしたり、ネットワークを構成 (パブリック ネットワークにアクセスするか、仮想マシンのみがアクセスできるようにするか) したりできます。

仮想マシンを構成するだけでなく、さまざまなプロビジョナーを通じてソフトウェアを自動的にインストールし、構成を調整することもできます。

詳細については、https://www.vagrantup.com/docs/provisioning/ を参照してください。

私の設定は比較的シンプルです。私は centos/7 システムを使用し、ネイティブ コード プロジェクトのディレクトリを /data/code ディレクトリにマウントします。

仮想マシンを起動したら、仮想マシンに直接開発環境をインストールし、イメージにコンパイルします。

構成は以下のとおりです

  1. Vagrant.configure( "2" ) を実行して |config| を実行します。
  2. config.vm.box = "centos/7"  
  3. config.vm.synced_folder "/Users/pzqu/Documents/code/gerrit" "/data/code"  
  4. 終わり 

ファイルディレクトリのマウント時にエラーが発生しました

このプラグインをインストールするだけです

  1. vagrant プラグインのインストール vagrant-vbguest

開発環境を構築する

Vagrantfile が配置されているディレクトリで、vagrant up を使用して仮想マシンを起動します。

次に、vagrant sshを使用して仮想マシンにログインします。

次に、次のコマンドを実行して、必要な Python 環境を自動的にインストールします。 requirements.txt は Python プロジェクトによって自動的に生成されることに注意してください。

  1. pip インストール -r 要件.txt

補足: 要件ファイルを自動生成する方法

  1. pip フリーズ > requirements.txt

PyCharm を設定する

設定を開いてプラグインを追加します

Vagrant環境の設定

仮想マシン内の Python パスを指定します。最初のステップですべて表示を選択します。

Vagrantを選択し、仮想マシン内のイメージディレクトリとPythonパスを選択します。

起動モードを設定します。ここでは、主に Python インタープリターの Python パスと作業ディレクトリのプロジェクト パスである Swagger を生成します (これは仮想マシンにマップされたパスであることに注意してください。前のセクションで /data/code を構成しました。これは、ローカルで開発するときに自動的に変更されます)

走る

他の人が使用できるようにボックス画像ファイルをエクスポートする

1. vboxmanage list vms コマンドを実行して、Vagrant の下にある仮想マシンのリストを表示します (私の仮想マシンには「vbox_default_1563884434349_3918」というボックスが 1 つだけあります)。

  1. $ vboxmanage VMのリスト
  2. 「vbox_default_1563884434349_3918」 {59864f0b-9731-4839-baa2-95d9a6aab731}

2. ボックスイメージをエクスポートする

まずシャットダウンしてからエクスポートします。 vagrant packageはボックスをエクスポートするためのパッケージングコマンドです

  1. vagrant パッケージ--base vbox_default_1563884434349_3918 --output centos7_hanah_environment.box  

--baseはローカルを表す

vbox_default_1563884434349_3918はエクスポートしたいボックスの名前です

--outputはエクスポートを意味します

centos7_hanah_environment.boxは、エクスポートされたボックスがcentos7_hanah_environment.boxという名前で現在のディレクトリに保存されることを意味します。

3. 次に、次の内容が表示されます。これはエクスポートが成功したことを意味します。

  1. $ vagrant パッケージ--base vbox_default_1563884434349_3918 --output centos7_hanah_environment.box  
  2. ==> vbox_default_1563884434349_3918: VM をエクスポートしています...
  3. ==> vbox_default_1563884434349_3918: パッケージを次の場所に圧縮しています: /Users/pzqu/Documents/code/test/vbox/centos7_hanah_environment.box

牛乳1本分くらいの時間で終わります。箱のサイズによって異なります。私のボックスは約900Mです。

これで、それを友達に直接送信することができ、1 つのコマンドで友達はあなたとまったく同じ開発/テスト環境を取得できます。

  1. $ vagrantボックスでcentos7_hanah_environmentを追加します。./centos7_hanah_environment.box
  2. ==> box: Box ファイルがメタデータとして検出されませんでした。直接追加します...
  3. ==> ボックス: プロバイダーボックス'centos7_hanah_environment' (v0)を追加します:
  4. box: 次の場所から必要なファイルを解凍しています: file:///Users/pzqu/Documents/code/test/vbox/centos7_hanah_environment.box
  5. ==> ボックス: ボックス'centos7_hanah_environment' (v0)正常に追加しました  'バーチャルボックス' !

vagrant box エイリアスボックス名の追加

その他のアイデア

Vagrant の機能と Docker の機能には多くの重複があるようです。なぜ Docker を使用しないのですか? 1秒で最適な環境を起動できるだけでなく、軽量かつ純粋です。

長所と短所を比較検討すると、Vagrant 自体は仮想化技術ではありません。実行するには、VirtualBox などの仮想化プラットフォームをインストールする必要があります。これは、仮想マシン用のプラグインおよびオーケストレーション ツールのようなものです。これは仮想マシンのバッチ管理を目的としており、開発環境を即座に作成するためによく使用されます。

Docker 自体は、構築が迅速でリソースを占有しない仮想化テクノロジーです。これはアプリケーションのオーケストレーションを目的としており、開発環境と本番環境を統合するためによく使用されます。

結局のところ、Vagrant と Docker の違いは、仮想化プラットフォームとコンテナの違いに関係しています。

Docker は依然としてシステムカーネルに依存しています。カーネルが異なる場合は、再構築する必要があります。

時間があれば Docker を使った開発環境の構築について、また機会があれば Docker Machine についてお話ししましょう。

この記事はWeChatの公開アカウント「Three Minutes of Programming」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合は、Three Minutes Programming の公開アカウントにご連絡ください。

<<:  Alibaba Cloud Intelligence 社長、張建鋒氏:「完全なクラウド移行の転換点が到来しました!」

>>:  5つの分散トランザクションソリューションの長所と短所の比較

推薦する

高品質のオリジナルコンテンツは、高品質のコンテンツを作成するためのアイデアを提供します

検索エンジンは、ウェブサイトのコンテンツが高品質のオリジナルコンテンツであるかどうかをどうやって判断...

百度の今後のSEOアルゴリズム調整に関する予測

Baidu の SEO に関する提案では、SEO はウェブサイト上の高品質なコンテンツを検索エンジン...

企業におけるクラウドコンピューティングの利点と課題

クラウド コンピューティングは、ユーザーがどこからでもオンデマンドでコンピューティング リソースにア...

APPの運営とプロモーションに重要なチャンネルです! ! !

アプリが検索プラットフォームで良いランキングを獲得したい場合、アプリのダウンロード数を増やし、ブラン...

ロンドンオリンピック:ソーシャルメディア規制は難しすぎる

テンセントテクノロジーニュース(呉記)北京時間8月2日、海外メディアの報道によると、ロンドンオリンピ...

Baidu の SEO に関する提案: ホワイトハット SEO に対するフレンドリーなサポート

以前、百度はSEOに関して「ストライキ」声明を出しましたが、短期間で撤回されました。このような声明は...

メイレレの最高の実行

この記事のタイトルを 2 つ考えました。1 つ目は、「データが明るくなくなったのは喜ばしいことか、そ...

無料の基本情報は鉄鋼ウェブサイトの発展において避けられないトレンドである

タオバオがイーチネットに勝利できた最も重要な要因は、中国のインターネット文化の基盤である「無料」をし...

オンラインで新年を祝う新しい方法:春節期間中の若者のインターネット生活を理解する!

春節がインターネットと出会うとき、新年の雰囲気がオフラインからオンラインへと広がります。同じ新年の習...

Go 言語を使用して Kafka を操作し、メッセージの損失を防ぐ方法

[[423396]]背景現在、一部のインターネット企業は、コアビジネスを実行するためにメッセージ キ...

百度の業界資格認証がオンラインで公開され、偽造ウェブサイトの取り締まり強化につながる可能性

5月25日、一部のネットユーザーは、Baiduを使用してWebページを検索すると、図に示すように、一...

権威あるウェブサイトを構築するためのテクニックの分析

競合他社のウェブサイトをチェックして、その BR が非常に高いことがわかったとき、うらやましく思いま...

アリババの新しい時系列予測モデルに関する論文がICML2022に選出されました

一定期間の履歴データがあれば、AI は天候の変化、グリッド負荷需要、交通渋滞を正確に予測できるでしょ...

スマートホストのオレゴン-米国(ポートランド)データセンターVPSの簡単なレビュー、TikTok/Netflixのブロック解除

スマートホストはどうですか?スマートホストポートランドVPSはどうですか? Smarthost は、...