Skip to content

Instantly share code, notes, and snippets.

@ieee0824
Last active December 14, 2015 11:35
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ieee0824/4b85cdbd7755fc2c588b to your computer and use it in GitHub Desktop.
Save ieee0824/4b85cdbd7755fc2c588b to your computer and use it in GitHub Desktop.

はじめに

こんにちは高知工科大Advent Calendar 2015の3日目担当です.
クリスマスに向けて開発が盛んになると思うのでお金のない大学生でもできるローカル仮想環境で開発環境を作る話をしようと思います.
一瞬Linux kernelのビルドとかも考えましたがめんどくさいんでやめました(環境によっていろいろ変わるからみんなが一様に同じこと出来ると限らないですしね).

ところで大学生がよく新規サービスを作って起業して株式上場するんだ的なことを言ってるのを聞きます.

こんなのとか

こんなの

なかにはまれに何かつくらないの?と聞くとお金も技術も環境も無いですしと言われます.
なのでお金も技術もなくても環境を作れるお話をしていきます.
ちなみにパソコンは所有していること前提なんで持ってない人頑張ってね.

というわけで今回はvagrantのお話をします.
マジレスすると引きこもってオンラインゲームしてるような人のパソコンなら環境を構築できます.
なのでサーバー作る金ないとか行ってる人も安心してください.
後, 今回の目標は構成管理ツールの設定を書くときにも使えるくらいまで設定することです.
それでは張り切って行きましょう.

vagrantとは

仮想マシンの作成や環境構築、仮想マシンの破棄までを自動化できるツールです. よくあるのはVirtualBoxやVM Wareのwrapperのような使い方をする方法かな. AWSとか仮想サーバーを借りる程でもないけど別にサーバーを用意したい時とかに便利です.

まずはインストールから

vagrant downloadから環境にあったOSに合わせたパッケージダウンロードする.
記憶が正しければこの時VirtualBoxもインストールされてたはず...
もしない時は自分で入れて下さい.
あとLinux版はカーネルバージョンによって動かないことがあるのでそこは適宜調整して下さい.
ここで諦める人はなにかを作ることに向いてないと思えばできますよね?

Vagrant boxの準備

まず基本となる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 fileを作る

$ 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をとりあえず動かしてみる

まず先ほど用意した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化してみましょう.

vagrant 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

@ieee0824
Copy link
Author

ieee0824 commented Dec 1, 2015

2015-12-02 0 30 20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment