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

推薦する

データのポータビリティを実現し、企業のクラウドへの移行を支援

今日のデジタル経済では、爆発的なデータの増加が世界中のあらゆる業界に広がり、サブスクリプション ソフ...

インタラクションデザイン: ページングか読み込みか? それが問題だ

【編集後記】この記事は@子木yoyoさんが個人ブログで公開したものです。 Web ページでもモバイル...

Alibaba Cloud の新しいコンテナ サービス ACK Anywhere: クラウド境界をあらゆるエンタープライズ シナリオに拡張

5G、AR、AIoT などのシナリオが次世代クラウド アーキテクチャの進化を推進し、コンテナがクラウ...

ファーウェイのクラウドERP移行ソリューションの評価、企業のクラウド化を加速

企業は完全なクラウド移行の時代を迎えており、ERP をクラウドに移行することが一般的な傾向となってい...

Baiduアルゴリズムを正しく定義し理解する方法

Baiduのアルゴリズムアップデートが発表されて以来、アップデート後のBaiduのアルゴリズムの定義...

第1回Techo Day Tencent Technology Open Day: Tencentはクラウドネイティブ、ビッグデータ、AI、オーディオ、ビデオを含む7つの「軽量」製品をリリースしました

クラウド時代において、開発者は反復的な開発の手間を軽減するために、より便利で「軽量」なツールを緊急に...

SEOなしでユーザーエクスペリエンスを最適化する方法

6月28日の百度Kステーション事件後、私は大手フォーラムで数え切れないほどのウェブマスターが「外部リ...

リアルタイムのオーディオとビデオによるソーシャルインタラクションは、ゲーム業界の発展に新たな変数を生み出します。

近年、オンラインライブストリーミングの台頭により、リアルタイムのオーディオとビデオのソーシャルネット...

香港スペース(香港ホスト、香港バーチャルホスト)

香港スペース: 通常は香港ホスティング、特に香港仮想ホスティングを指します。主な特徴は、高速で申請が...

電子商取引の背後にある価格戦争:今年20人以上の業界幹部が辞任

前回の急成長の後、2012年の電子商取引業界は「大魚が小魚を食べ、速い魚が遅い魚を蹴る」という統合の...

akkocloud: サンノゼ cn2 gia vps、永久 20% オフ、40 元/KVM/768M メモリ/10gSSD/600g トラフィック

昨年、Host Catは300Mbpsの帯域幅を持つAkkocloudのドイツのcn2 vpsを導入...

オンラインストアシステム構築におけるJAVAとPHPプログラミング言語の分析

中国では電子商取引の推進が成功し、JD.comやSuningなどの大型B2C総合オンラインショッピン...

クラウド サービス OpenAPI の 7 つの主要な課題: アーキテクトはどのように対処すべきでしょうか?

[[279233]] API は、モジュールまたはサブシステム間の相互作用のためのインターフェース定...

画像ショッピングガイドウェブサイト:中国における Pinterest の変貌

ユーザーがPinterestに登録する際は、FacebookまたはTwitterアカウントにログイン...

ハイブリッドクラウド: パブリッククラウドとプライベートクラウドのバランスをとる方法

クラウドでのデータの保存と処理にかかるコストと効率性への注目が高まるにつれ、多くの企業が業務をクラウ...