ウォグラントを簡単に説明すると、これは、お気に入りの構成管理システムとお気に入りの仮想化システムを使用して、繰り返し環境を作成するためのツールです。 そして、仮想化システムと構成管理システムが多数ある場合、vagrantはその種のユニークな製品であり、類似物はありません。
しかし、状況をより詳細に検討してください。 現在、Vagrantは次の仮想化システムをすぐにサポートしています。
- VirtualBox-令状が始まったのは彼のサポートでした。
- VMware-有料プラグインが必要です。
- AWS-仮想マシンはAmazonクラウドで直接実行できます。
さらに、次のプラグインはサードパーティの開発者によって作成されました(もちろん、すべてがここにリストされているわけではありません)。
- Vagrant-lxcは、コンテナ仮想化システムのプラグインです。 LXC 、少し湿っているが、活発に開発中。
- Vagrant-libvirt-libvirtがサポートするすべての仮想化システムをサポートすることを約束します。それらは約12あります。
- Vagrant-kvmは、 KVM仮想化システムのプラグインです。
- Vagrant-parallelsは、 Parallels仮想化システムのプラグインです。 Parallelsでは、WindowsをMacで実行できるだけでなく、インフラストラクチャを開発することもできます。さらに、当社のExpress 42の従業員はこれを正常に実行できます。 このプラグインは、Parallels社自身によって開発されており、積極的に開発されています。
念のため、Ubuntu 12.04でのParallelsのボックスはこちらです。
さまざまな仮想化システムを使用するvagrantは、CI環境でのテストを使用してインフラストラクチャのさまざまな側面をテストする不可欠なツールになります。
仮想化システムを接続したら、構成管理システムを決定する必要があります。 現在、次のプロビジョニングシステムがサポートされています。
- シェル-古き良きシェルスクリプト。 XXI世紀では、もはや面白くありません。
- Ansibleは、最新の構成管理システムです。
- シェフ-おそらく誰もが彼について聞いたでしょう。 スタンドアロン(Chef Solo)およびサーバー(Chef Client)バージョンがサポートされています。
- DockerはImmutable Serverの概念をサポートする最近のシステムです(これについては、最新リリースのDevops Deflopeポッドキャストで説明しました)。
- Puppetは最も一般的な構成管理システムの1つです。 スタンドアロンおよびサーバーバージョンがサポートされています。
- Saltは、Salt Stack構成管理システムです。
その後、すべてが非常に簡単です-オペレーティングシステムの「参照」イメージが必要です。 自分でそれを行うことができますが、それほど難しくはありませんが、たとえばウェブサイトVagrantBox.esで準備することができます。 Ubuntu 12.04でのVirtualBoxのボックスはこちらにあります 。
それでも既製のソリューションが気に入らない場合は、基本的なイメージの作成を自動化するプロジェクトがあります。 たとえば、 VeeWee ( Habré に関する彼に関する紹介記事 )およびPackerです。 後者は、浮浪者の作者であるミッチェル・ハシモトによって作成されました。 残念ながら、ロシア語のレビューはありませんが、次の記事のいずれかでそれについて書きます。
参照OSイメージは、開発から戦闘まで、すべての環境で同じものを使用することに意味があることに注意することが重要です。
その後、Vagrantfileを使用してすべてをまとめます。 たとえば、複数のマシンを一度に実行できるようにする構成ファイルを提供します。これは、分散環境をテストする必要がある場合に非常に便利です。
Vagrant.configure("2") do |config| config.vm.define :infra do |main| main.vm.box = "ubuntu12.04-chef11" main.vm.hostname = "infra" config.vm.network :forwarde_port, guest: 80, host: 8002 config.vm.network :private_network, ip: "192.168.100.13" main.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] end config.vm.provision :chef_solo do |chef| chef.log_level = :info chef.roles_path = "roles" chef.data_bags_path = "data_bags" chef.add_role "base" chef.add_role "zabbix-db" chef.add_role "zabbix-server" chef.add_role "graylog2" end end config.vm.define :vm1 do |main| main.vm.box = "ubuntu12.04-chef11" main.vm.hostname = "vm1" config.vm.network :forwarded_port, guest: 80, host: 8001 config.vm.network :private_network, ip: "192.168.100.14" main.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] end config.vm.provision :chef_solo do |chef| chef.log_level = :info chef.roles_path = "roles" chef.data_bags_path = "data_bags" chef.add_role "base" chef.add_role "zabbix-client" chef.add_role "projectname" end end end
同様の構成ファイルを使用して、たとえば
vagrant up vm1
vagrant up infra
または
vagrant up vm1
など、仮想マシンを個別に上げることができます。
ここで記事を完成させることができますが、とりわけ、その機能を拡張し補完するwagrant用の多くのプラグインがあります。 最も有名なプラグインのリストは wagrant wikiにあります。 私の意見では、最も興味深いものがここにあります。
- Vagrant-cachier-さまざまなパッケージマネージャー(deb、rpm)のリポジトリへの要求をキャッシュします。これにより、マシンをはるかに高速に上げることができます。
- Vagrant-librarian-chef -vagrantとlibrarian-chefの統合。 librarian-chefが必要な理由については、記事をご覧ください 。
- Vagrant-berkshelf-vagrantとBerkshelfの統合(司書シェフのアナログ)。
- Sahara-このプラグインを使用すると、仮想マシンを「カット」して、簡単にロールバックできます。
Wagrantは、プロジェクトの環境を再現可能な方法で準備するのに役立ちます。 Wagrantを使用すると、開発の早い段階から統合を開始できます。 これがインフラストラクチャを「準備する」唯一の方法であると私は深く確信しています。 しかし、今ではそのような料理をする人はほとんどいません。 そして、「Express 42」はそのように準備します。