全体像は、Webサーバ1台、DBサーバ1台をVagrantで設定し、Ansibleでそれぞれのサーバに設定を行う。
インストール
簡単な流れは
1)VirtualBoxをインストール
2)Vagrantをインストール
3)Vagrantfileを編集
1)と2)については以下の記事のとおりに設定。すごい簡単。
Vagrant+VirtualBoxでUbuntu環境構築 - Qiita
3)は以下の設定を行う。
使用するUbuntuのBoxイメージは「bento/ubuntu-18.04」を使用。
$ vagrant init bento/ubuntu-18.04
上記のコマンド実行後に、Vagrantfileが生成されるので、その中身を以下のように変更する。
1)ログイン時にどのホストにログインしているか分かりやすいようにホスト名をつける
2)固定IPを設定することで、Ansibleからアクセスできるようにする。(以下例では192.168.33.10)
3)AnsibleでNginxを設定した際に、http://127.0.0.1:8090/でアクセスしたいので、ポートフォワーディングの設定を行う
4)メモリは実際に想定されるサイズのメモリサイズを設定しておきたいので、とりあえず2GB(2048) を設定。
config.vm.hostname = "dev-webserver" config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "forwarded_port", guest: 80, host: 8090, host_ip: "127.0.0.1" 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 = "2048" end
ネットワーク疎通確認は以下のコマンドで行う。
$ ping 192.168.33.10
Vagrant起動
起動
$ vagrant up
状態確認
$ vagrant status
全てのvagrant確認
$ vagrant global-status
シャットダウン
$ vagrant halt
再起動
$ vagrant reload
一時停止
$ vagrant suspend
一時停止から復帰
$ vagrant resume
実行中のマシンを停止し、削除
$ vagrant destroy
UbuntuにSSHでログイン
以下のコマンドでログインする
$ vagrant ssh または $ ssh vagrant@192.168.33.10
ログイン先の「/vagrant」は、Vagrantfileのディレクトリと同期しているので
ファイルの出し入れが必要な際はこのディレクトリを使用する。
ログアウトは単純にexitを打つだけ
$ exit
Sandbox環境を作成する
プラグインであるSaharaを使用する。サンドボックス環境を用意することでAnsibleによる試行錯誤(作ったり、壊したり)を行いやすいようにする。
詳細は以下のサイトを参考
VagrantにSaharaを導入 - Qiita
今回は、sshでサーバにログイン後、apt update&upgrade後にsandboxをonにした。
これでクリーンな環境にいつでも戻すことができる。
インストール
$ vagrant plugin install sahara
確認
$ vagrant sandbox status
sandboxモード開始
$ vagrant sandbox on
変更を決定
$ vagrant sandbox commit
変更を破棄し、ロールバック
$ vagrant sandbox rollback
sandboxモードを終了(commitしていないものは破棄される)
$ vagrant sandbox off