2018年7月31日火曜日

Python API Client for Kanboardを使用して、グループの操作を行う

より新しい記事「Python API Client for Kanboard 1.1.2を使用して、グループの操作を行う」を参照してください。

Python API Client for Kanboardを使用してPythonからKanboardを操作する事ができます。

〇Python API Client for Kanboardのインストール
pipenv install kanboard
または
pip install kanboard

〇下準備
API KeyとAPI endpointの情報はSettings > APIで取得できます
以下のサンプルコードでapiKey、apiEndpointの値に設定します。

〇グループの列挙
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
groups = kb.getAllGroups()
pprint(groups)

〇グループの追加
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.createGroup(name="テストグループ")
pprint(result)

〇グループの削除
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
group = [group for group in kb.getAllGroups() if group['name'] == 'テストグループ']
if len(group) != 0:
  kb.removeGroup(group_id = group[0]['id'])

〇グループメンバーの列挙
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
group = [group for group in kb.getAllGroups() if group['name'] == 'テストグループ']
if len(group) != 0:
  members = kb.getGroupMembers(group_id = group[0]['id'])
  for member in members:
    print(member['username'])

〇グループにユーザーを追加
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)

group = [group for group in kb.getAllGroups() if group['name'] == 'テストグループ']
user = kb.getUserByName(username="sample1")
if user is not None and len(group) != 0:
  groupID = group[0]['id']
  userID = user['id']
  result = kb.addGroupMember(group_id = groupID, user_id = userID)
  pprint(result)

〇グループからユーザを削除
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)

group = [group for group in kb.getAllGroups() if group['name'] == 'テストグループ']
user = kb.getUserByName(username="sample1")
if user is not None and len(group) != 0:
  groupID = group[0]['id']
  userID = user['id']
  result = kb.removeGroupMember(group_id = groupID, user_id = userID)
  pprint(result)

〇関連情報
・Python API Client for KanboardのGithubページ
https://github.com/kanboard/python-api-client

・Kanboardに関する他の記事はこちらを参照してください。

VagrantでDry/Docker/Docker Composeがインストールされた仮想マシン(Ubuntu16.04)を構築する

Dryはキャラクターベースの画面からDockerコンテナを管理する事ができます。

○Dryの画面

dryコマンドで起動します。

○構築方法
以下のVagrantfileを使用して、Dry/Docker/Docker Composeがインストールされた仮想マシン(Ubuntu16.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604dry"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604dry"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.109", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.109", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

# install docker-ce
apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable test edge"
apt-get update
apt-get -y install docker-ce

groupadd docker
adduser vagrant docker
systemctl enable docker
docker version

# install docker compose
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

# install Dry
curl -sSf https://moncho.github.io/dry/dryup.sh | sudo sh
chmod 755 /usr/local/bin/dry
SHELL
end


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

DockerでDrupal8.5.5とMariaDBのコンテナ(Alpine3.8)を構築する

DrupalはPHP製のCMSです。

〇Drupalの画面


〇構築手順
1. Drupalイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mydrupal .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-mbstring php7-session php7-curl php7-xml php7-dom php7-json php7-ctype php7-tokenizer php7-gd php7-pdo php7-pdo_mysql php7-simplexml php7-opcache openssl openrc \
  && rm -rf /var/cache/apk/* \
  && wget https://ftp.drupal.org/files/projects/drupal-8.5.5.tar.gz \
  && tar xvfz drupal-8.5.5.tar.gz \
  && rm -f drupal-8.5.5.tar.gz \
  && mkdir /opt \
  && mv drupal-8.5.5 /opt/drupal \
  && chown -R apache:apache /opt/drupal \
  && mkdir -p /run/apache2 \
  && echo $'<Directory "/opt/drupal">\n\
  Options Indexes FollowSymLinks \n\
  AllowOverride All \n\
  Require all granted \n\
  RewriteEngine on \n\
  RewriteBase / \n\
  RewriteCond %{REQUEST_FILENAME} !-f \n\
  RewriteCond %{REQUEST_FILENAME} !-d \n\
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] \n\
</Directory>' >> /etc/apache2/httpd.conf \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf \
  && sed -i -e 's|DocumentRoot "/var/www/localhost/htdocs"|DocumentRoot "/opt/drupal"|' /etc/apache2/httpd.conf
EXPOSE 80
VOLUME /opt/drupal
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. DrupalとMariaDB10.3コンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  drupal:
    image: mydrupal
    container_name: "drupal"
    volumes:
      - "drupal-data:/opt/drupal"
    ports:
      - "80:80"
    depends_on:
      - drupaldb
  drupaldb:
    image: mariadb:10.3
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "drupal-db"
    volumes:
      - "drupaldb-data:/var/lib/mysql"
    ports:
      - "3306:3306"
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_ROOT_PASSWORD: drupal
volumes:
  drupal-data:
    driver: local
  drupaldb-data:
    driver: local

2.ブラウザからhttp://<Dockerホスト>にアクセスします。「Save and continue」ボタンをクリックします。


3.「標準」を選択して「保存して次へ」をクリックします


4.以下を入力して「保存して次へ」ボタンをクリックします
データベース名: drupal
ユーザ名: root
パスワード: drupal
ホスト: drupaldb


5.サイト名・管理者の情報を入力します


6.インストール完了画面



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

2018年7月30日月曜日

VagrantでZabbixとMariaDBをインストールした仮想マシン(Debian Stretch/9.4)を構築する

Zabbixはサーバー監視ソフトウェアです。

〇Zabbixの画面

ユーザ名、パスワードはAdmin/zabbixです。

〇構築方法
1. 以下のVagrantfileを使用して、ZabbixとMariaDBをインストールした仮想マシン(Debian Stretch/9.4)を構築します。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.4"
  config.vm.hostname = "db94zabbixmariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db94zabbixmariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.108", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.108", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


# install mariadb
echo "mariadb-server-10.1 mysql-server/root_password password root" | sudo debconf-set-selections
echo "mariadb-server-10.1 mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get -y install mariadb-server
mysql -uroot -proot -e "CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER zabbix@localhost IDENTIFIED BY 'zabbix';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"

# install zabbix
wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
dpkg -i zabbix-release_3.4-1+stretch_all.deb
apt-get update
apt-get -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent snmp
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix zabbix
sed -i -e 's/# DBPassword=/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
sed -i -e 's|# php_value date.timezone Europe/Riga|php_value date.timezone Asia/Tokyo|' /etc/apache2/conf-enabled/zabbix.conf

systemctl enable zabbix-server.service
systemctl start zabbix-server.service
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
systemctl restart apache2.service

echo 'access to http://192.168.1.108/zabbix/'
echo 'user: Admin   password: zabbix'
SHELL
end

2.ブラウザからhttp://192.168.1.108/zabbix/にアクセスします。「Next Step」をクリックします。


3.「Next Step」をクリックします。


4.Passwordフィールドにzabbixを入力して、「Next Step」をクリックします。


5.「Next Step」をクリックします。


6.「Next Step」をクリックします。


7.「Finish」をクリックします。


DockerでJoomla3.8.8、Percona Serverがインストールされたコンテナ(Alpine 3.7)を構築する

JoomlaはPHP製のCMSです。

〇Joomlaの管理者画面


○構築方法
以下の手順で、Joomla3.8.8とPercona Serverのコンテナを構築・実行します。

1. Joomlaイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t joomla .

Dockerfile
FROM alpine:3.7
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-pdo php7-session php7-mbstring php7-mcrypt php7-curl php7-json php7-xml php7-simplexml php7-zip php7-gd openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget -O joomla.zip https://downloads.joomla.org/cms/joomla3/3-8-8/Joomla_3-8-8-Stable-Full_Package.zip?format=zip \
  && mkdir -p /opt/joomla \
  && unzip joomla.zip -d /opt/joomla \
  && rm -f joomla.zip \
  && chown -R apache:apache /opt/joomla \
  && mkdir -p /run/apache2 \
  && ln -s /opt/joomla /var/www/localhost/htdocs
EXPOSE 80
VOLUME /opt/joomla
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. JoomlaとPercona Serverコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  joomla:
    image: joomla
    container_name: "joomla"
    volumes:
      - "joomla-data:/opt/joomla"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: percona:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "joomla-db"
    volumes:
      - "db-data:/var/lib/mysql"
      - "db-log:/var/log/mysql"
    environment:
        MYSQL_DATABASE: joomla
        MYSQL_ROOT_PASSWORD: joomla
volumes:
  db-data:
    driver: local
  db-log:
    driver: local
  joomla-data:
    driver: local

2.ブラウザでhttp://<Dockerホスト名またはIP>/joomla/にアクセスして、サイト設定画面のサイト名称や管理者情報を入力します。


3.データベース設定画面で接続情報を入力します。
データベース: MySQLi
ホスト名: db
ユーザ名: root
パスワード: joomla
データベース: joomla


4. Webホスティングアカウントの所有権の確認メッセージで、以下のコマンドを実行します。
docker ps
docker exec <docker psで表示されたjoomlaコンテナのID> rm -rf /opt/joomla/installation/<画面に表示されたファイル名>


5. 概要設定画面でインストールボタンをクリックします。


6. インストール完了画面で「installationディレクトリを削除」ボタンをクリックします。


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

2018年7月29日日曜日

Python API Client for Kanboardを使用して、ユーザーの操作を行う

より新しい記事「Python API Client for Kanboard 1.1.2を使用して、ユーザーの操作を行う 」を参照してください。

Python API Client for Kanboardを使用してPythonからKanboardを操作する事ができます。

〇Python API Client for Kanboardのインストール
pipenv install kanboard
または
pip install kanboard

〇下準備
API KeyとAPI endpointの情報はSettings > APIで取得できます
以下のサンプルコードでapiKey、apiEndpointの値に設定します。

〇ユーザーの列挙
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
users = kb.getAllUsers()
pprint(users)

〇ユーザーの追加
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.createUser(username="sample1", password="sample1", name="サンプル一郎", role="app-user")
pprint(result)

〇ユーザーの無効化
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.getUserByName(username="sample1")
userID = result['id']
result = kb.disableUser(user_id = userID)
pprint(result)

〇ユーザーの有効化
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.getUserByName(username="sample1")
userID = result['id']
result = kb.enableUser(user_id = userID)
pprint(result)

〇関連情報
Python API Client for KanboardのGithubページ https://github.com/kanboard/python-api-client

・Kanboardに関する他の記事はこちらを参照してください。

・Kanboardのgithubリポジトリ
https://github.com/kanboard/kanboard

VagrantでCrontab UIをインストールした仮想マシン(Ubuntu16.04)を構築する

Crontab UIでWebブラウザからcrontabを編集・管理を行うことができます。

〇Crontab UIの画面


〇構築方法
以下のVagrantfileを使用して、Crontab UIをインストールした仮想マシン(Ubuntu16.04)を構築することができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604crontabui"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604crontabui"
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.107", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


# install node
apt-get -y install curl git
curl -sL http://nsolid-deb.nodesource.com/nsolid_setup_3.x | sudo bash -
apt-get -y install nsolid-boron nsolid-console

# install crontab-ui
npm install -g crontab-ui


cat << EOF > /etc/systemd/system/crontabui.service
[Unit]
Description=crontab-ui
[Service]
Type=simple
Environment=HOST=0.0.0.0
Environment=PORT=9000
ExecStart=/usr/bin/crontab-ui
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable crontabui.service
systemctl start crontabui.service

echo 'access -> http://192.168.1.107:9000'
SHELL
end


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

2018年7月28日土曜日

Python API Client for Kanboardを使用して、プロジェクトの操作を行う


Python API Client for Kanboardを使用してPythonからKanboardを操作する事ができます。

〇Python API Client for Kanboardのインストール
pipenv install kanboard
または
pip install kanboard

〇下準備
API KeyとAPI endpointの情報はSettings > APIで取得できます
以下のサンプルコードでapiKey、apiEndpointの値に設定します。

〇プロジェクトの列挙
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
projects = kb.getAllProjects()
pprint(projects)

〇プロジェクト追加
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.createProject(name="サンプルプロジェクト")
pprint(result)

〇プロジェクト無効化
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.getProjectByName(name="サンプルプロジェクト")
projectID = result['id']
result = kb.disableProject(project_id = projectID)
pprint(result)

〇プロジェクト有効化
from kanboard import Kanboard
from pprint import pprint

apiKey = 'your-api-key'
apiEndpoint = 'your-api-endpoint'
kb = Kanboard(apiEndpoint, 'jsonrpc', apiKey)
result = kb.getProjectByName(name="サンプルプロジェクト")
projectID = result['id']
result = kb.enableProject(project_id = projectID)
pprint(result)

〇関連情報
Python API Client for KanboardのGithubページ
https://github.com/kanboard/python-api-client

・Kanboardに関する他の記事はこちらを参照してください。

・Kanboardのgithubリポジトリ
https://github.com/kanboard/kanboard

VagrantでctopとDockerがインストールされた仮想マシン(CentOS7.5)を構築する

ctopはtopコマンドのようにコンテナのCPU、メモリ、ネットワーク、IOの情報を表示します。

〇ctopの画面


〇構築方法
以下のVagrantfileを使用して、ctopとDockerがインストールされた仮想マシン(CentOS7.5)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.5"
  config.vm.hostname = "co75ctop"
config.vm.network :public_network, ip:"192.168.1.115"
config.vm.network "private_network", ip: "192.168.55.115", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
    vbox.name = "co75ctop"
    vbox.cpus = 4
    vbox.memory = 4096
    vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.provision "shell", inline: <<-SHELL
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
    --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --disable docker-ce-edge
yum -y install docker-ce
systemctl enable docker
systemctl start docker

usermod -g docker vagrant

# install docker compose
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

# instll ctop
wget https://github.com/bcicen/ctop/releases/download/v0.7.1/ctop-0.7.1-linux-amd64 -O /usr/local/bin/ctop
chmod +x /usr/local/bin/ctop

SHELL
end


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

2018年7月27日金曜日

VagrantでZabbixとMySQLをインストールした仮想マシン(Debian Stretch/9.4)を構築する

Zabbixはサーバー監視ソフトウェアです。

〇Zabbixの画面

ユーザ名、パスワードはAdmin/zabbixです。

〇構築方法
1. 以下のVagrantfileを使用して、ZabbixとMySQLをインストールした仮想マシン(Debian Stretch/9.4)を構築します。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.4"
  config.vm.hostname = "db94zabbix"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db94zabbix"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.108", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.108", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


# install mysql
wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb
export DEBIAN_FRONTEND=noninteractive
echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections
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 zabbix DEFAULT CHARACTER SET utf8;"
mysql -uroot -e "CREATE USER zabbix@localhost IDENTIFIED BY 'zabbix';"
mysql -uroot -e "GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';"
mysql -uroot -e "FLUSH PRIVILEGES;"


# install zabbix
wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
dpkg -i zabbix-release_3.4-1+stretch_all.deb
apt-get update
apt-get -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent snmp
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix zabbix
sed -i -e 's/# DBPassword=/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
sed -i -e 's|# php_value date.timezone Europe/Riga|php_value date.timezone Asia/Tokyo|' /etc/apache2/conf-enabled/zabbix.conf

systemctl enable zabbix-server.service
systemctl start zabbix-server.service
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
systemctl restart apache2.service


echo 'access to http://192.168.1.108/zabbix/'
echo 'user: Admin   password: zabbix'
SHELL
end

2.ブラウザからhttp://192.168.1.108/zabbix/にアクセスします。「Next Step」をクリックします。


3.「Next Step」をクリックします。


4.Passwordフィールドにzabbixを入力して、「Next Step」をクリックします。


5.「Next Step」をクリックします。


6.「Next Step」をクリックします。


7.「Finish」をクリックします。


DockerでHackMD、Percona Server5.7がインストールされたコンテナを構築する

HackMDでMarkdown文書をリアルタイムにほかのユーザと共同編集する事ができます。

〇HackMDの画面


〇構築方法
1.HackMDとPercona Server5.7コンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: '2'
services:
  hackmd:
    image: hackmdio/hackmd:1.1.1-ce
    environment:
      - HMD_DB_URL=mysql://root:hackmd@db:3306/hackmd
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: percona:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "mysql-db"
    volumes:
      - "db-data:/var/lib/mysql"
      - "db-log:/var/log/mysql"
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: hackmd
      MYSQL_ROOT_PASSWORD: hackmd
volumes:
  db-data:
    driver: local
  db-log:
    driver: local


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

2018年7月26日木曜日

VagrantでDrupal8.5.5とMariaDBがインストールされた仮想マシン(Ubuntu16.04)を構築する

DrupalはPHP製のCMSです。

〇Drupalの画面


〇構築方法
1.以下のVagrantfileを使用して、Drupal8.5.5とMariaDBがインストールされた仮想マシン(Ubuntu16.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604drupal844mariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604drupal844mariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.107", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


# install mariadb
echo "mariadb-server-10.3 mysql-server/root_password password root" | sudo debconf-set-selections
echo "mariadb-server-10.3 mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get -y install mariadb-server
mysql -uroot -proot -e "CREATE DATABASE drupal DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER drupal@localhost IDENTIFIED BY 'drupal';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"

# install apache2 and drupal
apt-get -y install php7.0 libapache2-mod-php7.0 apache2 php7.0-mbstring php7.0-mysql php7.0-gd php7.0-curl php7.0-dom
wget https://ftp.drupal.org/files/projects/drupal-8.5.5.tar.gz
tar xvfz drupal-8.5.5.tar.gz
mv drupal-8.5.5 /opt/drupal
chown -R www-data:www-data /opt/drupal
sudo ln -s /opt/drupal/ /var/www/html/
cat << EOF >> /etc/apache2/apache2.conf
<Directory /var/www/html>
  AllowOverride All
  RewriteEngine on
</Directory>
EOF
a2enmod rewrite
systemctl restart apache2

echo 'access http://192.168.55.107/drupal/'
echo 'db:drupal user: drupal, password: drupal'
SHELL
end

2.ブラウザからhttp://192.168.55.107/drupal/にアクセスします。「Save and continue」ボタンをクリックします。


3.「標準」を選択して「保存して次へ」をクリックします


4.データベース名・ユーザー名・パスワードに「drupal」を入力して「保存して次へ」ボタンをクリックします


5.サイト名・管理者の情報を入力します


6.インストール完了画面



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

VagrantでRundeckとMySQLをインストールした仮想マシン(Ubuntu18.04)を構築する

Rundeckはオープンソースのジョブスケジューラです。

〇Rundeckの画面

ブラウザからhttp://192.168.1.107:4440にアクセスする。デフォルトのユーザ名/パスワードはadmin/adminです。

〇構築方法
以下のVagrantfileを使用して、RundeckとMySQLをインストールした仮想マシン(Ubuntu18.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804rundeckmysql"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804rundeckmysql"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.107", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


cd /root
mkdir ./.ssh
ssh-keygen -f ./.ssh/id_rsa -t rsa -N ''

# install mysql
echo "mysql-server-5.7 mysql-server/root_password password root" | sudo debconf-set-selections
echo "mysql-server-5.7 mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get -y install mysql-server-5.7
mysql -uroot -proot -e "CREATE DATABASE rundeck DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER rundeck@localhost IDENTIFIED BY 'rundeck';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON rundeck.* TO 'rundeck'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"

# install java
apt-get -y install openjdk-8-jdk

# download and install rundeck
mkdir -p /opt/rundeck
cd /opt/rundeck
wget http://dl.bintray.com/rundeck/rundeck-maven/rundeck-launcher-2.11.4.jar
/usr/bin/java -Xmx1024m -jar rundeck-launcher-2.11.4.jar --installonly


# setup config files
sed -i -e 's#grails.serverURL=http://ub1804rundeckmysql:4440#grails.serverURL=http://192.168.1.107:4440#' /opt/rundeck/server/config/rundeck-config.properties
sed -i -e 's#dataSource.url = jdbc:h2:file:/opt/rundeck/server/data/grailsdb;MVCC=true#dataSource.url = jdbc:mysql://localhost/rundeck?autoReconnect=true#' /opt/rundeck/server/config/rundeck-config.properties
echo 'dataSource.username = rundeck' >> /opt/rundeck/server/config/rundeck-config.properties
echo 'dataSource.password = rundeck' >> /opt/rundeck/server/config/rundeck-config.properties


cat << EOF > /etc/systemd/system/rundeck.service
[Unit]
Description=rundeck
[Service]
Type=simple
ExecStart=/usr/bin/java -Xmx2048m -jar rundeck-launcher-2.11.4.jar -b /opt/rundeck
WorkingDirectory=/opt/rundeck
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable rundeck.service
systemctl start rundeck.service

echo 'id_rsa.pub'
echo '------------------'
cat /root/.ssh/id_rsa.pub
echo '------------------'
echo ''
echo 'access -> http://192.168.1.107:4440'
echo 'user: admin    password:admin'

SHELL
end

2018年7月25日水曜日

DockerでRundeckとPostgreSQL10.4のコンテナを構築する

Rundeckはオープンソースのジョブスケジューラです。

〇Rundeckの画面


〇構築方法
1. 以下のコマンドを実行して、Dockerfileとstart.shからrundeckのイメージの作成します。
docker build -t rundeck-pg .

Dockerfile
FROM alpine:3.7
RUN  apk update \
  && apk add --no-cache openjdk8 \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/rundeck \
  && wget http://dl.bintray.com/rundeck/rundeck-maven/rundeck-launcher-2.11.4.jar -P /opt/rundeck 
COPY ./start.sh / 
RUN chmod +x ./start.sh 
EXPOSE 4440
VOLUME /opt/rundeck
CMD /start.sh

start.sh
#!/bin/sh
cd /opt/rundeck
if [ ! -f /opt/rundeck/etc/profile ]; then
  /usr/bin/java -Xmx1024m -jar rundeck-launcher-2.11.4.jar --installonly
  sed -i -e 's#grails.serverURL=.*4440#grails.serverURL='$SERVER_URL'#' /opt/rundeck/server/config/rundeck-config.properties
  sed -i -e 's#dataSource.url = jdbc:h2:file:/opt/rundeck/server/data/grailsdb;MVCC=true#dataSource.url = jdbc:postgresql://rundeckdb/rundeck#' /opt/rundeck/server/config/rundeck-config.properties
  echo 'dataSource.username = postgres' >> /opt/rundeck/server/config/rundeck-config.properties
  echo 'dataSource.password = rundeck' >> /opt/rundeck/server/config/rundeck-config.properties
  echo 'dataSource.driverClassName = org.postgresql.Driver' >> /opt/rundeck/server/config/rundeck-config.properties
fi
/usr/bin/java -Xmx2048m -jar rundeck-launcher-2.11.4.jar -b /opt/rundeck

2.docker-compose.ymlのSERVER_URL環境変数を自分の環境に合わせたのち、以下のコマンドを実行してRundeckとPostgreSQLのコンテナを構築・実行します。
docker-compose up -d

docker-compose.yml
version: "2"
services:
  rundeck:
    image: rundeck-pg
    container_name: "rundeck"
    volumes:
      - "rundeck-data:/opt/rundeck"
    environment:
      SERVER_URL: http://<Dockerホスト名またはIP>:4440
    ports:
      - "4440:4440"
    depends_on:
      - rundeckdb
  rundeckdb:
    image: postgres:10.4-alpine
    container_name: "rundeck-db"
    ports:
      - "5432:5432"
    volumes:
      - "rundeckdb-data:/var/lib/postgresql/data"
    environment:
        POSTGRES_DB: rundeck
        POSTGRES_PASSWORD: rundeck
volumes:
  rundeckdb-data:
    driver: local
  rundeck-data:
    driver: local

3.ブラウザからhttp://<Dockerホスト名またはIP>:4440にアクセスします。

VagrantでpgAdmin4とPostgreSQL10をインストールした仮想マシン(Ubuntu 18.04)を構築する

pgAdmin4はPostgreSQL用のwebインターフェイスです。

〇pgAdmin4の画面

ユーザはadmin@localhost、パスワードにはadminpassを指定します。
接続情報として、DBとしてdwh、ユーザ名dwh、パスワードdwhを指定します。

〇構築方法
以下のVagrantfileを使用して、pgAdmin4とPostgreSQL10をインストールした仮想マシン(Ubuntu 18.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804pg10pgadmin4"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804pg10pgadmin4"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.105", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.105", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
sed -i.bak -e "s#http://us.archive.ubuntu.com/ubuntu#http://ftp.riken.jp/pub/Linux/ubuntu#g" /etc/apt/sources.list
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106


# install postgresql
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
apt-get -y install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt-get update
apt-get upgrade
apt-get -y install postgresql-10

echo "listen_addresses='*'" >> /etc/postgresql/10/main/postgresql.conf

#sed -i 's/host.*all.*all.*127.0.0.1/#host    all             all             127.0.0.1/g' /etc/postgresql/10/main/pg_hba.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 << EOF
createdb -T template0 --locale=ja_JP.UTF-8 --encoding=UTF8 dwh
psql -c "
alter user postgres with password 'postgres';
create user dwh with password 'dwh';
grant all privileges on database dwh to dwh;
"
EOF
echo "postgres:postgres" | chpasswd
systemctl restart postgresql.service


# install pgadmin4
apt-get -y install libpq-dev python-dev python-pip libapache2-mod-wsgi apache2
wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v3.0/pip/pgadmin4-3.0-py2.py3-none-any.whl
pip install pgadmin4-3.0-py2.py3-none-any.whl

cat << EOF >> /usr/local/lib/python2.7/dist-packages/pgadmin4/config_distro.py
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/usr/local/lib/python2.7/dist-packages/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/usr/local/lib/python2.7/dist-packages/pgadmin4/sessions'
STORAGE_DIR = '/usr/local/lib/python2.7/dist-packages/pgadmin4/storage'
EOF

cd /usr/local/lib/python2.7/dist-packages/pgadmin4
cat << EOF | python setup.py
admin@localhost
adminpass
adminpass
EOF
mkdir -p /var/log/pgadmin4
chown -R www-data:www-data /var/log/pgadmin4
mkdir -p /usr/local/lib/python2.7/dist-packages/pgadmin4/storage
chown -R www-data:www-data /usr/local/lib/python2.7/dist-packages/pgadmin4


cat << EOF > /etc/apache2/sites-available/pgadmin4.conf
<VirtualHost *>
  ServerName ub1804pg10pgadmin4

  WSGIDaemonProcess pgadmin processes=1 threads=25
  WSGIScriptAlias / /usr/local/lib/python2.7/dist-packages/pgadmin4/pgAdmin4.wsgi
  <Directory "/usr/local/lib/python2.7/dist-packages/pgadmin4/">
    WSGIProcessGroup pgadmin
    WSGIApplicationGroup %{GLOBAL}
    Require all granted
  </Directory>
</VirtualHost>
EOF

a2enmod wsgi
a2ensite pgadmin4.conf
a2dissite 000-default.conf
systemctl restart apache2

echo 'access to http://192.168.55.105/'


SHELL
end

DockerでAdminerとMicrosoft SQL Server 2017 Developer Editionのコンテナーを構築する

AdminerでブラウザからMicrosoft SQL Server 2017 Developer Editionを操作する事ができます。
Microsoft SQL Server 2017のDeveloper Editionについては以下を参照してください。
https://www.microsoft.com/ja-jp/sql-server/sql-server-2017-editions

○Adminerの画面

サーバ:mssqldb、ユーザ:sa、パスワード:mssql2017DEV!、データベース:masterを指定します。

○構築方法
1. Adminerイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t adminermssql .

Dockerfile
FROM ubuntu:16.04

ENV ACCEPT_EULA=Y \
  APACHR_RUN_DIR=/var/run/apache2 \
  APACHE_RUN_USER=www-data \
  APACHE_RUN_GROUP=www-data \
  APACHE_LOCK_DIR=/var/lock/apache2 \
  APACHE_LOG_DIR=/var/log/apache2
WORKDIR /opt
RUN apt-get update \
  && apt-get -y install wget apt-transport-https apache2 libapache2-mod-php7.0 php7.0-mbstring php-pear php7.0-dev build-essential libpcre3-dev make unixodbc-dev \
  && wget https://packages.microsoft.com/config/ubuntu/16.04/prod.list -O /etc/apt/sources.list.d/mssql-release.list \
  && apt-get update \
  && apt-get -y --allow-unauthenticated install msodbcsql17 \
  && pecl install sqlsrv \
  && pecl install pdo_sqlsrv \
  && echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini \
  && echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini \
  && a2dismod mpm_event \
  && a2enmod mpm_prefork \
  && a2enmod php7.0 \
  && echo "extension=pdo_sqlsrv.so" >> /etc/php/7.0/apache2/conf.d/30-pdo_sqlsrv.ini \
  && echo "extension=sqlsrv.so" >> /etc/php/7.0/apache2/conf.d/20-sqlsrv.ini \
  && wget https://github.com/vrana/adminer/releases/download/v4.6.3/adminer-4.6.3.php -O /var/www/html/index.php \
  && chown www-data:www-data /var/www/html/index.php \
  && . /etc/apache2/envvars \
  && mkdir -p ${APACHE_RUN_DIR} \
  && mkdir -p ${APACHE_RUN_USER} \
  && mkdir -p ${APACHE_LOCK_DIR} \
  && mkdir -p ${APACHE_LOG_DIR} \
  && mv /var/www/html/index.html /var/www/html/index.html.bak \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

2.以下のdocker-compose.ymlを使用して、AdminerとMySQLのコンテナーを構築する事ができます。
docker-compose up -d

docker-compose.yml
version: "2"
services:
  adminer:
    image: adminermssql
    container_name: "adminer"
    ports:
      - "8080:80"
    depends_on:
      - mssqldb
  mssqldb:
    image: microsoft/mssql-server-linux:2017-latest
    container_name: "mssql-db1"
    volumes:
      - "mssql-data:/var/opt/mssql/data"
      - "mssql-log:/var/opt/mssql/log"
      - "mssql-backup:/var/opt/mssql/backup"
    ports:
      - "1433:1433"
    environment:
      ACCEPT_EULA: Y
      MSSQL_PID: Developer
      SA_PASSWORD: mssql2017DEV!
volumes:
  mssql-data:
    driver: local
  mssql-log:
    driver: local
  mssql-backup:
    driver: local

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


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

・Adminerのプロジェクトwebサイト
https://www.adminer.org/

2018年7月24日火曜日

PortainerでMetabaseとMySQLのスタックを作成する

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

〇Metabaseの画面


〇構築方法
1.Portainer画面横のStacksをクリックして、Stacks list画面でAdd a stackボタンをクリックします


2.Create stack画面で、Nameフィールドにmetabase-mysql-stackを入力し、Web editorに以下を張り付ける
version: "3"
services:
  metabase:
    image: metabase/metabase
    container_name: "metabase"
    volumes:
      - "metabase-data:/metabase-data"
    environment:
      MB_DB_TYPE: mysql
      MB_DB_DBNAME: metabase
      MB_DB_PORT: 3306
      MB_DB_USER: root
      MB_DB_PASS: metabase
      MB_DB_HOST: metabasedb
    ports:
      - "3000:3000"
    depends_on:
      - metabasedb
  metabasedb:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "metabase-db"
    ports:
      - "14006:3306"
    volumes:
      - "metabasedb-data:/var/lib/mysql"
    environment:
      MYSQL_DATABASE: metabase
      MYSQL_ROOT_PASSWORD: metabase
volumes:
  metabasedb-data:
    driver: local
  metabase-data:
    driver: local



貼り付け後、deploy stackボタンをクリックします。

6.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>:3000/
しばらくすると管理者ユーザ登録画面となるので、管理者情報を入力して「Next」をクリックします


7.接続先データベース情報を入力します
Name: metabasedb
Host: metabasedb
Port: 3306
Database name: metabase
Database username: root
Database password: metabase


8.統計情報の送付可否設定を行います。これで、初期設定は完了します。



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

・Portainerに関する他の記事はこちらを参照してください。

PortainerでJupyter LabとPercona Serverのスタックを作成する

Jupyter Notebookでインタラクティブなコンピューティング環境を提供する事ができます。Portainerで簡単にwebブラウザからJupyter LabとPercona Serverのスタックを作成する事ができます。

○Jupyter Labの画面


〇構築方法
1.Portainer画面横のImagesをクリックして、Image list画面からBuild a new imageボタンをクリック


2.Build image画面nameフィールドにmyjupyterを入力

3.Web editorのテキストエリアに以下を貼り付け
FROM jupyter/scipy-notebook
ENV TZ=Asia/Tokyo
USER root
RUN apt-get update \
  && apt-get -y install libmysqlclient-dev \
  && pip install mysqlclient \
  && apt-get clean
USER $NB_UID



貼り付け後、build the image ボタンをクリックします。

4.画面横のStacksをクリック後、Stacks list画面でAdd a stackボタンをクリックします


5.Create stack画面で、Nameフィールドにjupyterlab-percona-stackを入力し、Web editorに以下を張り付ける
version: "3"
services:
  myjupyter:
    image: myjupyter
    container_name: "myjupyter"
    volumes:
      - "myjupyter-data:/home/jovyan/work"
    ports:
      - "8888:8888"
    environment:
      JUPYTER_TOKEN: jupyter
      JUPYTER_ENABLE_LAB: 1
    depends_on:
      - jupyterdb
  jupyterdb:
    image: percona:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "jupyterlab-db"
    volumes:
      - "jupyterdb-data:/var/lib/mysql"
      - "jupyterdb-log:/var/log/mysql"
    ports:
      - "3306:3306"
    environment:
        MYSQL_DATABASE: test
        MYSQL_ROOT_PASSWORD: test
volumes:
  jupyterdb-data:
    driver: local
  jupyterdb-log:
    driver: local
  myjupyter-data:
    driver: local



貼り付け後、deploy stackボタンをクリックします。

6.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>:8888/?token=jupyter

〇動作検証用コード
import MySQLdb

con = MySQLdb.connect(
  user='root',
  passwd='test',
  host='jupyterdb',
  db='test')

try:
  cur= con.cursor()
  cur.execute("create table messages (message_id integer, message varchar(100))")
  cur.execute("insert into messages values (100, 'hello world!')")
  sql = "select message_id, message from messages"
  cur.execute(sql)

  for row in cur.fetchall():
    print(row)

except MySQLdb.Error as er:
    print('MySQLdb.Error:', er)
cur.close
con.close

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