いまさらVagrant
当スライドのゴール
Vagrantの魅力を知ったあなたは導入せずにはいられなくなる
本題に入る前の雑談
いまさらVagrant?
もちろん新しい技術ではありませんし、
DockerとKubernetesのスライドの方が需要は高いでしょう。
しかし、Vagrantの魅力があることも無視出来ません。
当スライドの意図
当スライドでは、筆者がこうやって教えて欲しかったという視点で
Vagrantの名前は知っているけどという方
Web制作の開発環境について調べている方
Web制作部門の管理者の方を対象に
Vagrantをご紹介していこうと思います。
Point
Vagrant(ベイグラント)とは
仮想マシンを(簡単に)構築と共有する事が出来るツール
もっと詳しく
いつ(When)
制作する時に
テストする時に
どこで(Where)
ローカルPCで
共用PCで
だれが(Who)
フロントエンド・バックエンド制作者が
テストエンジニアが
なにを(What)
仮想マシンを
なぜ(Why)
制作環境を(簡単に)統一できる
導入コストが安い(学習コストが少ない)
制作環境を早く準備出来る(準備などが簡単)
すぐ元の環境に戻せる(簡単に破壊できる)
どのように(How)
コマンドを用いて
どのくらい(How much/How many)
ライセンス料などは無料で利用出来ます。
もっと詳しく
プログラミング言語 Ruby
プラグイン開発もRuby
対応OS Microsoft Windows, macOS, Linux
最新版 2.0.2 - 2018年1月30日
ライセンス MIT License
このソフトウェアを誰でも無償で無制限に扱って良い。
ただし、著作権表示および本許諾表示をソフトウェアのすべての複製または重要な部分に記載しなければならない。
作者または著作権者は、ソフトウェアに関してなんら責任を負わない。
公式サイト www.vagrantup.com
ここまでのまとめ
仮想マシンを(簡単に)構築と共有する事が出来るツール
コマンドラインで操作する
無料で使える
Reason
なぜVagrantを使うのか?
一貫性
~同じソフトウェア構成や環境設定になっている状態を保つ~
「僕の環境だと動くんですけど」「私の環境だと動かないんですけど」←それでは困る
XAMPPなどを使ってローカル環境を開発する場合は、各自で作業を行うので一貫性を保てません。
これにより生産性の低下を防ぎ、違う環境に配置した場合の不具合を減らせます。
理想としては、本番、検証、開発環境が一貫性のある構成になっているのが好ましいです。
それを簡単に導入出来ればよくありませんか?
冪等性
~ある操作を1回行っても複数回行っても結果が同じであることをいう~
「環境作成でハマってまして...」「とりあえずいろいろ設定変えて環境動きました」←それでは困る
開発環境を簡単に配布、複製することが出来る。
これによりチームメンバーの環境を迅速に統一、または委託先に環境を共有することが可能になる。
理想としては、環境を作成する時間を短くかつ正確に再現することが求められます。
環境作成は目的ではありません。手段です。
それを簡単に導入出来ればよくありませんか?
保守性
~機能や性能を保つ上で、日常的にどのくらいの作業が必要になるか、一部が故障した際にいかに容易に復旧など維持・管理のしやすさ~
「(複数のPHPのバージョンを切り替えたら)(php.iniを修正したら)(httpd.confを修正したら)Apacheが起動しないから助けて欲しい」←それでは困る
各自がローカル環境を作成することで生産性が高まります。
しかし、制作従事者全員がLinuxやミドルウェアの知識が必要なわけではありません。(あるに越したことはありませんが)
ある一人が環境を作成し、それを配布することでそれを可能にします。
また、調査や実装時に設定を変えたり、データベースを壊してしまったり
そういう場合でもすぐに元通りに復元することが出来ます。
理想としては、欲しい時にすぐ用意でき、不必要になれば破棄、再度必要ならする復元出来る保守作業が限りなく少なくすること
それを簡単に導入出来ればよくありませんか?
それVagrantで実現出来ます!!
example
どういう時に使う?
チームメンバーの配置または再配置
委託先企業に制作環境を共有
新たなプロジェクトのスタート
技術調査やプロトタイプの作成
社内共有PCを共用サーバとして利用
何が便利?
仮想マシンイメージをファイル化することが出来る(Boxファイル)
Boxファイルを配布することで環境を共有出来る
Boxファイルには仮想マシン設定を保存されている
ミドルウェア
データベース
ファイル化することで管理しやすくなる
各PCやデスクトップやラップトップでも同じ環境を作れる
共有フォルダを利用することで制作に必要なのはエディタとブラウザだけになる(生産性向上)
一貫性、冪等性、保守性が保たれる
Point
デメリット
マシン性能によってはパフォーマンスが悪い
古いマシンだとインストール出来ない
管理者権限必要
Vagrantのまとめ
仮想マシンを(簡単に)構築と共有する事が出来るツール
環境構築短縮、制作時の生産性向上
ローカル環境の品質が保たれる
それ以外にメリット多数
(スペックによっては)デメリットなし
One More Thing...
単語説明
ホストOS
ローカル環境のOS
ゲストOS
仮想マシンのOS
Boxファイル
仮想マシンイメージ
AWSで例えるとAMI
Box
Boxファイルから生成される仮想マシン
共有フォルダ
ローカルと仮想マシン間でファイルを同期する機能が用意されています。
デフォルトでは、ローカルのVagrantfileがあるフォルダと、仮想マシンの/vagrant が同期されています。
設定を変更することももちろん可能
Vagrantfile
仮想マシンの構成を記述するファイル。
主に以下の項目を指定します。
起動する仮想マシン指定(Box名を指定)
ネットワーク設定(ip指定することがほとんど)
共有フォルダ設定(ホストOSのパスからゲストOSのパスの指定、権限の指定)
マシンスペック設定(CPUやメモリの割り当てなど)
プロビジョニング(シェルスクリプトや構成管理ツールの実行指定)
プロバイダ
仮想化ソフト(仮想環境)のこと。
VagrantではデフォルトでVirtualBoxをサポートしていますが、プラグインをインストールすることでVMwareやParallels、AWS(EC2)などにも対応可能です。
覚えて置きたいよく使うコマンド
日々使うコマンド
vagrant up 仮想マシン起動
vagrant halt 仮想マシン停止
vagrant reload 仮想マシン再起動
たまに使うコマンド
新たなBoxファイルをもらった場合のコマンド
vagrant box add Box名 Box名.box Box追加
vagrant init Box名 Vagrantの初期化
新たなBoxファイルを作る場合のコマンド
vagrant package --output Box名.box
環境を削除する場合
vagrant destroy
上記7種類のコマンド以外はほとんど利用しないですね
座学はこれで十分。
Vagrantをインストールして試しましょう。
ありがとうございました。