とーますメモ

Ruby on Rails / Goなどの学習メモ

Vagrant × AnsibleでUbuntu18.04環境を設定してみる - Webサーバ編 -

全体像は、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