Yabu.log

ITなどの雑記

vagrantを導入

RubyDSL(VagrantFile)でVirtualBox,VMWareなどをお手軽にいじれちゃうツール的な印象です。

www.vagrantup.com

仮想マシンの設定

  • テンプレートの追加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アドレスとかでググると英語のトラブルシュート情報がたくさん出てくるので 必要になればトラブルシュートしましょう。

参考 https://dotinstall.com/lessons/basic_vagrant