2018年5月12日土曜日

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

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

〇Apache Supersetの画面

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

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

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804supersetpg
manage_etc_hosts: true

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

  - 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.UTF8 && createdb -T template0 --locale=ja_JP.UTF-8 --encoding=UTF8 test"'
  - 'su - postgres /bin/sh -c "psql -f /tmp/init.sql"'
  - 'export PGPASSWORD=test && psql -U test -f sample.sql'
  - 'echo "postgres:postgres" | chpasswd'
  - 'systemctl restart postgresql.service'
  - '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 libpq-dev python-dev gcc g++ libssl-dev libsasl2-dev'
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install psycopg2-binary'"
  - "/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."

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

〇コンテナの削除
lxc delete ub1804supersetpg

○データソースの追加
同じ仮想マシンにインストールされたPostgreSQLに接続するには、以下の画面のようにSQLAlchemy URIにpostgresql+psycopg2://test:test@localhost/testを指定します。



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

0 件のコメント:

コメントを投稿