2018年5月2日水曜日

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

Perkeep(Camlistore)は様々なデータを保存できるアプリケーションです。

〇Perkeepの画面

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

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

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804perkeep
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/camlistore.service
    content: |
      [Unit]
      Description=Camlistore
      After=network.target
      [Service]
      Type=simple
      ExecStart=/bin/bash -c -i 'export HOME=/opt/camlistore && cd /opt/camlistore && /opt/camlistore/bin/perkeepd'
      WorkingDirectory=/opt/camlistore
      Restart=on-failure
      User=cs
      Group=cs
      [Install]
      WantedBy=multi-user.target

runcmd:
  - 'apt-get update'
  - "wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz"
  - "tar xvfz go1.10.1.linux-amd64.tar.gz"
  - "mv go /usr/local"
  - 'echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile'
  - "cd /opt"
  - "apt-get -y install git"
  - "git clone https://camlistore.googlesource.com/camlistore"
  - "mkdir -p /opt/src"
  - "mv camlistore /opt/src/perkeep.org"
  - "cd /opt/src/perkeep.org"
  - "export PATH=$PATH:/usr/local/go/bin && export GOPATH=/opt && /usr/local/go/bin/go run make.go"
  - "mkdir /opt/camlistore"
  - "mv /opt/bin /opt/camlistore"
  - "useradd cs"
  - "chown -R cs:cs /opt/camlistore"
  - systemctl enable camlistore.service
  - systemctl start camlistore.service
  - "while netstat -lnt | awk '$4 ~ /:3179$/ {exit 1}'; do sleep 10; done"
  - "sleep 10"
  - 'sed -i -e "s/\"auth\": \"localhost\"/\"auth\":\"userpass:admin:admin\"/" /opt/camlistore/.config/perkeep/server-config.json'
  - chown -R cs:cs /opt/camlistore
  - systemctl restart camlistore.service
final_message: "completed."

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=3179 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"'
〇コンテナに入る
lxc exec ub1804perkeep /bin/bash

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

〇コンテナの停止
lxc stop ub1804perkeep

〇コンテナの削除
lxc delete ub1804perkeep

0 件のコメント:

コメントを投稿