2018年6月12日火曜日

LXDでMetabaseとPostgreSQLがインストールされたコンテナ(Ubuntu18.04)を構築する

Metabaseはオープンソースのデータ解析・可視化ツールです。

〇Metabaseの画面


〇コンテナの構築
1.LXDで以下のコマンドを実行して、PostgreSQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804metabasepg
lxc config set ub1804metabasepg user.user-data - < config.yml
lxc start ub1804metabasepg

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804metabasepg
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/metabase.service
    content: |
      [Unit]
      Description=metabase
      [Service]
      Type=simple
      Environment="MB_JETTY_PORT=8080"
      Environment="MB_DB_TYPE=postgres"
      Environment="MB_DB_DBNAME=metabase"
      Environment="MB_DB_PORT=5432"
      Environment="MB_DB_USER=metabase"
      Environment="MB_DB_PASS=metabase"
      Environment="MB_DB_HOST=localhost"
      ExecStart=/usr/bin/java -Xmx2g -jar /opt/metabase/metabase.jar
      WorkingDirectory=/opt/metabase
      Restart=no
      [Install]
      WantedBy=multi-user.target

  - path: /tmp/init.sql
    content: |
      alter user postgres with password 'postgres';
      create user metabase with password 'metabase';
      grant all privileges on database metabase to metabase;

  - path: /tmp/sample.sql
    content: |
      create table messages (message_id integer not null, message varchar(100));
      insert into messages value (1, 'hello world.');
      insert into messages value (2, 'test message.');

runcmd:
  - 'apt-get update'
  - 'apt-get -y install language-pack-ja'
  - 'apt-get -y install postgresql-10'
  - "echo \"listen_addresses='*'\" >> /etc/postgresql/10/main/postgresql.conf"
  - 'echo "host    all         all         127.0.0.1/32          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'echo "host    all         all         192.168.1.0/24          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'echo "host    all         all         192.168.55.0/24          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'su - postgres /bin/sh -c "export LC_ALL=ja_JP.UTF-8 && createdb -T template0 --locale=ja_JP.UTF-8 --encoding=UTF8 metabase"'
  - 'su - postgres /bin/sh -c "psql -f /tmp/init.sql"'
  - 'export PGPASSWORD=metabase && psql -U metabase -f sample.sql metabase'
  - 'echo "postgres:postgres" | chpasswd'
  - 'systemctl restart postgresql.service'
  - "apt-get -y install openjdk-8-jdk"
  - "wget http://downloads.metabase.com/v0.29.0/metabase.jar"
  - "mkdir -p /opt/metabase"
  - "mv metabase.jar /opt/metabase"
  - "systemctl enable metabase.service"
  - "systemctl start metabase.service"
final_message: "completed."

2.ブラウザからブラウザからhttp://<ホストのIP>:8080/にアクセスします。
ユーザ情報を入力します。


3.データベースのタイプを選択します


4.接続データベース情報を以下のように入力します
Database type: postgres
Host: localhost
Port: 5432
Database name: metabase
Database username: metabase
Database password: metabase
これ以降はお好みで選択します。


〇コンテナに入る
lxc exec ub1804metabasepg /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804metabasepg

〇コンテナの削除
lxc delete ub1804metabasepg


○関連情報
・Metabaseに関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿