Vagrant(1.9.1)でCentOS6.7を入れる 

# 目的

会社と自宅で仕様書を楽に作成したい。
[Pandoc + Git + Jenkins = Auto Generate Document System][autodoc]というドキュメントシステムを試してみることにした。
ここでは、そのための手軽な実験環境が欲しいのでVagrantでCentOSを使うことを目的とする。

# やることリスト
1. VirtualBoxをインストール
2. Vagrantをインストール
3. VagrantでCentOS6.7をインストール
4. 諸々の設定

詳細なドキュメントシステムの構築手順については別記事を書く予定。

# ホスト環境

## 会社
- windows7 professional 64bit
- Vagrant 1.9.1
- VirtualBox バージョン 5.0.26 r108824　元々入ってた
- proxy環境

## 自宅
- macOS Sierra
- Vagrant 1.9.1
- VirtualBox Version 5.1.14 r112924 (Qt5.6.2)

# 詳細

## 1. VirtualBoxをインストール

以下からVirtualBoxをインストールする。
**VirtualBox 5.1.14 platform packages.** でホストのOSを選択する。
今回はWindows hosts, OS X hosts。(OS Xじゃないけど問題は起きてない)


https://www.virtualbox.org/wiki/Downloads
<img width="1231" alt="Screen Shot 2017-02-02 at 18.22.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/152194/a9778819-b733-1bcb-ae33-75330dc01476.png">

インストーラーのおっしゃる通りにインストールする。

## 2. Vagrantをインストール

以下からVagrantをインストールする。
今回はWINDOWS, MAC OS X。(OS Xじゃないけど問題は起きてない)

https://www.vagrantup.com/downloads.html
<img width="1229" alt="Screen Shot 2017-02-02 at 18.29.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/152194/21ea0fd3-7692-fd9b-19cb-77f35a958d49.png">

vagrant_1.9.1.dmgがダウンロードされるので、Vagrant.pkgをクリックしてインストーラーを起動する。

<img width="503" alt="Screen Shot 2017-02-02 at 18.39.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/152194/f8ad1fe8-0a33-7968-5633-13487f424408.png">

インストーラーのおっしゃる通りにインストールする。

### 2.1. Windows7

vagrantはコマンドから操作するので、windowsではコマンドプロンプトなどを使う。
コマンドプロンプト嫌い。そして、後々のためにmsys2を入れておく。
msys2はwindows上でunix環境が使える。別にCygwinとかでもOK。

#### 2.1.1. msys2をインストールする

以下からmsys2をインストールする。64bitなのでx86_64を選択した。
https://sourceforge.net/projects/msys2/files/Base/

インストーラーのおっしゃる通りにインストールする。
フォルダはデフォルトC:\を選択した。

C:\msys64\msys2.exeを動かしてシェルが起動すればOK。

#### 2.1.2. proxyを設定する(proxy環境の人だけ)

proxy環境の人は以降のvagrant box add などが上手くいかない。

msys2のコマンドラインから以下を入力する。
以下では,proxyの設定をシェルの起動時に実行させるようにする。

```
$ cd /c/msys64/etc/profile.d/
$ touch proxy_setting.sh
$ vi proxy_setting.sh (名前はなんでもいいです)
```

proxy設定の書き方： http://{ユーザ名}:{パスワード}@{FQDN}:{ポート番号}/
全角はURLエンコーディングしないとダメ。
あと、 @ -> %40

```bash:proxy_setting.sh
export http_proxy=http://AAA%40jp.BBB.com:PASS@CCC.proxy.com:8080/
export https_proxy= ...(http_proxyと同じ)
export HTTP_PROXY= ...
export HTTPS_PROXY= ...
```

#### 2.1.3. msys2のパッケージ

wgetを使うので /etc/wgetrc にproxy設定をする。
上のproxy_setting.shと同じ書き方でOK。

msys2はpacmanでパッケージ管理する。
pacmanのアップデートとパッケージインストールをする。
この辺りは http://techc.omorita.com/topics/msys2/ を参考にした。

一応、Windowsの環境変数にも、http_proxy https_proxyを加えておく。
方法は、適当にググってください。すぐ出てきます。

```
$ pacman -Suy
$ pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
$ pacman -S git
$ pacman -S base-devel
$ pacman -S msys2-devel
$ pacman -S mingw-w64-i686-toolchain
$ pacman -S mingw-w64-x86_64-toolchain
```

#### 2.1.4. Vagrantのパスを通す

Vagrantのパスを通すために、環境変数のPATHを変えてもいいし、以下でもいい。

```
$ vi ~/.bash_profile
```

```bash:.bash_profile
alias vagrant="/c/HashiCorp/Vagrant/bin/vagrant.exe"
```

以下が出たらOK。

```
$ vagrant -v
Vagrant 1.9.1
```

### 2.2. macOS Sierra
コマンドラインから以下を入力。Version情報が返ってきたらOK。

```
$ vagrant -v
Vagrant 1.9.1

$ which vagrant
/usr/local/bin/vagrant
```

Vagrantのインストール後、既に/usr/local/bin/にパスが通っているよう。


## 3. VagrantでCentOS6.7をインストール
ここからはWindows7, macOS Sierraで同じ手順。

### 3.1. box add
適当な場所に仮想マシンの格納するためのディレクトリを作成する。
ここではcentos67というディレクトリを作成した。
以下URLにboxというテンプレートがあるので自分が使いたいものを選び、URLをコピーして以下のコマンドを実行する。(使うものでコマンドは変わります。vagrant box add {box名} {boxのURL})

https://atlas.hashicorp.com/boxes/search
http://www.vagrantbox.es

```
$ vagrant box add bento/centos-6.7 https://atlas.hashicorp.com/bento/boxes/centos-6.7
==> box: Loading metadata for box 'https://atlas.hashicorp.com/bento/boxes/centos-6.7'
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) parallels
2) virtualbox
3) vmware_desktop
Enter your choice: 2
==> box: Adding box 'bento/centos-6.7' (v2.2.7) for provider: virtualbox
    box: Downloading: https://atlas.hashicorp.com/bento/boxes/centos-6.7/versions/2.2.7/providers/virtualbox.box
    box: Progress: 5% (Rate: 1433k/s, Estimated time remaining: 0:03:58)
```

boxが追加されたかどうかを確認する

```
$ vagrant box list
bento/centos-6.7   (virtualbox, 2.2.7)

$ ls ~/.vagrant.d/boxes/ このディレクトリにboxがある
bento-VAGRANTSLASH-centos-6.7
```

### 3.2. box init

vagrant initを実行するとVagrantfileという設定ファイルができる。
vagrant upで仮想マシンを起動する。
vagrant sshで仮想マシンにログイン出来る。

```
$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
$ ls
Vagrantfile
$ vagrant up 仮想マシンの状態を確認
Bringing machine 'default' up with 'virtualbox' provider...
$ vagrant status
Current machine states:

default                   running (virtualbox)

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`.

```

## 4. 諸々の設定

### 4.1. プラグイン

saharaというvagrantの状態管理プラグインを入れておく。
あと、windows7の方は、ゲストOSでもproxy設定が必要なのでvagrant-proxyconfというプラグインを入れて、Vagrantfile内にもproxy設定を書く。仮想マシンをreload(rebootのこと)しておく。
(vagrant halt　がシャットダウン。suspend->resumeが中断と復帰。)

```
$ vagrant plugin install sahara
$ vagrant plugin install vagrant-proxyconf

$ vagrant plugin list
sahara (0.0.17)
vagrant-proxyconf (1.5.2)
vagrant-share (1.1.6, system)
$ vagrant reload
```

saharaの使い方。
vagrant sandbox onでsandboxをsaharaを使えるようになる。
commitでこれまでの変更を確定する。
rollbackで前回commitした状態に戻す。

```
$ vagrant sandbox on
...
$ vagrant sandbox status
[default] Sandbox mode is on

$ vagrant sandbox commit
[default] Committing the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

$ vagrant sandbox rollback
[default] Rolling back the virtual machine...
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
```


以下をVagrantfileに記入する。

```:Vagrantfile
config.proxy.http = "http://AAA%40jp.BBB.com:PASS@CCC.proxy.com:8080/"
config.proxy.http = ...(http_proxyと同じ)

```

### 4.2. GUI

ここまででとりあえずの環境はできたが、JenkinsなどGUIで使いたいのでGUI環境にする。
以下を参考にして設定した。グループインストール後にVagrantfileと/etc/inittabのランレベルを変更して再起動。

http://reonblog.com/2013/04/07/centos%e3%81%abgui%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/

```
$ sudo yum -y groupinstall "X Window System" "Desktop" "General Purpose Desktop"
...

$ cat /etc/inittab 
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault: ここを3から5にする。
```

そして、以下のようにvb.gui部分のコメントを外す。
仮想マシンのログインのデフォルトのユーザ名とパスワードはvagrant。

```
  # Example for VirtualBox:
  #
   config.vm.provider "virtualbox" do |vb|
     # Display the VirtualBox GUI when booting the machine
     vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
   end
```

### 4.3. 日本語環境

今回のboxは英語環境だったのでキーボードを含めて日本語環境にする。

キーボードは/etc/sysconfig/keyboard で設定を変更して再起動。

```
$ cat /etc/sysconfig/keyboard
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"
```

日本語環境は以下を参考にした。
http://kwski.net/linux/208/

```
$ yum groupinstall "Japanese Support"

$ cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"         
```

最後におまけでhostnameが気に入らないので変更しておく。

```
$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=AAA.localdomain ここで名前を変える
RES_OPTIONS="single-request-reopen"
$ hostname
AAA.localdomain
```

ここまでの設定をしたboxを vagrant package で作成しておく。

```
$ vagrant package
...
$ vagrant box add my_cent6 package.box
...
$ vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
my_cent6         (virtualbox, 0)
```

# おしまい

ネットワークや、他の設定もあるけど今回の目的は果たしたので終わり。
追加するboxによっては上記ではうまくいかないかもしれない。
無駄なことや変なことしてたら教えてください。

[2017/02/08] [CentOS6.7にGit, Pandoc, Jenkinsを入れる](http://qiita.com/tsnb/items/61ee2cde79406d5164d6)





[autodoc]: https://docs.com/s-kuluna/1751/pandoc-git-jenkins-auto-generate-document-system