2018年4月28日土曜日

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

Perkeep(Camlistore)は様々なデータを保存できるシステムです。

〇Perkeepの画面


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

config.yml
#cloud-config

package_upgrade: true

hostname: perkeep
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/camlistored'
      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"
  - "cd /opt/camlistore"
  - "export PATH=$PATH:/usr/local/go/bin && /usr/local/go/bin/go run make.go"
  - "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/camlistore/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"'

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

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

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

〇コンテナの停止
lxc stop perkeep

〇コンテナの削除
lxc delete perkeep

0 件のコメント:

コメントを投稿