2018年5月11日金曜日

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

Apache SupersetはPython製のデータ可視化ツールです。

〇Apache Supersetの画面

ブラウザからhttp://<ホストのIP>:8088/にアクセスします。デフォルトユーザ名はadmin、パスワードもadminです。

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

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804supersetmysql
manage_etc_hosts: true

runcmd:
  - 'apt-get update'
  - 'wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb'
  - 'echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections'
  - 'export DEBIAN_FRONTEND=noninteractive && dpkg -i mysql-apt-config_0.8.9-1_all.deb'
  - 'apt-get update'
  - 'apt-get -y install mysql-server'
  - 'mysql -uroot -e "CREATE DATABASE test DEFAULT CHARACTER SET utf8;"'
  - "mysql -uroot -e \"CREATE USER test@localhost IDENTIFIED BY 'test';\""
  - "mysql -uroot -e \"GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';\""
  - "mysql -uroot -e \"FLUSH PRIVILEGES;\""
  - 'mysql -utest -ptest test -e "create table messages (message_id integer not null, message varchar(100));"'
  - "mysql -utest -ptest test -e \"insert into messages value (1, 'hello world.');\""
  - "mysql -utest -ptest test -e \"insert into messages value (2, 'test message.');\""
  - 'wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh'
  - 'chmod +x Anaconda3-5.1.0-Linux-x86_64.sh'
  - './Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda'
  - 'apt-get -y install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev'
  - 'apt-get -y install libmysqlclient-dev'
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install mysqlclient'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install --upgrade setuptools'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install superset'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install cryptography --upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && fabmanager create-admin --app superset --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset db upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset load_examples'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset init'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset runserver -a 0.0.0.0 &'"
final_message: "completed."

○データソースの追加
同じコンテナにインストールされたMySQLに接続するには、以下の画面のようにSQLAlchemy URIにmysql://test:test@localhost/testを指定します。


〇コンテナに入る
lxc exec ub1804supersetmysql /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 ub1804supersetmysql

〇コンテナの削除
lxc delete ub1804supersetmysql

0 件のコメント:

コメントを投稿