Open kurodakazumichi opened 6 years ago
ここからマシンにあったインストーラを取得、インストールする。 http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp
ここからマシンにあったインストーラーを取得、インストールする。 https://www.vagrantup.com/downloads.html
# 構文
# vagrant box add [options] <name, url, or path> <url>
vagrant box add centos67_64 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box
いろいろ書き方はあるようだが、この形で取得できる。
Box:
マシンイメージ、CentOS、UbuntuなどたくさんのBoxが存在するので使いたいものを取ってくるイメージ。
vagrant box list
vagrant box remove [boxの名前]
mkdir centos
cd centos
vagrant init centos67_64
vagrant up
# 起動している仮想マシンの状態を確認する
vagrant status
# 仮想マシンを起動する
vagrant up
#仮想マシンを終了する
vagrant halt
# 仮想マシンをスリープする
vagrant suspend
# 仮想マシンを復帰する
vagrant resume
# 仮想マシンを再起動する
vagrant reload
# 仮想マシンを破棄する
vagrant destroy
vagrant ssh
これだけで仮想マシンに接続できる。
yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on
sudo service iptables stop
sudo chkconfig iptables off
yum -y install httpd
httpdをインストールする。
sudo service httpd start
httpdをサービスで起動する。
sudo chkconfig httpd on
起動時にhttpdが自動で立ち上がるようにする。
sudo service iptables stop
ファイアーウォールを無効にする。
ファイアーウォールが有効だと設定がややこしくなるらしいので、ローカルなら切ってしまえ。
sudo chkconfig iptables off
起動時にファイアーウォールが起動しないようにする。
ファイル作成:
/var/www/html/index.html
<h1>Hello World!</h1>
ファイル編集:
Vagrantfile
〜省略
# Create a private network, which allows host-only access to the machine
# using a specific IP.
- # config.vm.network "private_network", ip: "192.168.33.10"
+ config.vm.network "private_network", ip: "192.168.33.10"
〜省略
プライベートネットワークを使う部分のコメントを外す。
vagrant reload
ブラウザで以下のURLにアクセス http://192.168.33.10
HOSTマシン(Mac)のVagrantfileがあるフォルダがGUESTマシン(VirtualBox)上の/vargrant
になっている。
先ほど作成したindex.html
を仮想マシン上ではなくマック上で編集できるように
ドキュメントルートの位置を変更するやり方を記載。
# /var/www/htmlを削除
sudo rm -rf /var/www/html
# /var/www/htmlで/vagrantを見るようにシンボリックリンクをはる
sudo ln -fs /vagrant /var/www/html
一見うまく動作していると思っていたが、どうにもリアルタイムに中身が同期されない。
調べているとvagrant up
時に一度rsync
で同期されるだけで
リアルタイムに反映するためにはプラグインをいれる必要がある事がわかった。
https://qiita.com/herring_roe/items/eb9a8e49aa1e7e6cf091 https://tulist.club/technology/dev-env/2017/11/12/137
vagrant plugin install vagrant-vbguest
# 共有フォルダの設定を以下のようにする
config.vm.synced_folder ".", "/vagrant",type:"virtualbox"
これでvagrantを起動するとリアルタイムに同期されるようになった。
プロビジョニングはvagrant up
をして起動した際に自動的に実行される処理のこと。
予め実行したいコマンドを用意しておき、Vagrantfileに設定を記述する事で実装できる。
ファイル編集:
Vagrantfile
config.vm.provision :shell, :inline => "echo hello world"
Vagrantfileに上記の一文を追加すると、起動時にecho hello world
が実行される。
vagrant up
でプロビジョニングが実行されるのは一番最初にvagrant up
をした時のみ
2回目以降はMachine already provisioned.
などと表示される。
vagrant provision
とするかvagrant up --provision
とする事で明示的にプロビジョンを実行できる。
前述した方法はVagrantfile
に直接shellを記述したが、shellを別ファイルに分ける事ができる。
その場合の方法は以下。
ファイル編集:
Vagrantfile
config.vm.provision :shell, path => "provision.sh"
ファイル作成:
Vagrantfileと同じフォルダにprovision.sh
echo hello world in provision.sh
ある程度サーバーの構築をした場合、その状態を保存して使いまわしたいという時に便利。
vagrant package
Vagrantfileのあるところで上記のコマンドを実行するとBoxが作成される。
package.box
というファイルが出来上がる。
# 構文
# vagrant box add <name> <box file>
vagrant box add my_box package.box
package.box
があるところで上記コマンドを実行すると‘my_box‘という名前で登録される。
登録されたboxはcentosなど他のBoxと同様に使う事ができる。
システムに登録されたら、元のpackage.box
は削除しても問題ない。
ssh-add ~/.ssh/id_rsa # gitで使ってる秘密鍵を登録
Vagrangfile
を編集
# agent forwardを有効にする設定を追記
config.ssh.forward_agent = true
これでvagrant ssh
すれば、HOSTの秘密鍵を使いまわせる。
概要
Vagrantの使い方をまとめていく。 Vagrantは仮想環境の構築手順をまとめて、いつでも同じ構成の仮想環境を構築することができるツール。 仮想環境を構築するソフトは別途必要なので、VirtualBoxやVMWareなどをあらかじめインストールしておく必要あり。
公式サイト
https://www.vagrantup.com
関連
Unixコマンド VirtualBox, VMWareなどの仮想マシン Ruby