vagrant の box 作成
#11 自分でBoxを作ってみよう
http://dotinstall.com/lessons/basic_vagrant/24111
を参考に
現在の仮想マシンの状態からBoxを作成
さらに
そのbox を元に、新しい仮想マシンを作成してみる
まず、現在稼働している仮想マシンの状態を
そのままbox にする場合
これは
vagrant package
を実行することで行える
このとき、対象の仮想マシンはshutdown されるので注意
処理が完了すると
package.box
ができている
作成した box をリストに追加するには
vagrant box add を実行する
vagrant box add my_box package.box
でリストに追加される
vagrant box add 追加するファイル名 対象のbox
となる
追加されたbox は
~/.vagrant.d/boxes/
にあるので
ls ~/.vagrant.d/boxes/
で確認できる
この httpd をインストールした box で
新しく仮想マシンを立ち上げるには
今までやってきたように
仮想マシンディレクトリを作成して
そこで
Vagrantfile を作成
そして仮想マシンを立ち上げる
cd /media/bdec1869-7820-4557-a76e-a8b130293019/
mkdir myBox
でディレクトリ作成して
cd myBox/
で作成したディレクトリに移動
vagrant init my_box
で vagrantfile 作成
vagrant up
で仮想マシンの立ち上げ
起動したら、
vagrant ssh
でログイン
sudo service httpd status
で確認すると
httpd (pid 4476) is running…
となり、httpd が稼働中であることがわかる
このように、以前作成した状態からの復元が容易になるので
日経Linux をみて新しい機能を追加したり
自宅サーバー構築サイトを元に
サーバー構築するときに活用できる
http://centossrv.com/
とか
http://www.server-world.info/
をみるとサーバー構築の参考になる
vagrant で仮想マシンが立ち上がったときに実行する処理の指定
vagrant で仮想マシンが立ち上がったときに実行する処理の指定
#09 Provisioningを使ってみよう (1)
http://dotinstall.com/lessons/basic_vagrant/24109
を参考に
仮想マシンが立ち上がったあとに実行される処理を
Provisioningで指定
Provisioning は
vagrant up が実行されたときに実行される一連の
処理のこと
前回は、サーバーを構築するときに
最小構成イメージマシンを作って
そこにログインしてコマンドを入力することで
作成していった
今回は、あらかじめ最初に自動でおこなう設定にする
わかりやすいように
新しく仮想マシンを作成する
cd /media/bdec1869-7820-4557-a76e-a8b130293019/
mkdir myCentOSVM2
でディレクトリ作成
ここに vagrantfile を作成する
cd myCentOSVM2/
vagrant init centos64
これで Vagrantfile ができるので編集していく
vim Vagrantfile
provisioningにはツールがあるけど
今回はシェルで設定する
config.vm.provision :shell,
として
命令をそのまま書くには
:inline =>
の後に実行するコードを書く
今回の場合、
config.vm.provision :shell, :inline => “echo hello world”
を
10行目の
config.vm.box = “centos64”
の下あたりに書き込む
vim で
:set number を実行すると行数がでる
保存したら
vagrant up で仮想マシン立ち上げ
いままでと違うのは
[default] Matching MAC address for NAT networking…
[default] Clearing any previously set forwarded ports…
[default] Forwarding ports…
[default] — 22 => 2222 (adapter 1)
[default] Creating shared folders metadata…
[default] Clearing any previously set network interfaces…
[default] Booting VM…
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders…
[default] — v-root: /vagrant
[default] Running provisioner: Vagrant::Provisioners::Shell…
hello world
というように、最後に
echo hello world
が実行されているということ
これを使うことで、インストールや設定などを
自動的に仮想マシン作成のときに行えるようになる
vagrant で共有フォルダ作成
vagrant で共有フォルダ作成
#08 共有フォルダを使ってみよう
http://dotinstall.com/lessons/basic_vagrant/24108
を参考に
仮想マシンに共有フォルダを作成し
ホストOSである Ubuntu から
仮想マシンのファイルを編集していく
Vagrant では共有フォルダの設定があり
仮想マシンの
/vagrant/Vagrantfile
と
ホストマシンの
vagrantfile
とリンクしている
このため
cd /vagrant/
で
vagrant ディレクトリに移動して
touch test
とすると
ホストマシンの
/media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM
の中にも
test
というファイルができている
このため、
/vagrant
を
ドキュメントルートに設定することで
共有フォルダとして使える
まず
sudo rm -rf /var/www/html
でディレクトリごと削除
次に、
sudo ln -fs /vagrant /var/www/html
で
vagrant のシンボリックリンクを作成
ln -fs は
ln コマンドが、ファイルやディレクトリのリンクをはる
-fs はオプションで
-f がリンク先に同名のリンクファイルがあれば上書き
-s はシンボリックリンクの作成
となる
詳しくは
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230812/
を参考にするとわかりやすい
とりあえず、ここまでできたらログアウト
そして、
/myCentOSVM$
の中で
vim index.html
でファイルを作成し
内容をちょっと変えて hello from ubuntu
としてみた
これで、再度ブラウザで
http://192.168.33.10/
へアクセスして
この内容に変わっていたら成功
vagrant で作成したマシンでwebページ表示
vagrant で作成したマシンでwebページ表示
#07 Webページを表示させてみよう
http://dotinstall.com/lessons/basic_vagrant/24107
を参考に
仮想マシン内にindex.htmlを作り
ネットワークの設定をしたあとにブラウザから確認する
まず、
cd /var/www/html/
で移動
vi より vim のほうがなれているので
sudo yum -y install vim
で vim インストール
sudo vim index.html
でファイルを作成して
hello world
だけ書いて保存
ここまでできたら一度
ログアウト
ログアウトは
exit
でできるし
Ctrl + d でもできる
このままだと
ネットワーク設定の関係でアクセスできないので
Vagrantfile を編集する
vim Vagrantfile
でファイルを編集
config.vm.network :private_network, ip: “192.168.33.10”
のコメントアウトを外すらしいけど
OSの違い、もしくは vaersion の違いにより
存在しない
private network の代わりに
host-only network があり
# config.vm.network :hostonly, “192.168.33.10”
となっているので
これのコメントアウトをはずす
保存したら、設定反映のため
vagrant reload
を実行
これで、ブラウザで
192.168.33.10
へアクセスすると、hello world と表示される
vagrant で作成したマシンへアクセス
vagrant で作成したマシンへアクセス
#06 仮想マシンに接続してみよう
http://dotinstall.com/lessons/basic_vagrant/24106
を参考に
vagrant で作成したマシンへSSH接続し
web サーバーを立ち上げる
vagrant destroy で仮想マシンを破棄しても
Vagrantfile は残っているので
これを使って、再度作成
cd /media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM/
で
Vagrantfile のあるディレクトリに移動して
vagrant up
を実行
これで仮想マシンが作成される
次に、仮想マシンへの接続
NATでアクセスする方法を考えたけど
vagrant ssh
で接続できる
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$
となり、vagrant というユーザでログインしているのが確認できる
まず、webサーバーのインストール
sudo yum -y install httpd
次に
sudo chkconfig httpd
でweb サーバー起動
sudo chkconfig httpd on
で次回起動時に自動起動する設定
sudo service iptables stop
で Linux ファイアウォール停止
sudo chkconfig iptables off
で次回起動時にFWが起動しないようにする
フリックやスクロールの検知
フリックやスクロールの検知
ボタンのタップやダウン、アップなどのタッチ操作は
onClickイベントや
onTouchイベントで処理できるけど
複雑な操作になるジェスチャーは
GestureDetectorクラスや
ScaleGestureDetectorクラスを使い検出する
ScaleGestureDetectorクラスは
ピンチイン
ピンチアウト
を取得できる
GestureDetectorクラスはかなり多くの
ジェスチャーを検出できる
先に、ピンチアウトとピンチインについて解説
スマホのタッチパネルは、複数の指で
画面にタッチするマルチタッチをサポートしている
2本指でタッチして
つまむように間隔を狭めることを
ピンチイン
逆に2本の指を開いて
間隔を広げる動作をピンチアウトという
そして、以下がGestureDetectorで検知できるイベント
ダウンは、onDown()
押したとき
インターフェースは,
OnGestureListener
プレスは、onShowPress()
おしたとき、ただし、すぐに動かすと検知されない
インターフェースは、
OnGestureListener
長押しは、onLongPress()
これは、長押ししたとき
インターフェースは、
OnGestureListener
フリックは、onFling()
スワイプ、つまり指を触れたまま
任意方向へすべらした状態から
指を弾いて離す
インターフェースは、
OnGestureListener
スクロールは、onScroll()
画面にタッチしたままスライド
インターフェースは、
OnGestureListener
アップは、onSingleTapUp()
画面タッチからアップ操作を短く
インターフェースは、
OnGestureListener
シングルタップは、onSingleTapConfirmed()
ダブルタップ時には呼び出されない
インターフェースは、
OnDoubleTapListener
ダブルタップは、onDoubleTap()
これは、二回押す
インターフェースは、
OnDoubleTapListener
ダブルタップ時のイベントは、
onDoubleTapEvent()
ダブルタップ中にイベントダウン、移動、アップが起こると通知される
インターフェースは、
OnDoubleTapListener
vagrant で立ち上げた仮想マシンの停止・再起動・削除
vagrant で立ち上げた仮想マシンの停止・再起動・削除
#05 仮想マシンの停止・再起動・削除
http://dotinstall.com/lessons/basic_vagrant/24105
を参考に
立ち上げた仮想マシンを
停止、終了、再起動、削除していく方法を学習
vagrant up で起動した仮想マシン
が稼働しているという前提
いくつかの操作コマンドがあるのでメモ
status
状態を確認
suspend
スリープ状態にする
resume
スリープからの復帰
halt
仮想マシンの終了
up
仮想マシンの起動
reload
仮想マシンの再起動
destroy
仮想マシンの破棄
では、実践
まず vagrant status
Current VM states:
default running
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
というように稼働中である running が表示される
vagrant suspend で
[default] Saving VM state and suspending execution…
となり、停止
vagrant up とすれば
[default] VM already created. Booting if it’s not already running…
[default] Resuming suspended VM…
[default] Booting VM…
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
となり、起動する
vagrant resume
の代わりに
vagrant up でもOK
仮想マシンを廃棄するには
vagrant destroy
で
Are you sure you want to destroy the ‘default’ VM? [Y/N] y
[default] Forcing shutdown of VM…
[default] Destroying VM and associated drives…
となり削除される
稼働中であっても削除される
この削除された結果は
virtualbox にも反映される
vagrant で box をベースに仮想マシンの立ち上げ
vagrant で box をベースに仮想マシンの立ち上げ
#04 仮想マシンを立ち上げてみよう
http://dotinstall.com/lessons/basic_vagrant/24104
を参考に
box をベースにして仮想マシンを立ち上げ
一つのbox 、つまりテンプレから
いくつでも仮想マシンをつくれる
これは、AWSで仮想マシンを、他の人や自分がつくったAMIから仮想マシンをつくれるのとおなじ
仮想マシンをつくるときには
仮想マシンごとにディレクトリを作成する
VMware Player や VirtualBox をつかってみると
わかるけど
仮想マシンごとにディレクトリが作成されている
私の場合、SSD+HDDで
容量がSSDのほうでは少ないためHDD側に作成
mkdir /media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM
cd /media/bdec1869-7820-4557-a76e-a8b130293019/myCentOSVM/
で作成したディレクトリに移動
次に、仮想マシンの初期化
vagrant init centos64
で初期化してVagrantfileが作成される
vagrant init で
仮想マシンの初期化
centos64 は box を指定している
box の確認は
ls ~/.vagrant.d/boxes
で確認できる
作成できているかは ls コマンドで確認できる
Vagrantfile
と表示されれば成功
この Vagrantfile は
ruby で書かれている設定ファイル
中身をみたいのなら
less Vagrantfile
読んでいて終了したいなら q をおす
この Vagrantfile をもとに仮想マシンが作成される
作成するには
Vagrantfile があるディレクトリで
vagrant up
を実行する
すでに実行状態になっているのが
VirtualBox を立ち上げると確認できる
端末から virtualbox とすれば
VirtualBox が起動する
vagrantbox.es から box の取得
vagrantbox.es から box の取得
#03 vagrantbox.esを使ってみよう
http://dotinstall.com/lessons/basic_vagrant/24103
を参考に
vagrantbox.esからBoxを取得する
今回は
http://www.vagrantbox.es
から
box を取得
今回取得するのは
CentOS 6.4 64bit Minimal という最小構成のOS
この
http://www.vgrantbox.es
には、様々な構成の box がある
このbox は有志の人が作っているので非公式なので
自己責任で利用する
vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
で
box に追加する予定だったが
[vagrant] Extracting box…
[vagrant] Cleaning up downloaded box…
Failed to untar the box file. This is usually because you’re
attempting to add a box that isn’t a valid box file. Please
double check that the box file is properly packaged.
となるので、別の方法を探すことに
http://d.hatena.ne.jp/ux00ff/20130715/1373856937
を参考に
add するファイルを
CentOS-6.4-x86_64-v20130309.box
にした
vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130309.box
box に追加できているか確認するため
vagrant box list 確認できる
vagrant
で使えるコマンドについては
vagrant box -h
で調べることが できる
box の削除は
vagrant box remove でできる
ちなみに、追加された box は
~/.vagrant.d/boxes
に格納されている
確認するなら
ls ~/.vagrant.d/boxes
ここにキャッシュされた box を元に
仮想マシンの初期化、起動を行っていく
Vagrant で box 取得
Vagrant で box 取得
#02 Boxを取得してみよう
http://dotinstall.com/lessons/basic_vagrant/24102
を参考に
仮想マシンのテンプレになるBox を取得
実行環境は Ubuntu 12.04 64bit
仮想マシン立ち上げには手順があり
まず、box を取得
box は 仮想マシンのテンプレート
次に、仮想マシンの初期化
そして、仮想マシンを起動する
という流れになる
今回は、box を公式サイトにあるものを取得
http://docs.vagrantup.com/v2/getting-started/boxes.html
を参照
box 取得には
vagrant add コマンドを使う
vagrant box add precise32 http://files.vagrantup.com/precise32.box
とあるけど
これは、box の名前を precise32 にしている
仮想マシンの名前を決めていると考えるとわかりやすい
http://files.vagrantup.com/precise32.box
は実際に取得するファイルのURL
つまり、wget コマンドで取得するようなかんじ
取得完了後
box 一覧を確認したい場合
vagrant box list
で確認できる