[Vagrant+Ansible+VirtualBoxでlocal・本番構築自動化(Vagrant+Virtualbox
前回投稿した
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