2018年9月30日日曜日

Jupyterとpandasdmxを使用して、OECDの農業観測のバイオ燃料データを取得する

Jupyterとpandasdmxを使用して、OECDの農業観測のバイオ燃料データを取得してグラフ表示するには、以下のコードを実行します。

〇出力グラフ


〇コード
from pandasdmx import Request
import matplotlib.pyplot as plt

oecd = Request('OECD')
countries="AUS"
data_response = oecd.data(resource_id='HIGH_AGLINK_2018', key=countries + ".ET+BD.QP/all?startTime=2017&endTime=2027")
oecd_data = data_response.data

df = data_response.write(oecd_data.series, parse_time=True)
df = df.unstack(level=0).to_frame()
df.columns=['Biofuel(Kt)']
df = df.reset_index()
df = df[["COMMODITY", "TIME_PERIOD", "Biofuel(Kt)"]]
df.set_index(["COMMODITY", "TIME_PERIOD"], inplace=True)
df = df.rename(index={'ET':'Ethanol', 'BD':'Biodiesel'})
ax = df.unstack(level=0).plot()
plt.xticks(rotation=90)
plt.legend(loc='best')
plt.show()

〇元データ
OECD-FAO Agricultural Outlook 2018-2027
https://stats.oecd.org/Index.aspx?DataSetCode=HIGH_AGLINK_2018


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

Jupyterとpandasdmxを使用して、OECDの全道路網に対する市街地道路割合データを取得する

Jupyterとpandasdmxを使用して、OECDの全道路網に対する市街地道路割合(Share of urban roads in total road network)データを取得してグラフ表示するには、以下のコードを実行します。

〇出力グラフ


〇コード
from pandasdmx import Request
import matplotlib.pyplot as plt

oecd = Request('OECD')
countries="FIN+USA+GBR"
data_response = oecd.data(resource_id='ITF_INDICATORS', key=countries + ".IND-INFR-URB-SHARE/all?startTime=2000&endTime=2016")
oecd_data = data_response.data

df = data_response.write(oecd_data.series, parse_time=True)
df = df.unstack(level=0).to_frame()
df.columns=['Share of urban roads']
df = df.reset_index()
df = df[["COUNTRY", "TIME_PERIOD", "Share of urban roads"]]
df.set_index(["COUNTRY", "TIME_PERIOD"], inplace=True)
ax = df.unstack(level=0).plot()
plt.xticks(rotation=90)
plt.legend(loc='best')
plt.show()

〇元データ
Indicators
https://stats.oecd.org/Index.aspx?DataSetCode=ITF_INDICATORS


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

Jupyterとwbdataで世界銀行の普通出生率データを取得する

Jupyterとwbdataで、国別年別の普通出生率を取得して、グラフ描画します。

〇出力画面


使用指標

SP.DYN.CBRT.IN
普通出生率 - Birth rate, crude (per 1,000 people)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata

df = wbdata.api.get_dataframe({"SP.DYN.CBRT.IN":"Birth rate, crude"}, country=["JP","US", "MY"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='best')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

VagrantでGantt Project、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu18.04)を構築する

Gantt ProjectはMicrosoft Projectのようなプロジェクト管理ソフトウェアです。

〇Gantt Projectの画面


〇構築方法
以下のVagrantfileを使用して、Gantt Project、Xfce Desktop環境、XRDPをインストールした仮想マシン(Ubuntu18.04) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfceganttproject"
config.vm.network :public_network, ip:"192.168.1.117"
config.vm.network "private_network", ip: "192.168.55.117", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = " ub1804xfceganttproject"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get -y install language-pack-ja
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker


# install java
add-apt-repository ppa:webupd8team/java
apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
apt-get install -y oracle-java8-installer oracle-java8-set-default

# install GanttProject
wget -O ganttproject.deb http://www.ganttproject.biz/dl/2.8.8/lin
dpkg -i ganttproject.deb

cat << EOF > /usr/share/applications/ganttproject.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/ganttproject
Name=Gantt Project
Categories=Development;
EOF

init 5
SHELL
end


関連情報

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

2018年9月29日土曜日

DockerでRundeck3.0.6とMySQL5.7のコンテナを構築する

Rundeckはオープンソースのジョブスケジューラです。ジョブ実行の自動化を行うことができます。

〇Rundeckの画面


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

Dockerfile
FROM alpine:3.8
RUN  apk update \
  && apk add --no-cache openjdk8 \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/rundeck \
  && wget https://dl.bintray.com/rundeck/rundeck-maven/rundeck-3.0.6-20180917.war -O /opt/rundeck/rundeck-3.0.6.war
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-3.0.6.war --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:mysql://rundeckdb/rundeck?autoReconnect=true#' /opt/rundeck/server/config/rundeck-config.properties
  echo 'dataSource.username = root' >> /opt/rundeck/server/config/rundeck-config.properties
  echo 'dataSource.password = rundeck' >> /opt/rundeck/server/config/rundeck-config.properties
  echo 'dataSource.driverClassName=com.mysql.jdbc.Driver' >> /opt/rundeck/server/config/rundeck-config.properties
fi
/usr/bin/java -Xmx2048m -jar rundeck-3.0.6.war -b /opt/rundeck

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

docker-compose.yml
version: "2"
services:
  rundeck:
    image: rundeck
    container_name: "rundeck"
    volumes:
      - "rundeck-data:/opt/rundeck"
    environment:
      SERVER_URL: http://192.168.1.250:4440
    ports:
      - "4440:4440"
    depends_on:
      - rundeckdb
  rundeckdb:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "rundeck-db"
    volumes:
      - "rundeckdb-data:/var/lib/mysql"
    environment:
        MYSQL_DATABASE: rundeck
        MYSQL_ROOT_PASSWORD: rundeck
volumes:
  rundeckdb-data:
    driver: local
  rundeck-data:
    driver: local

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

AnsibleでCentOS7.5にunixBenchをインストールする

unixBenchは歴史あるベンチマークツールです

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. Dockerインストール対象のホスト・ユーザ・パスワードを環境に合わせてinventoryファイルに記入します

inventory例
[unixbench]
192.168.1.61

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventoryとunixbench.ymlを準備し、以下のコマンドを実行します。unixbenchのビルド、インストールとベンチマーク実行も行います。
ansible-playbook -i inventory unixbench.yml

unixbench.yml
- hosts: unixbench
  tasks:
    - name: install git
      yum: name={{ item }} state=latest
      with_items:
        - git
      become: true
    - name: yum group-install
      yum: name="{{ item }}" state=present
      with_items:
        - "@Development Tools"
      become: true
    - name: git clone
      git:
        repo: https://github.com/kdlucas/byte-unixbench
        dest: /home/vagrant/byte-unixbench/
      become: true
    - name: make
      shell: make
      args:
        chdir: /home/vagrant/byte-unixbench/UnixBench
      become: true
    - name: Run
      shell: ./Run > /tmp/result
      args:
        chdir: /home/vagrant/byte-unixbench/UnixBench
      become: true
    - name: fetch result
      fetch:
        src: /tmp/result
        dest: ./result


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

その他のAnsibleの記事

2018年9月28日金曜日

Jupyterとpandasdmxを使用して、OECDの道路インフラ資本価値データを取得する

Jupyterとpandasdmxを使用して、OECDの道路インフラ資本価値(Road infrastructure capital value)データを取得してグラフ表示するには、以下のコードを実行します。

〇出力グラフ


〇コード
from pandasdmx import Request
import matplotlib.pyplot as plt

oecd = Request('OECD')
countries="USA+FRA+DEU"
data_response = oecd.data(resource_id='ITF_INV-MTN_DATA', key=countries + ".I-CPV-RD.EUR/all?startTime=1995&endTime=2016")
oecd_data = data_response.data

df = data_response.write(oecd_data.series, parse_time=True)
df = df.unstack(level=0).to_frame()
df.columns=['Euro']
df = df.reset_index()
df = df[["COUNTRY", "TIME_PERIOD", "Euro"]]
df.set_index(["COUNTRY", "TIME_PERIOD"], inplace=True)
ax = df.unstack(level=0).plot()
plt.xticks(rotation=90)
plt.legend(loc='best')
plt.show()

〇元データ
Transport infrastructure investment and maintenance spending
https://stats.oecd.org/Index.aspx?DataSetCode=ITF_INV-MTN_DATA


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

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

DockerでRundeck3.0.6とPostgreSQL10.4のコンテナを構築する Rundeckはオープンソースのジョブスケジューラです。ジョブ実行の自動化を行うことができます。

〇Rundeckの画面


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

Dockerfile
FROM alpine:3.8
RUN  apk update \
  && apk add --no-cache openjdk8 \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/rundeck \
  && wget https://dl.bintray.com/rundeck/rundeck-maven/rundeck-3.0.6-20180917.war -O /opt/rundeck/rundeck-3.0.6.war
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-3.0.6.war --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-3.0.6.war -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://192.168.1.250: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にアクセスします。

DockerでApache NiFi 1.7.1、PostgreSQL10.5がインストールされたコンテナを構築する

Apache Nifiは様々なデータを処理・分配するためのソフトウェアです。

○Apache NiFiの画面


○構築方法
以下の手順で、Apache NiF i.7.1とPostgreSQL10.5のコンテナを構築・実行します。

1. Apache NiFi公式にPostgreSQL JDBCドライバを追加したイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t nifi171pgsql .

Dockerfile
FROM apache/nifi:1.7.1
USER root
RUN wget https://jdbc.postgresql.org/download/postgresql-42.2.4.jar -P /usr/share/java
USER nifi
VOLUME /opt/nifi

2. Apache NiFiとPostgreSQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
COMPOSE_HTTP_TIMEOUT=180 docker-compose up -d

docker-compose.yml
version: "2"
services:
  db:
    image: postgres:10.5-alpine
    container_name: "nifi-db"
    ports:
      - "5432:5432"
    volumes:
      - "nifidb-data:/var/lib/postgresql/data"
    environment:
        POSTGRES_DB: nifi
        POSTGRES_PASSWORD: nifi
  nifi171pgsql:
    image: nifi171pgsql
    container_name: "nifi171pgsql"
    volumes:
      - "nifi-data:/opt/nifi"
    ports:
      - "8080:8080"
    depends_on:
      - db
volumes:
  nifidb-data:
    driver: local
  nifi-data:
    driver: local

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>:8080/nifi/

※DBへの接続
4.DBCPConnectionPoolで、以下のようにパラメータを設定してPostgreSQLにアクセスします。
Database Connection -> URL jdbc:postgresql://db:5432/nifi
Database Driver Class Name -> org.postgresql.Driver
Database Driver Location(s) -> /usr/share/java/postgresql-42.2.4.jar
Database User -> postgres
Password -> nifi


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

2018年9月27日木曜日

VagrantでTalend Open Studio for Data Integration7.0.1、KDE Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.5)を構築する

TalendはオープンソースのJava製のETLアプリケーションです。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

〇Talendの画面


仮想マシンの構築方法

以下のVagrantfileを使用して、Talend Open Studio for Data Integration7.0.1、KDE Desktop環境、XRDPをインストールした仮想マシンを構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.5"
  config.vm.hostname = "db95kdetosdi701"
config.vm.network "public_network", ip:"192.168.1.119", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db95kdetosdi701"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

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
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF


cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=mozc:True,fcitx-keyboard-jp:False,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc


apt-get -y install  xrdp fcitx-mozc task-kde-desktop tigervnc-standalone-server fcitx-tools

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
#sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"


cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp

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

# install Talend Open Studio
wget 'https://sourceforge.net/projects/talend-studio/files/Talend%20Open%20Studio/7.0.1/TOS_DI-20180411_1414-V7.0.1.zip'
unzip TOS_DI-20180411_1414-V7.0.1.zip
mv TOS_DI-20180411_1414-V7.0.1 /opt/tosdi

# create a shortcut for Talend Open Studio for Data Integration
cat << EOF > /usr/share/applications/tosdi.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/tosdi/TOS_DI-linux-gtk-x86_64
Name=Talend Open Studio for Data Integration
Categories=Utility;Development;
EOF

init 5
SHELL
end

関連情報

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

Jupyterとwbdataで世界銀行の中央政府債務GDP比データを取得する

Jupyterとwbdataで、国別年別の中央政府債務GDP比を取得して、グラフ描画します。

〇出力画面


使用指標

GC.DOD.TOTL.GD.ZS
中央政府債務GDP比 - Central government debt, total (% of GDP)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata

df = wbdata.api.get_dataframe({"GC.DOD.TOTL.GD.ZS":"Gov. Debt percent of GDP"}, country=["JP","US", "GB"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='best')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

AnsibleでUbuntu18.04にDockerとdocker-composeをインストールする

Dockerとdocker-composeでコンテナの作成や実行を行うことができます。

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. Dockerインストール対象のホスト・ユーザ・パスワードを環境に合わせてinventoryファイルに記入します

inventory例
[docker]
192.168.1.61

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventoryとdocker.ymlを準備し、以下のコマンドを実行します。dockerグループに所属させたいユーザをusername変数に指定します。
ansible-playbook -i inventory docker.yml

docker.yml
- hosts: docker
  vars:
    - username: vagrant
  tasks:
    - name: download docker
      get_url:
        url: https://get.docker.com
        dest: /tmp/get-docker.sh
        mode: a+x
      become: true
    - name: install docker
      shell: creates=/usr/bin/docker /tmp/get-docker.sh
      become: true
    - name: add username to docker group
      user: name={{ username }} group=docker append=yes
      become: true
    - name: install python-pip
      apt: name={{ item }} state=present
      with_items:
        - python-pip
      become: true
    - name: install docker-compose
      pip:
        name: docker-compose
      become: true


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

2018年9月26日水曜日

Jupyterとwbdataで世界銀行の化石燃料消費率データを取得する

Jupyterとwbdataで、国別年別の化石燃料消費率を取得して、グラフ描画します。

〇出力画面


使用指標

EG.USE.COMM.FO.ZS
化石燃料消費率 - Fossil fuel evergy consumption (% of total)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata

df = wbdata.api.get_dataframe({"EG.USE.COMM.FO.ZS":"Percent of total"}, country=["JP","US", "BR"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='best')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

VagrantでyEd、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu 18.04)を構築する

yEdはVisioのような図を描画できるアプリケーションです。

〇yEdの画面


〇構築方法
以下のVagrantfileを使用して、yEd、KDE Desktop環境、XRDPをインストールした仮想マシン(Ubuntu18.04)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfceyed"
config.vm.network :public_network, ip:"192.168.1.117"
config.vm.network "private_network", ip: "192.168.55.117", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = " ub1804xfceyed"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get -y install language-pack-ja
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker


# install java
add-apt-repository ppa:webupd8team/java
apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
apt-get -y install oracle-java8-installer

# download yed and extract it
apt-get install unzip
wget https://www.yworks.com/resources/yed/demo/yEd-3.18.1.zip
unzip yEd-3.18.1.zip
mv yed-3.18.1 /opt/yed

# create a shortcut for yEd
cat << EOF > /usr/share/applications/yed.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/java -jar /opt/yed/yed.jar
Icon=/opt/yed/icons/yicon32.png
Name=yEd
Categories=Utility;Development;
EOF

init 5
SHELL
end


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

2018年9月25日火曜日

Jupyterとwbdataで世界銀行のGDP成長率データを取得する

Jupyterとwbdataで、国別年別のGDP成長率を取得して、グラフ描画します。

〇出力画面


使用指標

NY.GDP.MKTP.KD.ZG
GDP成長率 - GDP growth (annual %)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata

df = wbdata.api.get_dataframe({"NY.GDP.MKTP.KD.ZG":"Annual percent"}, country=["JP","US", "AU"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='best')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

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

sysbenchでホストマシンやデータベースのベンチマークを行うことができます。

〇構築方法
以下のVagrantfileを使用して、sysbenchと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 = "ub1604sysbenchmariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604sysbenchmariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.65", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.65", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
timedatectl set-timezone Asia/Tokyo

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

# install and execute sysbench.
apt-get -y install sysbench
sysbench --test=cpu run --num-threads=2
sysbench --test=memory run --num-threads=2
sysbench --test=fileio run --file-test-mode=seqwr --num-threads=2
sysbench --test=fileio run --file-test-mode=rndwr --num-threads=2

sysbench --test=oltp prepare --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=sysbench --mysql-db=sysbench
sysbench --test=oltp run --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=sysbench --mysql-db=sysbench --num-threads=2

SHELL
end


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

2018年9月24日月曜日

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

unixBenchは歴史あるベンチマークツールです

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

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.5"
  config.vm.hostname = "db95unixbench"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db95unixbench"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.66", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.66", :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
timedatectl set-timezone Asia/Tokyo
apt-get update
timedatectl set-timezone Asia/Tokyo
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

# install unixbench
apt-get -y install git build-essential
git clone https://github.com/kdlucas/byte-unixbench
cd byte-unixbench/UnixBench
./make
./Run

SHELL
end


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

DockerでApache NiFi 1.7.1、MySQL5.7がインストールされたコンテナを構築する

Apache Nifiは様々なデータを処理・分配するためのソフトウェアです。

○Apache NiFiの画面


○構築方法
以下の手順で、Apache NiF i.7.1とMySQL 5.7のコンテナを構築・実行します。

1. Apache NiFi公式にMySQL JDBCドライバを追加したイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t nifi171mysql .

Dockerfile
FROM apache/nifi:1.7.1
USER root
RUN wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.12.tar.gz -P /tmp \
  && tar xvfz /tmp/mysql-connector-java-8.0.12.tar.gz -C /tmp \
  && cp /tmp/mysql-connector-java-8.0.12/mysql-connector-java-8.0.12.jar /usr/share/java \
  && rm -Rf /tmp/mysql-connector*
USER nifi
VOLUME /opt/nifi

2. Apache NiFiとMySQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
COMPOSE_HTTP_TIMEOUT=180 docker-compose up -d

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

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>:8080/nifi/

※DBへの接続
DBCPConnectionPoolで、以下のようにパラメータを設定してローカルのPostgreSQLにアクセスします。
Database Connection -> URL jdbc:mysql://db:5432/nifi
Database Driver Class Name -> com.mysql.jdbc.Driver
Database Driver Location(s) -> /usr/share/java/mysql-connector-java-8.0.12.jar
Database User -> root
Password -> nifi


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

2018年9月23日日曜日

Jupyterとwbdataで世界銀行の電化率データを取得する

Jupyterとwbdataで、国別年別の電化率を取得して、グラフ描画します。

〇出力画面


使用指標

EG.ELC.ACCS.ZS
電化率 - Access to electricity (% of population)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata

df = wbdata.api.get_dataframe({"EG.ELC.ACCS.ZS":"Percent of population"}, country=["JP","KH", "FJ"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='best')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

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

MezzanineはPython製のCMSです。

○Mezzanineの画面

デフォルトアカウント/パスワードはadmin/defaultです

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

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804mezzaninemariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804mezzaninemariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.62", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.62", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
timedatectl set-timezone Asia/Tokyo

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


# install apache2 and wsgi
apt-get -y install apache2 libapache2-mod-wsgi
a2enmod wsgi

# install mezzanine
apt-get -y install python-pip
pip install mezzanine

apt-get -y install libmariadbclient-dev
pip install mysqlclient

mkdir -p /opt/mezzanine
cd /opt/mezzanine

mezzanine-project mysite

sed -i -e 's/"ENGINE": "django.db.backends.sqlite3",/"ENGINE": "django.db.backends.mysql",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"NAME": "dev.db",/"NAME": "mezzanine",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"USER": "",/"USER": "mezzanine",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"PASSWORD": "",/"PASSWORD": "mezzanine",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"HOST": "",/"HOST": "localhost",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"PORT": "",/"PORT": "3306",/' /opt/mezzanine/mysite/mysite/local_settings.py
echo 'ALLOWED_HOSTS = ["*"]' >> /opt/mezzanine/mysite/mysite/local_settings.py

cd /opt/mezzanine/mysite
python manage.py createdb --noinput
python manage.py collectstatic --noinput

cat << EOF > /etc/apache2/sites-available/mezzanine.conf
<VirtualHost *:80>
  ServerName 192.168.55.62
  WSGIDaemonProcess mezzanine processes=1 threads=25
  WSGIScriptAlias / /opt/mezzanine/mysite/mysite/wsgi.py
  Alias /static/ /opt/mezzanine/mysite/static/
  <Directory /opt/mezzanine/mysite>
    WSGIProcessGroup mezzanine
    WSGIApplicationGroup %{GLOBAL}
    Require all granted
  </Directory>
</VirtualHost>
EOF

cat << EOF > /opt/mezzanine/mysite/mysite/wsgi.py
import os
import sys

from django.core.wsgi import get_wsgi_application
from mezzanine.utils.conf import real_project_name
sys.path.append("/opt/mezzanine/mysite")
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
                      "%s.settings" % real_project_name("mysite"))

application = get_wsgi_application()
EOF

chown -R www-data:www-data /opt/mezzanine

a2ensite mezzanine.conf
a2dissite 000-default.conf

systemctl restart apache2

echo 'access to http://192.168.55.62/'
echo 'access to http://192.168.55.62/admin/'
echo 'user: admin  password: default'
SHELL
end

2018年9月22日土曜日

Jupyterとwbdataで世界銀行の農業灌漑地率を取得する

Jupyterとwbdataで、国別年別の農業灌漑地率を取得して、グラフ描画します。

〇出力画面


使用指標

AG.LND.IRIG.AG.ZS
農業灌漑地率 - Agricultural irrigated land (% of total agricultural land)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata

df = wbdata.api.get_dataframe({"AG.LND.IRIG.AG.ZS":"Percent"}, country=["JP","US", "AU"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='center left')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

VagrantでQGISとXfce、XRDPがインストールされた仮想マシン(Ubuntu18.04)を作成する

QGISで地理情報の編集を行うことができます。

〇QGISの画面


〇構築方法
以下のVagrantfileを使用して、QGISとXfce、XRDPをインストールしたイメージ(Ubuntu18.04)を作成する事ができます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfceqgis"
config.vm.network :public_network, ip:"192.168.1.117"
config.vm.network "private_network", ip: "192.168.55.117", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804xfceqgis"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get -y install language-pack-ja
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker

# install QGIS
echo "deb http://qgis.org/debian bionic main" >> /etc/apt/sources.list
echo "deb-src http://qgis.org/debian bionic main" >> /etc/apt/sources.list
wget -O - http://qgis.org/downloads/qgis-2017.gpg.key | gpg --import
gpg --fingerprint CAEB3DC3BDF7FB45
gpg --export --armor CAEB3DC3BDF7FB45 | sudo apt-key add -
apt-get update
apt-get -y install qgis python-qgis qgis-plugin-grass

# download countries data
apt-get -y install unzip
wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip
unzip ne_110m_admin_0_countries.zip

init 5
SHELL
end


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

2018年9月21日金曜日

Jupyterとpandasdmxを使用して、OECDの農業観測の小麦生産データを取得する

Jupyterとpandasdmxを使用して、OECDの農業観測の小麦生産データを取得してグラフ表示するには、以下のコードを実行します。

〇出力グラフ


〇コード
from pandasdmx import Request
import matplotlib.pyplot as plt

oecd = Request('OECD')
countries="JPN+USA+AUS"
data_response = oecd.data(resource_id='HIGH_AGLINK_2018', key=countries + ".WT.QP/all?startTime=2017&endTime=2027")
oecd_data = data_response.data

df = data_response.write(oecd_data.series, parse_time=True)
df = df.unstack(level=0).to_frame()
df.columns=['Wheat(Kt)']
df = df.reset_index()
df = df[["COUNTRY", "TIME_PERIOD", "Wheat(Kt)"]]
df.set_index(["COUNTRY", "TIME_PERIOD"], inplace=True)
ax = df.unstack(level=0).plot()
plt.xticks(rotation=90)
plt.legend(loc='best')
plt.show()

〇元データ
OECD-FAO Agricultural Outlook 2018-2027
https://stats.oecd.org/Index.aspx?DataSetCode=HIGH_AGLINK_2018


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

DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

Jupyter Notebookでインタラクティブなコンピューティング環境を提供する事ができます。wbdataを使用して、世界銀行からデータを取得する事ができます。

○Jupyter Notebookの画面


構築方法

以下の手順で、Jupyter Notebookとwbdataのコンテナを構築・実行します。
1. psycopg2を追加したJupyter Notebookイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t scipy-notebook-wbdata .

Dockerfile
FROM jupyter/scipy-notebook
ENV TZ=Asia/Tokyo
USER root
RUN pip install wbdata
USER $NB_UID

2. Jupyter Notebookの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  scipy-notebook:
    image: scipy-notebook-wbdata
    container_name: "scipy-notebook-wbdata"
    volumes:
      - "scipy-notebook-data:/home/jovyan/work"
    ports:
      - "8888:8888"
    environment:
      JUPYTER_TOKEN: jupyter
volumes:
  scipy-notebook-data:
    driver: local

※Jupyter Labを使用したい場合は、以下のようにenvironmentにJUPYTER_ENABLE_LAB: 1を追加します。
    environment:
      JUPYTER_TOKEN: jupyter
      JUPYTER_ENABLE_LAB: 1

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


関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

JupyterとdatapackageでISO-4217通貨コードデータを取得する

Jupyterとdatapackageで、ISO-4217の通貨コードデータを取得して一覧表示するには、以下のコードを実行します。

〇グラフ出力


サンプルコード

以下のコードで、ISO-4217通貨コードデータを取得します。
from datapackage import Package
import pandas as pd

package = Package('https://datahub.io/core/currency-codes/datapackage.json')

for resource in package.resources:
  if resource.name == "codes-all_csv":
    df = pd.read_csv(resource.descriptor['path'])
    display(df)

動作確認バージョン

datapackage=1.14.1 (2020/07/15確認)

関連情報

様々なデータを取得できるdatapackageのまとめ

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

2018年9月20日木曜日

VagrantでTalend Open Studio for Data Integration7.0.1、LXDE Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.5)を構築する

TalendはオープンソースのJava製のETLアプリケーションです。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

〇Talendの画面


構築方法

以下のVagrantfileを使用して、Talend Open Studio for Data Integration7.0.1、LXDE Desktop環境、XRDPをインストールした仮想マシンを構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.5"
  config.vm.hostname = "db95lxdetosdi701"
config.vm.network "public_network", ip:"192.168.1.118", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db95lxdetosdi701"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

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
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF


cat << EOF > /home/vagrant/.xsession
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"


cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


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

# install Talend Open Studio
wget 'https://sourceforge.net/projects/talend-studio/files/Talend%20Open%20Studio/7.0.1/TOS_DI-20180411_1414-V7.0.1.zip'
unzip TOS_DI-20180411_1414-V7.0.1.zip
mv TOS_DI-20180411_1414-V7.0.1 /opt/tosdi

# create a shortcut for Talend Open Studio for Data Integration
cat << EOF > /usr/share/applications/tosdi.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/tosdi/TOS_DI-linux-gtk-x86_64
Name=Talend Open Studio for Data Integration
Categories=Utility;Development;
EOF

init 5
SHELL
end

関連情報

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

AnsibleでRaspberry PiにDockerとdocker-composeをインストールする

Dockerとdocker-composeでコンテナの作成や実行を行うことができます。

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. Dockerインストール対象のホスト・ユーザ・パスワードを環境に合わせてinventoryファイルに記入します

inventory例
[docker]
192.168.1.16

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=pi
ansible_ssh_pass=raspberry
ansible_sudo_pass=raspberry

3.inventoryとdocker.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory docker.yml

docker.yml
- hosts: docker
  tasks:
    - name: download docker
      get_url:
        url: https://get.docker.com
        dest: /tmp/get-docker.sh
        mode: a+x
      become: true
    - name: install docker
      shell: creates=/usr/bin/docker /tmp/get-docker.sh
      become: true
    - name: add pi to docker group
      user: name=pi group=docker append=yes
      become: true
    - name: install python-pip
      apt: name={{ item }} state=present
      with_items:
        - python-pip
      become: true
    - name: install docker-compose
      pip:
        name: docker-compose
      become: true


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

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

AnsibleでMariaDBとLimeSurveyをインストールする(Ubuntu18.04用)

LimeSurveyで、オンラインアンケートを設置することができます。

〇LimeSurveyの管理者画面


〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. インストール対象ホストのユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[lime-survey]
192.168.1.107

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventory、limesurvey.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory limesurvey.yml

limesurvey.yml
- hosts: lime-survey
  vars:
    - dbname: limesurvey
    - dbuser: limesurvey
    - dbpassword: limesurvey
    - dbhost: localhost
    - dbport: 3306
  tasks:
    - name: set password for root
      shell: echo "mariadb-server-10.1 mysql-server/root_password password root" | sudo debconf-set-selections
      become: yes
    - name: set password for root
      shell: echo "mariadb-server-10.1 mysql-server/root_password_again password root" | sudo debconf-set-selections
      become: yes
    - name: install mariadb
      apt:
        name: mariadb-server
        state: present
      become: yes
    - name: enable and start mariadb
      systemd:
        name: mysql
        enabled: yes
        state: started
      become: yes
    - name: Install required software
      apt: name={{ item }} state=present
      with_items:
        - libmysqlclient-dev
        - python-pip
      become: true
    - name: install MySQL-python using pip
      pip:
        name: "{{ item }}"
        state: forcereinstall
      with_items:
        - pip
        - MySQL-python
      become: true
    - name: create db
      mysql_db:
        name={{ dbname }}
        state=present
        encoding=utf8
        login_user=root
      become: true
    - name: create and grant a database user
      mysql_user:
        name={{ dbuser }}
        password={{ dbpassword }}
        priv="limesurvey.*:ALL"
        state=present
      become: true
    - name: Install apache and php modules
      apt: name={{ item }} state=present
      with_items:
        - apache2
        - libapache2-mod-php7.2
        - php7.2-gd
        - php7.2-json
        - php7.2-mysql
        - php7.2-pdo
        - php7.2-curl
        - php7.2-mbstring
        - php7.2-xml
        - php7.2-zip
      become: true
    - name: download limesurvey
      get_url:
        url: https://github.com/LimeSurvey/LimeSurvey/archive/3.14.0+180730.tar.gz
        dest: /tmp/
      become: true
    - name: extract limesurvey
      unarchive:
        remote_src: yes
        src: /tmp/LimeSurvey-3.14.0-180730.tar.gz
        dest: /opt/
      become: true
    - name: change owner
      file:
        path: /opt/LimeSurvey-3.14.0-180730
        owner: www-data
        group: www-data
        recurse: yes
      become: true
    - name: symlink
      file:
        path: /var/www/html/limesurvey
        state: link
        src: /opt/LimeSurvey-3.14.0-180730
      become: true
    - name: clean up
      file:
        state: absent
        path: /tmp/LimeSurvey-3.14.0-180730.tar.gz
      become: yes
    - name: start apache2.service
      systemd:
        name: apache2
        state: restarted
      become: yes

4.ブラウザからhttp://192.168.55.107/limesurveyにアクセスして、「日本語 - Japan」を選択して「Start installation」をクリックします


5.ライセンスを確認して、同意できるのであれば「同意する」をクリックします


4.「インストール前のチェック」画面で「次へ」をクリックします


6.「データベース設定」画面で、以下の項目を入力して「次へ」をクリックします
データベース形式: MySQL
データの場所: localhost
データベースユーザー: limesurvey
データベースパスワード: limesurvey
データベース名: limesurvey


7.「データベースを作成する」をクリックします


8.「管理者設定」画面で管理者情報等を入力して、「次へ」をクリックします


9.インストーラ完了画面



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

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

2018年9月19日水曜日

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

unixBenchは歴史あるベンチマークツールです

〇構築方法
以下のVagrantfileを使用して、unixBenchをインストールした仮想マシン(Ubuntu16.04)を構築します。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604unixbench"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604unixbench"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.97", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.97", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
timedatectl set-timezone Asia/Tokyo

# install unixbench
apt-get -y install git build-essential
git clone https://github.com/kdlucas/byte-unixbench
cd byte-unixbench/UnixBench
./make
./Run

SHELL
end


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

AnsibleでApache NiFiとPostgreSQL10をインストールする(Ubuntu18.04用)

Apache Nifiは様々なデータを処理・分配するためのソフトウェアです。

〇Apache NiFiの画面


〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. インストール対象ホストのユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[nifi-pg]
192.168.55.61

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventory、kanboard.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory nifi-pg.yml

nifi-pg.yml
- hosts: nifi-pg
  vars:
    - dbname: test
    - dbuser: test
    - dbpassword: test
  tasks:
    - name: configure sources.list
      blockinfile:
        dest: /etc/apt/sources.list.d/pgdg.list
        create: yes
        block: |
          deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
      become: true
    - name: add an apt key
      apt_key:
        url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
        state: present
      become: yes
    - name: install packages
      apt:
        name: ca-certificates
        state: latest
      become: yes
    - name: Install required software
      apt: name={{ item }} state=latest
      with_items:
        - postgresql-10
        - libpq-dev
        - python-dev
        - python-pip
      become: true
    - name: install psycopg2 using pip
      pip:
        name: "{{ item }}"
        state: forcereinstall
      with_items:
        - psycopg2-binary
      become: true
    - name: configure postgresql.conf
      blockinfile:
        dest: /etc/postgresql/10/main/postgresql.conf
        create: yes
        block: |
          listen_addresses='*'
      become: true
    - name: edit pg_hba.conf
      replace: dest=/etc/postgresql/10/main/pg_hba.conf regexp="host.*all.*all.*127.0.0.1" replace="#host    all             all             127.0.0.1"
      become: true
    - name: edit pg_hba.conf
      replace: dest=/etc/postgresql/10/main/pg_hba.conf regexp="^host.*all.*all.*::1/128.*ident" replace="host    all             all             ::1/128    password"
      become: true
    - name: configure postgresql.conf
      blockinfile:
        dest: /etc/postgresql/10/main/pg_hba.conf
        create: yes
        block: |
          host    all         all         127.0.0.1/32          password
          host    all         all         192.168.1.0/24          password
          host    all         all         192.168.55.0/24          password
      become: true
    - name: enable and start postgresq.service
      systemd:
        daemon_reload: yes
        enabled: yes
        state: started
        name: postgresql.service
      become: true
    - name: create PostgreSQL user
      postgresql_user:
        name: "{{ dbuser }}"
        password: "{{ dbpassword }}"
        login_user: postgres
        encrypted: yes
      become: true
      become_user: postgres
    - name: create a database
      postgresql_db:
        name: "{{ dbname }}"
        owner: "{{ dbuser }}"
        encoding: 'UTF-8'
        lc_collate: 'ja_JP.UTF-8'
        lc_ctype: 'ja_JP.UTF-8'
        template: 'template0'
        login_user: postgres
      become: true
      become_user: postgres
    - name: download jdbc driver
      get_url:
        url: https://jdbc.postgresql.org/download/postgresql-42.2.4.jar
        dest: /usr/share/java
      become: true
    - name: configure limits.conf
      blockinfile:
        dest: /etc/security/limits.conf
        create: yes
        block: |
          *  hard  nofile  50000
          *  soft  nofile  50000
          *  hard  nproc  10000
          *  soft  nproc  10000
      become: true
    - name: Install openjdk
      apt: name={{ item }} state=present
      with_items:
        - openjdk-8-jdk
      become: true
    - name: download nifi
      get_url:
        url: http://ftp.riken.jp/net/apache/nifi/1.7.1/nifi-1.7.1-bin.tar.gz
        dest: /opt
      become: true
    - name: extract nifi
      unarchive:
        remote_src: yes
        src: /opt/nifi-1.7.1-bin.tar.gz
        dest: /opt/
      become: true
    - name: setup systemd
      blockinfile:
        dest: /etc/systemd/system/nifi.service
        create: yes
        block: |
          [Unit]
          Description=Apache Nifi
          After=syslog.target network.target
          [Service]
          Type=forking
          ExecStart=/opt/nifi-1.7.1/bin/nifi.sh start
          ExecStop=/opt/nifi-1.7.1/bin/nifi.sh stop
          KillMode=none
          [Install]
          WantedBy=multi-user.target
      become: true
    - name: clean up
      file:
        state: absent
        path: /opt/nifi-1.7.1-bin.tar.gz
      become: yes
    - name: enable and start nifi.service
      systemd:
        daemon_reload: yes
        enabled: yes
        state: started
        name: nifi.service
      become: true

4.DBCPConnectionPoolで、以下のようにパラメータを設定してローカルのPostgreSQLにアクセスします。
Database Connection -> URL jdbc:postgresql://localhost:5432/test
Database Driver Class Name -> org.postgresql.Driver
Database Driver Location(s) -> /usr/share/java/postgresql-42.2.4.jar
Database User -> test
Password -> test


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

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

その他のAnsibleの記事

2018年9月18日火曜日

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

sysbenchでホストマシンやデータベースのベンチマークを行うことができます。

〇構築方法
以下のVagrantfileを使用して、sysbenchとMariaDBがインストールされた仮想マシン(Ubuntu18.04)を構築します。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804sysbenchmariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804sysbenchmariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.65", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.65", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
timedatectl set-timezone Asia/Tokyo

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

# install and execute sysbench.
apt-get -y install sysbench
sysbench cpu run --threads=2
sysbench memory run --threads=2
sysbench fileio run --file-test-mode=seqwr --threads=2
sysbench fileio run --file-test-mode=rndwr --threads=2

sysbench /usr/share/sysbench/oltp_read_write.lua prepare --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=sysbench --mysql-db=sysbench
sysbench /usr/share/sysbench/oltp_read_write.lua run --db-driver=mysql --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=sysbench --mysql-db=sysbench --threads=2

SHELL
end


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

VagrantでQuiteRSSとXfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu18.04)を構築する

QuiteRSSはオープンソースのRSSリーダーです。

○QuiteRSSの画面


○構築方法
以下のVagrantfileを使用して、QuiteRSSとXfce Desktop環境、XRDPをインストールした仮想マシン(Ubuntu16.04)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfcequiterss"
config.vm.network :public_network, ip:"192.168.1.117"
config.vm.network "private_network", ip: "192.168.55.117", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = " ub1804xfcequiterss"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get -y install language-pack-ja
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker

# install QuiteRSS
add-apt-repository ppa:quiterss/quiterss
apt-get update
apt-get -y install quiterss

echo 'sample feed: http://serverarekore.blogspot.com/feeds/posts/default'

init 5
SHELL
end


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

Jupyterとwbdataで世界銀行からコンピューター・通信・その他サービスデータを取得する

Jupyterとwbdataで、年別国別のコンピューター・通信・その他サービス(サービス輸出比)を取得して、棒グラフ描画します。

〇出力画面


使用指標

TX.VAL.OTHR.ZS.WT
コンピューター・通信・その他サービス(サービス輸出比) - Computer, communications and other services (% of commercial service exports)

サンプルコード

以下のコードをJupyterから実行してください。
%matplotlib inline
import matplotlib.pyplot as plt
import wbdata
import datetime

df = wbdata.api.get_dataframe({"TX.VAL.OTHR.ZS.WT":"Percent"}, country=["JP","US", "FR"], convert_date=True)
df.unstack(level=0).plot()
plt.legend(loc='best')
plt.show()

関連情報

・世界銀行のデータを取得・可視化する記事のまとめは以下のページを参照してください。
世界銀行のデータを取得できるwbdataパッケージのまとめ

wbdataパッケージをインストールしたコンテナを作成するには、以下のページを参照してください。
DockerでJupyter Notebookと世界銀行の情報が取得できるwbdataパッケージがインストールされたコンテナのイメージを作成する

コンテナではなく、仮想マシンを構築する場合は、以下を参照します。
VagrantでJupyter Lab、wbdata、BokehとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

・世界銀行のデータを取得することができるwbdataパッケージに関する他の記事はこちらを参照してください。

2018年9月17日月曜日

AnsibleでRaspberry PiにPrometheus Node Exporterをインストールする

Prometheus Node Exporterでハードウェア、OS情報の収集を行います。

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. Prometheus Node Exporterをインストール対象のユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[node-exporter]
192.168.1.16

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=pi
ansible_ssh_pass=raspberry
ansible_sudo_pass=raspberry

3.inventory node-exporter-deb.ymlを準備し、以下のコマンドを実行します。
archパラメータをRaspberry Pi 3系ならarmv7、Raspberry Pi 1系ならarmv6を指定します
ansible-playbook -i inventory node-exporter.yml

node-exporter.yml
- hosts: node-exporter
  vars:
    - password: prometheus
    - arch: armv7
  tasks:
    - name: create prometheus group
      group:
        name: prometheus
      become: true
    - name: create prometheus user
      user:
        name: prometheus
        group: prometheus
        password: "{{ password | password_hash('sha512') }}"
      become: true
    - name: create prometheus directory
      file:
        path: /opt/prometheus
        state: directory
        owner: prometheus
      become: true
    - name: download prometheus node exporter
      get_url:
        url: https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-{{ arch }}.tar.gz
        dest: /opt/prometheus/
      become: true
      become_user: prometheus
    - name: extract prometheus node exporter
      unarchive:
        remote_src: yes
        src: /opt/prometheus/node_exporter-0.16.0.linux-{{ arch }}.tar.gz
        dest: /opt/prometheus/
      become: true
      become_user: prometheus
    - name: symlink
      file:
        path: /bin/node_exporter
        state: link
        src: /opt/prometheus/node_exporter-0.16.0.linux-{{ arch }}/node_exporter
      become: true
    - name: clean up
      file:
        state: absent
        path: /opt/prometheus/node_exporter-0.16.0.linux-{{ arch }}.tar.gz
      become: yes
      become_user: prometheus
    - name: setup systemd
      blockinfile:
        dest: /etc/systemd/system/node-exporter.service
        create: yes
        block: |
          [Unit]
          Description=Prometheus Node Exporter
          Requires=network.target
          [Service]
          Restart=always
          WorkingDirectory=/opt/prometheus/node_exporter-0.16.0.linux-{{ arch }}
          ExecStart=/bin/node_exporter
          ExecReload=/bin/kill -HUP $MAINPID
          [Install]
          WantedBy=multi-user.target
      become: true
    - name: enable and start node-exporter
      systemd:
        daemon_reload: yes
        enabled: yes
        state: started
        name: node-exporter.service
      become: true


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