1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【触ってみたシリーズ】Vegrant

Last updated at Posted at 2022-07-05

Vegrantとは何かの記事を読み漁り、実際に手を動かしてみた記録です。ただ、備忘録的な記事なのでパッと見わかりにくいかもしれませんので、今後修正してちゃんとした記事にしていければと思っています。

インストールからbox導入・仮想環境作成や起動についての備忘録です。

基本手順:

$ vagrant box add [ボックス名] [URL]
$ vagrant init [ボックス名]
$ vagrant up

1.VirtualBoxインストール

$ brew search virtualbox
$ brew cask install virtualbox

エラーになった場合
セキュリティとプライバシーの一般に「許可」ボタンが表示されているので、
「許可」ボタンを選択し以下のコマンドで上書き再インストール

$ brew cask reinstall --force virtualbox

2.Vagrantインストール

$ brew search vagrant
$ brew cask install vagrant
$ vagrant plugin install vagrant-vbguest

3.box(テンプレート)取得

$ vagrant box add centos/7
$ vagrant box list

他にも非公式のboxは多数存在しています。
https://app.vagrantup.com/boxes/search?provider=virtualbox&q=centos&sort=downloads&utf8=%E2%9C%93
追加されたboxは以下の場所に配置されている。

$ cd ~/.vagrant.d/boxes

※vagrant boxの削除

$ vagrant box list
$ find . -name 'Vagrantfile' | xargs grep [box名] ←このbox使っているか確認
$ vagrant box remove [box名]

4.仮想マシンの作成(初期化)

$ mkdir (vagrant用ディレクトリ作成)
$ cd (vagrant用ディレクトリ作成)
$ vagrant init centos/7

Vagrantfileが作成されたことを確認

ただし、自分でVagrantfileを作成するのであれば不要

5.仮想マシンを起動

$ vagrant up

※vagrant用ディレクトリで実行する

※「boxの取得」から「仮想マシンの起動」までを自動化

$ mkdir [vagrantフォルダ]
$ cd [vagrantフォルダ]
$ vi Vagrantfile
Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end
$ vagrant up

6.VirtualBoxで確認

VirtualBoxを起動するとvagrant用ディレクトリで起動されていることが確認できます。

7.コマンド

$ vagrant status:状態確認
$ vagrant suspend:一時停止
$ vagrant resume : 再実行
$ vagrant halt : 停止
$ vagrant up : 起動
$ vagrant reload : 停止起動(halt→up)
$ vagrant destroy : 削除(仮想マシンからも削除)

vagrant作成環境フォルダの以下フォルダ内が空になります。
.vagrant/machines/default/virtualbox
参照:https://qiita.com/oreo3@github/items/4054a4120ccc249676d9

8.Vagrantへの接続

$ vagrant ssh

9.wwwサーバの構築

時間設定(タイムゾーンの設定)

$ sudo timedatectl set-timezone Asia/Tokyo

httpインストール

$ sudo yum -y install httpd

httpd起動

$ sudo systemctl start httpd.service

httpd自動起動(再起動しても自動起動させる)

$ sudo systemctl enable httpd.service

ファイアウォール停止

$ firewall-cmd —status

これで、not runningと表示されれば停止、もし起動していたら、以下のコマンドを入力します。

$ systemctl stop firewalld

ファイアウォール自動起動確認

$ systemctl is-enabled firewalld

ONはenabled、OFFはdisabledであり、ONになっていたら以下のコマンドで自動起動停止します。

$ systemctl disable firewalld

webページ表示

$ cd /var/www/html
$ sudo vi index.html ←中身は適当に
$ exit
$ vi Vagrantfile

config.vm.network "private_network", ip: "192.168.33.10”のコメントアウトを外します。

$ vagrant reload ←再起動

ブラウザから192.168.33.10を表示すると、index.htmlで書かれたhtmlの内容が表示されます。

10.共有フォルダ

うまく共有されない(リアルタイムに更新されない)

Vagrantfileがあるフォルダとvagrantにログインしたときの/vagrantがリンクしている。

$ vagrant ssh
$ cd /vagrant
$ ls

すると、Vagrantfileが表示されます。
Vagrant上の、/vagrantをwwwのドキュメントルートに設定するとmac側からindex.htmlとかを修正できます。

やってみたこと。(ダメだったけど...)

$ vi Vagrantfile

以下を追加

Vagrantfile
config.vm.synced_folder "./", "/vagrant"
$ vagrant plugin install vagrant-vbguest
$ vagrant reload

さらにやってみたこと
https://qiita.com/sudachi808/items/edc304b3ee6c1436b0fd
に書いてあることを一通りやったが、多分以下で大丈夫
Vagrantfileに以下の行を追加する

Vegrantfile
config.vm.synced_folder ".", "/vagrant", type:"virtualbox"

11.Provisioning

Provisioningとは、Vagrant upされた時に自動的に実行される一連の処理のことです。
Webサーバ(httpd)のインストールやファイアーウォールの停止などを自動的実行させたりします。
Vagrantfileに以下のコマンドを追加します。

Vegramnt
config.vm.provision :shell, :path => "provision.sh"

provision.shファイルを作成し以下のコマンドを追加します。

provision.sh
sudo yum -y install httpd # Webサーバ(httpd)
sudo systemctl start httpd.service # httpdサービス起動
sudo systemctl enable httpd.service # httpdサービス自動起動

provision.shファイルはVagrantfileと同一フォルダに保存します。
Vagrantが起動している場合

$ vagrant provision

Vagrantが起動していない場合

$ vagrant up

vagrant provisionをすることでprovisionだけを読み込みます。
vagrant provisionの実行タイミング

$ vagrant up … 初回実行時のみ
$ vagrant up --provision ... 起動時に行う
$ vagrant provision ... 起動中の仮想マシンで行う
$ vagrant reload --provision ... 再起動し行う

12.boxの作成

現在の仮想の状態をboxにするには以下のコマンドを入力します。

$ vagrant package

そうするとVagrantfileのあるフォルダにpackage.boxというboxファイルが作成されます。
この作成したboxをシステムに追加したい場合は、以下のコマンドを入力します。

$ vagrant box add my_box package.box

これで、現在の環境を使い回すことができます。

Vagrantfileに対して行なった、プライベートネットワークや共有フォルダの設定は反映されていないのでもう一度設定する必要があります。

13.プラグイン

Vegrantには、様々なプラグインが存在します。
プラグインをインストールには以下のコマンドを入力します。

$ vagrant plugin install [プラグイン名]

以下のコマンドでヘルプを参照することができます。

$ vagrant plugin ーh

インストールしたプラグインは仮想環境ごとではなく、Vagarnt自体にたいしてインストールされるので注意が必要です。

プラグイン(sahara)について

サンドボックスモードをオンにしてくれます。
仮想マシンになんらかのプログラムをインストールすると変更を加えた後に破棄したい場合、使える機能です。

$ vagrant sandbox on # これでサンドボックスモードとなる

この後に変更を加えます。

$ vagrant sandbox rollbak # これで上で行なった変更が全て無効になる

この後に変更を加えます。

$ vagrant sandbox commit # これで上で行なった変更が確定される

当然ながらcommitするとrollbakがしても戻りません。特にcommitをしなくてもsanbox offして変更が戻る事はありません。仮想環境を起動したままだとcommitは遅いので、vagrant suspendなどで一時停止するのが良いと思います。

箇条書きとなりましたが、今後もう一度動作させてみて不適切やわかりにくい部分については修正していこうと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?