LoginSignup
2
2

More than 5 years have passed since last update.

Vagrant+Dockerを使ってVM上にMattermostを立てる

Posted at

はじめに

みなさん、社内でチャットしてますか?
IT企業であれば、チャットの導入がされているのは当たり前じゃないでしょうか。

しかしながら、世にはチャットを導入していない企業もあります。
この記事はそんな悩ましい企業に勤めている方々へ、Vagrantを使ってVM環境にチャットサーバ(mattermost)を立てるVagrantfileを作成してみました。
簡単に、かつPCの環境をできるだけ汚さずチャットができるようになります。
https://github.com/ryoutoku/vagrant

私の勉強も踏まえ、Vagrantfileで作成した環境で重要か?と思う部分をやはりざっくり説明したいと思います。

注意:

  • Vagrant初心者なので間違いがあればご指摘下さい。
  • この方法をした結果、社内ITインフラ担当に怒られても責任は持ちません1

想定読者

  • 簡易的にチャットサーバ導入を検討している
  • 社内ITインフラギリギリを攻めれる

結論

解説は良いからさっさと実行したい、という方はこちら手順でできる(はず)。

  1. VirtualBoxをインストールする
  2. Vagrantをインストールする
  3. vagrant-proxyconfをインストールする
  4. こちらを任意のフォルダにダウンロードする
  5. 必要に応じてVagrantfileproxyproxy_portを設定する
  6. 4.でダウンロードしたフォルダで以下コマンドを実行する vagrant up
  7. VMが起動するので、http://{ホストPCのIPアドレス}:8065/ にアクセスし、Mattermostにアクセスできることを確認する
  8. 必要に応じてホストOSのポート8065を開放するなど、アクセス関係を設定すると同じネットワーク上のPCからVM環境にアクセス可能になる

構築する環境

構築する環境や必要なツールは以下のようになっています。

ホストOS:

  • VirtualBox
  • Vagrant
    • vagrant-proxyconf (VM内でプロキシ設定を行うプラグイン)

ゲストOS(VM環境):

  • Ubuntu Server 14.04
  • Docker
    • Mattermost (slackクローンチャットアプリ)

Vagrantfile解説

構築内容

Vagrantfileで構築するにあたり、以下環境を作成します。

  • VM環境にDockerを使用してMattermostを立ち上げる
  • ホストOSから立ち上げたMattermostにアクセス可能にする

ここで考慮すべき設定は以下になります。

  • ホストOSからVM環境にアクセス可能にする
    • ホストオンリーアダプタを使用し、VM環境のIPアドレスを指定する
  • VM環境のMattermostにホストPC以外からアクセス可能にする
    • ポートフォワーディングにより、VM環境のMattermostのポート番号とホストOSのポート番号とを関連付ける

ホストOSからVM環境にアクセス可能にする

ホストOSからVM環境にアクセス可能にするためには、ホストオンリーアダプタを設定する必要があります。
また、IPを指定してVM環境にアクセスできるようにしています(以下ではIPを192.168.56.101にしています)。

  # ホストオンリーアダプタをipアドレス固定で追加
  config.vm.network "private_network", ip: "192.168.56.101"

VM環境のMattermostにホストPC以外からアクセス可能にする

VM環境のMattermostに他PCからアクセスするためには、ホストPCのアクセスをVM環境に転送する(=ポートフォワーディング)する必要があります。
今回、Mattermostはポート番号8065で起動するので、ホストPCも同じく8065にしておきます。
こうすることで、http://{ホストPCのIP}:8065のアクセスがhttp://{VM環境のIP}:8065にポートフォワーディングされ、Mattermostにアクセスすることができます。

 # ポート
  config.vm.network "forwarded_port", guest: 8065, host: 8065

その他 1:proxy, proxy_portの設定

悩ましい企業に勤めている方の多くは、プロキシサーバ経由で外部のネットワークにアクセスしていると思います。
VM環境でも、DockerやMattermostなど外部ネットワークから取得するものもあるため、
先に挙げたvagrant-proxyconfを使って、プロキシの設定を行っています。

  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.http     = "http://#{proxy_ip}:#{proxy_port}"
    config.proxy.https    = "http://#{proxy_ip}:#{proxy_port}"
    config.proxy.no_proxy = "localhost,127.0.0.1"
  end

その他 2:Docker, Mattermostのインストール

VM環境にDocker, Mattermostをインストールしている部分は以下になります。
以下はvagrant upした際など、VM環境でroot権限で実行するコマンドを記載しています。
中身はDockerインストール&DockerでのMattermost起動なので、割愛します。

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get remove docker docker-engine docker.io

    apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
    apt-get install apt-transport-https ca-certificates curl software-properties-common aptitude
    curl -O https://download.docker.com/linux/ubuntu/dists/trusty/pool/stable/amd64/docker-ce_18.03.1~ce-0~ubuntu_amd64.deb
    dpkg -i docker-ce_18.03.1~ce-0~ubuntu_amd64.deb

    # 依存関係が壊れるらしいので必要
    apt-get -f -y install
    docker run --restart=always --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview
  SHELL

最後に

過去の私と同じ環境に身を置く方へ、ということで、色々と調べながら初めてVagrantfileを作成してみました。
やってみればVagrantもあまり難しくないのかなーと思います(間違ってるかもしれませんが)。
ので、悩ましい企業にいる方も、今回のMattermostと同じようにVM環境にツールを導入して技術の幅を広げてみてはいかがでしょうか?


  1. VirtualBox,Vagrant,Dockerにアクセス&ダウンロードできるのであれば問題無いような気がしますが。。。 

2
2
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
2
2