Windows10にVagrantを入れてCentOS7をインストールしよう（6. Vagrantにて仮想環境を配布）

# はじめに
作成した仮想環境を配布できる状態にしてみましょう。
boxを作っておけば、やり直しも楽です。

# 使用ツール
- Windows10
- Windowd PowerShell（コマンドプロンプトでも可）

# 手順
[~~1. VirtualBoxインストール~~](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4#1-virtualbox%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
[~~2. Vagrantインストール~~](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4#2-vagrant%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
[~~3. Vagrantfileを設置~~](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4#3-vagrantfile%E3%82%92%E8%A8%AD%E7%BD%AE)
[~~4. 仮想マシンの操作~~](https://qiita.com/erik_t/items/909efb63fd389f486ec3#4-%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AE%E6%93%8D%E4%BD%9C)
[~~5. Tera Termに接続~~](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d#5-tera-term%E3%81%AB%E6%8E%A5%E7%B6%9A)
[~~6. WinSCPに接続~~](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d#6-winscp%E3%81%AB%E6%8E%A5%E7%B6%9A)
[~~7. vagrantユーザーをrootに切り替え~~](https://qiita.com/erik_t/items/8d006b599815c8fbf38b#7-vagrant%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92root%E3%81%AB%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88)
[~~8. パスワード設定~~](https://qiita.com/erik_t/items/8d006b599815c8fbf38b#8-%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A)
[~~9. SSH接続許可（rootユーザー)~~](https://qiita.com/erik_t/items/8d006b599815c8fbf38b#9-ssh%E6%8E%A5%E7%B6%9A%E8%A8%B1%E5%8F%AFroot%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC)
[~~10. zip/unzipをインストール~~](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1#10-zipunzip%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
[**11. Vagrantにて仮想環境を配布**](https://qiita.com/erik_t/items/11f24633f4248e4f33f0#11-vagrant%E3%81%AB%E3%81%A6%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%82%92%E9%85%8D%E5%B8%83)

# やってみよう
## 11. Vagrantにて仮想環境を配布
### 仮想環境を配布
centos7フォルダでPowerShellを起動し、
以下のコマンドを実行すると、centos7.box というファイル名で、centos7フォルダに出力されます。

```
vagrant package --output centos7.box
```
![vagrantpackage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/ab01d9d0-d580-0ba2-9f23-e537a25ebe57.png)
![vagrantpackage2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/61577bec-1a85-f91c-fe4a-65e8f49cd10e.png)

### 仮想環境をインポート
ここで作成したboxファイルを使用して、新しい仮想環境を作ってみましょう。
[以前](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4#vagrant%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)centos7フォルダで`vagrant init`を実行したときのように、
新しいフォルダを準備して、作成したcentos7.boxをそこにコピーし、PowerShellを起動します。
![vagrantadd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/24765897-3740-5eba-aae2-a1022b9769fa.png)
![vagrantadd2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/fc2eb075-7558-6a6d-b8b9-d62e6fcb5292.png)
起動したPowerShellで以下のコマンドを実行します。
これでbox一覧に、new_envというboxが追加されます。

```
vagrant box add new_env centos7.box
```
![vagrantadd3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/461f24d8-29ff-0f58-66d6-0a97b0461dd0.png)
box一覧に、追加されているか確認するには以下のコマンドを使用します。

```
vagrant box list
```

![vagrantadd4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/b03f661d-ae99-890e-e2da-b4b66cee007f.png)
box一覧に追加が確認されたら、box名を指定して`vagrant init`を実行します。

```
vagrant init new_env
```

Vagrantfileが生成されました。
![vagrantadd5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/0f39e914-74ce-cf44-9095-51da631369e6.png)
![vagrantadd6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/487e2d0c-c958-f8ad-8a43-945bf913776b.png)

Vagrantfileを編集して、`vagrant up`してみましょう。
[前回](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4#vagrantfile%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%99%E3%82%8B)とはconfig.vm.box、IPアドレスとvb.nameだけ変えました。

```:Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "new_env"
  config.vm.network :private_network, ip: "192.168.33.20"
  config.vm.provider "virtualbox" do |vb|
    vb.name = "new_env"
    vb.gui = false
    vb.memory = "4096"
  end
  config.ssh.private_key_path = "c:/Users/user_name/.vagrant.d/insecure_private_key"
  config.ssh.insert_key = false
  if Object.const_defined? 'VagrantVbguest'
    config.vbguest.auto_update = false
    config.vbguest.no_remote = true
  end
end
```

![vagrantadd7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409907/e64a7331-89a9-8a78-28a2-f4147ec199d3.png)

これで仮想環境をインポートして起動することができました。
上の画像でポート番号が2222となっていますが、
現在centos7ボックスの仮想環境はシャットダウン中なので、自動で2222が割り振られたようです。

### 不要な仮想環境をboxリストから削除する
使用しなくなった環境をboxリストから削除したいときは、
`vagrant box list`コマンドで使用していないboxの名前を確認し、
以下のコマンドで削除できます。

```
vagrant box remove box名
```

# 次調べたいこと
仮想環境のポート番号は指定できないのか？というところを調べたいです。

# 参考サイト
[Vagrantで、仮想環境を配布するようなシチュエーションのお話](https://qiita.com/m-shin/items/459f1dec234a3873d3d3)
[使ってないVagrant Boxを削除する](https://qiita.com/mochizukikotaro/items/52f4434c3f69c4ba1f54)

# 関連ページ
## Windows10にVagrantをを入れてCentOS7をインストールしよう
[1. VagrantインストールからVagrantfileを設置まで](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4)
[2. 仮想マシンの操作](https://qiita.com/erik_t/items/909efb63fd389f486ec3)
[3. WinSCP、Tera Termに秘密鍵でログイン ](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d)
[4. WinSCP、Tera Termにrootユーザーでパスワードログイン](https://qiita.com/erik_t/items/8d006b599815c8fbf38b)
[5. zip/unzipをインストール](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1)
6．Vagrantにて仮想環境を配布