😀

[Vagrant+Ansible+VirtualBoxでlocal・本番構築自動化(Vagrant+Virtualbox

2015/05/11に公開

前回投稿した
Vagrant+Ansible+VirtualBoxでlocal・本番構築自動化(Vagrant+Virtualbox編)

のおまけです。
Vagrant+VirtualBoxについてのおまけを記載します。


(toc)

・Vagrantコマンド頻出一覧

- vagrant作成
 vgrant init 
- 状態確認(起動中、停止など各インスタンスの状態を確認します。)
 vagrant status
- 一時停止
 vagrant suspend
- 起動
 vagrant up
- リロード
 vagrant reload
- 停止
 vagrant halt
- 削除(完全に削除されますのでbox化していない場合は注意)
 vagrant destroy

・box化して配布する場合。

今回はミドルウェアの用意、設定等はansibleで各環境で自動で行うためbox化しませんが、
ansibleのようなストラクチャ構築ツールを使わない場合は用意したインスタンスを配布するためにはboxファイルを作成し配布する必要があります。

まずvagrant ssh web01等で各インスタンス内に接続しミドルウェアのインストール、設定を行う。
そしてtotalディレクトリ(Vagrantfileを作成したディレクトリ)に戻り、下記コマンドでboxファイルを生成します。

vagrant package --output NAME.box(生成するbox名)

これを行うとNAME.boxが生成されます。
このboxファイルは容量が大きいためgitなどで管理する場合は.gitignoreに
下記を追加しましょう。

*.box

このboxを共有サーバなどに配置し、前編で用意したVagrantfileのbox指定部分でurl指定すると
他者のローカル環境でもそのまま再現が行えます。

config.vm.box_url = "http://~~~"

・ssh接続する場合

下記のようにssh接続したい場合,Vagrantfileでprivate_ipを設定した上で
下記のように接続できます。(defaultパスはvagrant)

ssh vagrant@192.168.20.10

・vagrant共有フォルダ設定

デフォルトはローカルのVagrantfile配置ディレクトリと、以下の仮想環境内のディレクトリが同期されています。
/vagrant

指定ディレクトリを共有フォルダにしたい場合はVagrantfileに下記のように設定します。
また同期対象から省く場合はrsync__excludeにファイル名を指定します。

config.vm.synced_folder "~/git/dummy/target",  "/usr/share/tomcat8/webapps", 
                        # ↑ローカルディレクトリパス    ↑仮想環境内のディレクトリパス
         type: "rsync", # 同期タイプ
         rsync__exclude: ["maven-archiver", "maven-status", "generated-sources",
                          "classes", "personal"] #同期する際に除きたいファイル名を指定。

Discussion