vagrantを導入
RubyのDSL(VagrantFile)でVirtualBox,VMWareなどをお手軽にいじれちゃうツール的な印象です。
仮想マシンの設定
- テンプレートの追加
vagrant box add
公式に方に以下の通りにあったのでまずはhashicorp/precise64
を試して見た
For example: vagrant box add hashicorp/precise64. You can also quickly initialize a Vagrant environment with vagrant init hashicorp/precise64.
仮想マシン名はlistで出てきたものを選択
仮想マシンの状態管理
接続
仮想マシンにはvagrant ssh
で接続する。
切断はゲスト側でexit
共有ファイル
ホストOSで仮想マシンを作成した作成したフォルダは、 ゲストOSのログインパス/vagrantと共有フォルダになっている
->そこを利用すれば普段通りの環境でC言語などを作成してVM側でコンパイルできる
Provision(自動初期設定)
vagrant init
したときにできるファイル(Rubyのスクリプト)
内にvagrant up
したときに自動で実行する設定(Provision)をかける。
chefなども動かせるが、hello worldを書いた
config.vm.provision :shell, :inline => "echo hello world"
が実行されず
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run.
再度vagrant up
を--provision
のオプション付きで実行するとうまくいった
もしくはvagrant provision
コマンドでprovisionを単体で実行することも可能
provitionは以下の内容でシェルスクリプトも実行できる
config.vm.provision :shell, :path => "provision.sh"
provision.shをゲストOSのVagrantFileがあるフォルダに作成して 起動時に行う内容を記述する
自分でboxを作る方法
仮想マシンを動かしているディレクトリでvagrant package
を実行
これを
vagrant box add <追加後にテンプレートとして扱う名前> <作成したパッケージ名>
でvagrantに追加できる。
テンプレートに追加後は、~/.vagrant.d/boxes
にboxがファイルとして追加されている
ls ~/.vagrant.d/boxes
こんな感じで一人が環境設定したboxを簡単に配ることができる?(配布の方法は今の所知りません)
pluginのインストール
vagrant plugin install <plugin名>
で可能
例
vagrant plugin install sahara
vagrant plugin list
でインストールしたpluginを確認可能
プラグインのsaharaについて
VMの状態のバージョン管理的なことが行える(す、すげ〜🙄)
vagrant sandbox on vagrant sandbox commit vagrant sandbox rollback vagrant sandbox status
commit後の変更はrollbackで消すことができる。
ただし、statusはgit statusほど強力ではない。(sandboxの有効/無効状態くらいしかわからない)
気になったこと
VM上のubuntsでvimが使えませんでした。(入ってないANDインストールできない)
sudo apt-get install vim vim vim-doc vim-lesstif vim-scripts vim-addon-manager vim-gnome vim-migemo vim-syntax-go vim-athena vim-gtk vim-nox vim-syntax-gtk vim-common vim-gui-common vim-puppet vim-tiny vim-conque vimhelp-de vim-rails vim-vimoutliner vim-dbg vim-latexsuite vim-runtime vagrant@precise64:~$ sudo apt-get install vim- vim-addon-manager vim-gnome vim-nox vim-syntax-gtk vim-athena vim-gtk vim-puppet vim-tiny vim-common vim-gui-common vim-rails vim-vimoutliner vim-conque vim-latexsuite vim-runtime vim-dbg vim-lesstif vim-scripts vim-doc vim-migemo vim-syntax-go vagrant@precise64:~$ sudo apt-get install vim-tiny Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: vim-common Suggested packages: indent The following packages will be upgraded: vim-common vim-tiny 2 upgraded, 0 newly installed, 0 to remove and 64 not upgraded. Need to get 497 kB of archives. After this operation, 0 B of additional disk space will be used. Do you want to continue [Y/n]? y Err http://us.archive.ubuntu.com/ubuntu/ precise-updates/main vim-tiny amd64 2:7.3.429-2ubuntu2.1 404 Not Found [IP: 91.189.91.26 80] Err http://us.archive.ubuntu.com/ubuntu/ precise-updates/main vim-common amd64 2:7.3.429-2ubuntu2.1 404 Not Found [IP: 91.189.91.26 80] Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/v/vim/vim-tiny_7.3.429-2ubuntu2.1_amd64.deb 404 Not Found [IP: 91.189.91.26 80] Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/v/vim/vim-common_7.3.429-2ubuntu2.1_amd64.deb 404 Not Found [IP: 91.189.91.26 80] E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
なんでやねん💢
まぁIPアドレスとかでググると英語のトラブルシュート情報がたくさん出てくるので 必要になればトラブルシュートしましょう。