私の意見では、ほとんどのITプロフェッショナルは
Vagrantを使用する必要があります。 誰がそれを知っているか-公式サイトから始めることをお勧めします。 Habréでは、
VagrantとChefを使用した開発環境や 、1分で新しい仮想マシンを
作成する、または「vagrant up!」などの vagrantのレビューもいくつかありました。 この記事では、浮浪者の「生態系」について詳しく説明します。
ウォグラントを簡単に説明すると、これは、お気に入りの構成管理システムとお気に入りの仮想化システムを使用して、繰り返し環境を作成するためのツールです。 そして、仮想化システムと構成管理システムが多数ある場合、vagrantはその種のユニークな製品であり、類似物はありません。
しかし、状況をより詳細に検討してください。 現在、Vagrantは
次の仮想化システムをすぐにサポートしています。
- VirtualBox-令状が始まったのは彼のサポートでした。
- VMware-有料プラグインが必要です。
- AWS-仮想マシンはAmazonクラウドで直接実行できます。
さらに、次のプラグインはサードパーティの開発者によって作成されました(もちろん、すべてがここにリストされているわけではありません)。
念のため、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にあります。 私の意見では、最も興味深いものがここにあります。
Wagrantは、プロジェクトの環境を再現可能な方法で準備するのに役立ちます。 Wagrantを使用すると、開発の早い段階から統合を開始できます。 これがインフラストラクチャを「準備する」唯一の方法であると私は深く確信しています。 しかし、今ではそのような料理をする人はほとんどいません。 そして、「Express 42」はそのように準備します。