こんにちは高知工科大Advent Calendar 2015の3日目担当です.
クリスマスに向けて開発が盛んになると思うのでお金のない大学生でもできるローカル仮想環境で開発環境を作る話をしようと思います.
一瞬Linux kernelのビルドとかも考えましたがめんどくさいんでやめました(環境によっていろいろ変わるからみんなが一様に同じこと出来ると限らないですしね).
ところで大学生がよく新規サービスを作って起業して株式上場するんだ的なことを言ってるのを聞きます.
こんなのとか
こんなの
なかにはまれに何かつくらないの?と聞くとお金も技術も環境も無いですしと言われます.
なのでお金も技術もなくても環境を作れるお話をしていきます.
ちなみにパソコンは所有していること前提なんで持ってない人頑張ってね.
というわけで今回はvagrantのお話をします.
マジレスすると引きこもってオンラインゲームしてるような人のパソコンなら環境を構築できます.
なのでサーバー作る金ないとか行ってる人も安心してください.
後, 今回の目標は構成管理ツールの設定を書くときにも使えるくらいまで設定することです.
それでは張り切って行きましょう.
vagrant downloadから環境にあったOSに合わせたパッケージダウンロードする.
記憶が正しければこの時VirtualBoxもインストールされてたはず...
もしない時は自分で入れて下さい.
あとLinux版はカーネルバージョンによって動かないことがあるのでそこは適宜調整して下さい.
ここで諦める人はなにかを作ることに向いてないと思えばできますよね?
まず基本となるOSイメージを準備する.
どれでも好きなOSを選んで下さい.
ここではCent OSを使います.
しかもはじめから手を抜いてvagrant boxでOSを用意します.
以下の用にCommandを入力するとOSの準備ができます.
$ cd
$ mkdir vagrant
$ cd vagrant
$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
これでOSイメージが追加されます.
ちなみに追加されたイメージは$ vagrant box list
で確認できます.
$ vagrant box list
cent (virtualbox, 0)
centos64 (virtualbox, 0)
ubuntu (virtualbox, 0)
今回は先程用意したcentos64を利用します.
以下のCommandを打つとvagrant fileが生成されます.
$ vagrant init centos64
$ ll
-rw-r--r-- 1 user staff 3020 12 1 01:34 Vagrantfile
初期設定は余り書かれて居ません.
なくても困らないコメントを消すと以下のようになります.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "centos64"
end
まず少なくともipアドレスの設定はしておくべきです.
仮想環境を立てて開発をするときサーバーごとに仮想環境が分かれることがあるのでipを決定しておかないと結構めんどくさい事になります.
じぶんがよく使う設定だとこんな感じになります.
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
### vagrant box listで登録される名前
config.vm.box = "centos64.local"
### 後々便利なのでboxのurlも設定しておく
config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box"
config.vm.define "centos64.local" do |server|
### ipとsshでアクセスするときのポート番号
server.vm.network "private_network", ip: "192.168.101.2", host: "2222"
config.vm.provider "virtualbox" do |vb|
vb.name = "centos64.local"
### cpuとメモリの設定
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "1"]
end
end
end
さて設定ができたとところで起動してみましょう.
まず先ほど用意したVagrant fileが存在するディレクトリまで行って次の呪文を唱えて下さい.
$ vagrant up
するとしばらくすると立ち上がるはずです.
立ち上がったら$ vagrant ssh
とターミナルに唱えることでログインができます.
ちなみに立ち上がったかどうかはvirtual boxから確認することができます.
立ち上がっただけなら愛着がわかないので次は開発用のアカウントを作ってみましょう.
アカウントの追加方法は至って簡単です.
普通のLinux環境と作り方が同じです.
useraddとpasswdを使います.
ここではパスワード、ユーザー名ともにdevelop
を使いたいと思います.
# 管理者じゃないとユーザーを作れないのでsudoをつけます.
$ sudo useradd develop
$ sudo passwd develop
# 二回パスワードを求められるので入れて下さい
# ちなみにパスワードが簡単なので怒られてしまいます. ここではきにしなくていいです.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
ログインはswitch userで行います. Commandはsuです.
[vagrant@localhost ~]$ su develop
Password:
[develop@localhost vagrant]$ cd
[develop@localhost ~]$ pwd
/home/develop
[develop@localhost ~]$
これでアカウントが作れました. 思う存分開発したいところですがこの状態だとsudoが使えないので設定していきます.
一度$ exit
してvagrantユーザーに戻りましょう.
戻ったら$ sudo visudo
とCommandを入力します.
先ほど作ったdevelopユーザーにsudo権限を与えます.
どこかにroot ALL=(ALL) ALL
と書いているところがあると思うのでその次の行にdevelop ALL=(ALL) ALL
と書いて保存します.
ちなみにviの使い方は頑張って調べましょう.
これでdevelopユーザーでsudoが使用可能です.
ついでにもう一つ設定します. vagrant ssh
でログインするユーザーをdevelop
にします.
一度仮想マシンをシャットダウンします.
$ sudo shutdown -h 0
とCommandを入れてしばらく待つとシャットダウンされます.
シャットダウンしたらVagrant fileを編集していきます.
ログインユーザーの設定を書き加えます.
これでデフォルトログインユーザーがdevelopになります.
起動してログインしてみてください.
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
### vagrant box listで登録される名前
config.vm.box = "centos64.local"
### 後々便利なのでboxのurlも設定しておく
config.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box"
### vagrant sshで接続するアカウント
config.ssh.username = "develop"
config.ssh.password = "develop"
config.vm.define "centos64.local" do |server|
### ipとsshでアクセスするときのポート番号
server.vm.network "private_network", ip: "192.168.101.2", host: "2222"
config.vm.provider "virtualbox" do |vb|
vb.name = "centos64.local"
### cpuとメモリの設定
vb.customize ["modifyvm", :id, "--memory", "1024"]
vb.customize ["modifyvm", :id, "--cpus", "1"]
end
end
end
開発環境ができたところでbox化してみましょう.
まずパッケージを更新します.
$ sudo yum update -y
サイズを小さくするためyumを掃除する.
$ sudo yum clean all
シャットダウンする
$ sudo shutdown -h 0
boxの作成
$ vagrant package --base centos64.local
完成したら後はgithubなどに設置して煮るなり焼くなりご自由にです.
#最後に
vagrantを使うと気軽に開発環境を作ることができるのでぜひどんど遊んでみると良いでしょう.
またaws用にamiを作ったりできるのでローカル開発→AMIを作る→デプロイのような使い方もできるのでいろいろためしてみるといいと思います.
結論として何かを始め用途思った時のハードルは割りと低いということです.
boxをgithubあげようとしたら大きすぎて挙げれなかったorz