開発環境を繰り返し構築する必要はもうありません - 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つの分散トランザクションソリューションの長所と短所の比較

推薦する

servermania-7 USD/XEN HVM Windows/1 GB RAM/60 GB HDD/2.5 TB トラフィック/2 IP

Servermania は、ブラックフライデーに XEN HVM WINDOWS ベースの特別な V...

百度が2013年の年間検索ランキングを発表、教育分野ではオンライン教育がホットワードに

A5 Webmaster Network は 12 月 24 日に、今日が 2013 年のクリスマス...

景文インターネット:業務再開を記念して、クラウドサーバー(VPS)20%割引、香港cn2\シンガポール\米国cn2\日本データセンター

景文インターネットは、感染症対策と業務・生産再開における段階的な成果を祝い、優遇プロモーションを実施...

非常に強力な国内NewSQL分散データベースオープンソース

最近、Inspur テクノロジー チームが開発した NewSQL 分散データベース ZNBase が...

地域ウェブサイトの運用と保守の最適化のプロセスにおける外部リンク構築のアイデアの簡単な分析

ウェブサイトの最適化コンテンツと外部リンクは切り離せない関係にあります。著者は日々ウェブマスターフォ...

chicagovps - $2.95/2g メモリ/4 コア/50g ハードディスク/2T トラフィック/5 コンピュータ ルーム

colocrossing傘下のchicagovpsブランドからプロモーションメールが届き、エンタープ...

ビッグデータの時代では、中小企業は購入記録を通じて電子メールマーケティングを実施できる

Windsor Circle は、中小企業が顧客の購入履歴を使用して成功する電子メール マーケティン...

ウェブサイトのスペースの選び方

ウェブサイトのスペースの重要性は、人間とその家のそれと似ています。私たちの日常生活はこの家で行われる...

veerotech: $5/KVM/512 メモリ/20g SSD/1T トラフィック/ノースカロライナ

VeeroTech Systems, LLC は完全に民営化されたアメリカの企業で、2010 年に設...

9つのマルチクラウド管理プラットフォームの評価

ハイブリッド クラウドやマルチクラウド環境の管理に役立つクラウド コンピューティング ツールとサービ...

#クラシックウェブサイト構築VPS:host1plus-7月はVPSが15%オフ/オプションのコンピュータルーム5室/[サポ​​ート] Alipay

host1plus.com、7月のプロモーションがリリースされました。VPSプロモーションのみ、仮想...

最新の! 2021 年のクラウド コンピューティングに関するトップ 10 の予測。クラウド業界は大きな変化を遂げるでしょうか?

今年に入ってから新型コロナウイルス感染症の感染拡大が続いており、さまざまな生産活動が予定通りに実施で...

2013 年に Baidu の最適化がますます困難になっているのはなぜでしょうか? 何をすべきでしょうか?

個人的には、現在ウェブサイトの最適化を行う人々は 2 つのカテゴリに分けられると考えています。1 つ...

オンライン教育のもう一つのルート: Hujiang.com のサンプル

インターネット教育の核となるのは、テクノロジーだけではなく、人間同士の交流です。 Hujiang.c...