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

推薦する

Linodeはどうですか?米国中西部シカゴデータセンターのクラウドサーバー評価

Linodeは、米国中部の都市シカゴに自社データセンターを持ち、シカゴのクラウドサーバー事業を運営し...

hubhost: 48 元/KVM/2g メモリ/30g ハードディスク/無制限トラフィック VPS/モスクワ

hubhost はロシアのホスティング会社 (オフィスとデータセンターはモスクワにあります) で、2...

タイトルに間違ったキーワードを使うことについての簡単な説明

タイトルの魅力を構成するキーワードの秘密について話しましょう。それは何ですか?類似キーワードも多くの...

SEO ワーカーはどのようにして職場での自尊心を高めることができるでしょうか?

著者は、ウェブサイトの運用とメンテナンスの最適化は、日々の業務をこなすだけの単純なプロセスではないと...

#精品x:catalysthost、$12/年/4T トラフィック/10G ポート/シアトル/ラスベガス

しかし、山や尾根を「言葉では言い表せない」ほど越えるには、x が必要でしょうか?安い価格をご希望です...

ウェブサイト運営:ウェブサイトデータからウェブサイトの活路を見つける

ウェブマスター、特に草の根ウェブマスターであれば、複数のウェブサイトを運営することになります。しかし...

どのようなコンテンツが共有され、広まる可能性が高いでしょうか?

インターネットを通じてコン​​テンツが拡散する力はすごいですが、もちろん一部の**ビデオを除いて、イ...

3月にGoogleが行った検索アルゴリズムの改善をいくつか挙げる

Baidu が盲目的に Google を模倣しているとき、Google 検索が常に改善されていること...

IoT とクラウド コンピューティングの統合では、どのようなセキュリティ上の課題に直面しますか?

人、物、デバイス、ビジネスを結びつけるテクノロジーであるモノのインターネット (IoT) の採用がま...

2018年ガートナーAPMマジッククアドラントの有力者がTingyunのキラー機能に戻る:ビジネスとユーザーの理解

[51CTO.com からのオリジナル記事] ネットワーク システムのパフォーマンス管理から、さまざ...

OceanBase クラウドファースト体験

OceanBase(以下、OB)は、中国の優れた分散型データベースとして、近年急速に発展し、金融、電...

Baidu アルゴリズムの更新と調整: ウェブマスターが向上すべき SEO スキルの簡単な分析 (パート 2)

前回の記事「百度アルゴリズムの更新と調整:ウェブマスターが向上すべきSEOスキルの簡単な分析(パート...

SEO ルールが頻繁に更新されるウェブマスターにとって、将来の希望は何でしょうか?

SEO ルールが頻繁に更新されるウェブマスターにとって、将来の希望は何でしょうか?今年5月に百度がル...

quickweb-256M メモリ/年間 15 ドル/フェニックス/ロサンゼルス/フロリダ

quickweb は 2008 年に設立され、ニュージーランドに登録された VPS 企業です。中国人...

Pacificrack: クラスター VPS、$29.99/年/5 IP/2G メモリ/2 コア/20g SSD/10T トラフィック、最大 61 IP

本日より、Pacifractack は、マルチ IP VPS とクラスター VPS を年間 29.9...