2017年9月15日金曜日

CouchDBをインストールした仮想マシン(CentOS7.3)を構築する

CouchDBをインストールした仮想マシンを構築するには以下のVagrantfileを使用します。

Vagrantfile

VVAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.3"
  config.vm.hostname = "couchdb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "couchdb"
     vbox.cpus = 4
     vbox.memory = 4096 
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  # private network
  config.vm.network "private_network", ip: "192.168.55.109", :netmask => "255.255.255.0"
  # bridge netwrok
  config.vm.network "public_network", ip: "192.168.1.109", :netmask => "255.255.255.0"
  config.vm.network "forwarded_port", guest:22, host:20022, id:"ssh"
  config.vm.provision "shell", inline: <<-SHELL

cat << EOF > /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo
[bintray--apache-couchdb-rpm]
name=bintray--apache-couchdb-rpm
baseurl=http://apache.bintray.com/couchdb-rpm/el7/x86_64/
gpgcheck=0
repo_gpgcheck=0
enabled=1
EOF
yum -y install epel-release 
yum -y install couchdb
sed -i -e 's/bind_address = 127.0.0.1/bind_address = 0.0.0.0/' /opt/couchdb/etc/default.ini

cat << EOF > /etc/systemd/system/couchdb
[Unit]
Description=CouchDB
After=syslog.target
After=network.target

[Service]
User=couchdb
Type=simple
ExecStart=/opt/couchdb/bin/couchdb
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=couchdb

[Install] WantedBy=multi-user.target 
EOF

systemctl enable couchdb
systemctl start couchdb
echo 'access : http://192.168.55.109:5984/_utils/index.html'
SHELL
end
構築完了後、ブラウザでhttp://192.168.55.109:5984/_utils/index.htmlにアクセスすると、以下のような画面が表示されます。


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

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

以下のVagrantfiledjangocmsがインストールされた可能マシンを構築します。
仮想マシン構築後、http://192.168.55.109:8000/にアクセスしユーザ名admin、パスワードadminでログインします。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.3"
  config.vm.hostname = "djangocms"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "djangocms"
     vbox.cpus = 4
     vbox.memory = 4096 
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  # private network
  config.vm.network "private_network", ip: "192.168.55.109", :netmask => "255.255.255.0"
  # bridge netwrok
  config.vm.network "public_network", ip: "192.168.1.109", :netmask => "255.255.255.0"
  config.vm.network "forwarded_port", guest:22, host:20022, id:"ssh"
  config.vm.provision "shell", inline: <<-SHELL

wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh 
chmod +x Anaconda3-4.4.0-Linux-x86_64.sh
./Anaconda3-4.4.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install djangocms-installer

mkdir ~/myproject
cd ~/myproject
djangocms -f --languages ja -p . mysite
echo 'ALLOWED_HOSTS = ["*"]' >> /root/myproject/mysite/settings.py
sed -i -e "s/TIME_ZONE = 'UTC'/TIME_ZONE = 'Asia\\/Tokyo'/" /root/myproject/mysite/settings.py
sed -i -e "s/'en'/'ja'/g" /root/myproject/mysite/settings.py

echo '------------------'
useradd py
mv /root/myproject /home/py
chown -R py:py /home/py/myproject

cp /vagrant/djangocms.service /etc/systemd/system
sudo systemctl enable djangocms
sudo systemctl start djangocms

echo 'access : http://192.168.55.109:8000/'
echo 'user/pass : admin/admin'
SHELL
end
djangocms.service

[Unit]
Description=djangocms

[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/python manage.py runserver 192.168.55.109:8000
User=py
Group=py
WorkingDirectory=/home/py/myproject
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

2017年9月10日日曜日

VagrantでDocker Swarmクラスタを構築する

以下のVagrantfileを使用して、3ノードのDocker Swarmクラスタを構築できます。

Dockerfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "dockerswarm1" do |server|
    server.vm.box = "bento/centos-7.3"
    server.vm.hostname = "dockerswarm1"
    server.vm.network :public_network, ip:"192.168.1.190"
    server.vm.network "private_network", ip: "192.168.55.190", :netmask => "255.255.255.0"
    server.vm.provider :virtualbox do |vbox|
      vbox.name = "dockerswarm1"
      vbox.cpus = 2
      vbox.memory = 2048
      vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
    end
    server.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

docker swarm init --advertise-addr 192.168.55.190  | grep -e '--token' | sed -e 's/    //' - > /vagrant/joincmd.sh
chmod +x /vagrant/joincmd.sh

SHELL
  end
  #----------------------------------------------------------------------------------------
  config.vm.define "dockerswarm2" do |server|
    server.vm.box = "bento/centos-7.3"
    server.vm.hostname = "dockerswarm2"
    server.vm.network :public_network, ip:"192.168.1.191"
    server.vm.network "private_network", ip: "192.168.55.191", :netmask => "255.255.255.0"
    server.vm.provider :virtualbox do |vbox|
      vbox.name = "dockerswarm2"
      vbox.cpus = 2
      vbox.memory = 2048
      vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
    end
    server.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
/vagrant/joincmd.sh

SHELL
  end
  #----------------------------------------------------------------------------------------
  config.vm.define "dockerswarm3" do |server|
    server.vm.box = "bento/centos-7.3"
    server.vm.hostname = "dockerswarm3"
    server.vm.network :public_network, ip:"192.168.1.192"
    server.vm.network "private_network", ip: "192.168.55.192", :netmask => "255.255.255.0"
    server.vm.provider :virtualbox do |vbox|
      vbox.name = "dockerswarm3"
      vbox.cpus = 2
      vbox.memory = 2048
      vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
    end
    server.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
/vagrant/joincmd.sh

SHELL
  end
  #----------------------------------------------------------------------------------------

end

2017年9月9日土曜日

Vagrantを使用してJupyter Notebookをインストールした仮想マシン(CentOS7.3)を構築する

Jupyter Notebookがインストールされた仮想マシンを構築するには、以下のVagrantfileを使用します。仮想マシンを構築後、http://192.168.55.109:8080/?token=jupyterでアクセスします。
使用ポートはjupyter_notebook_config.pyのconf.NotebookApp.portで変更することができます。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.3"
  config.vm.hostname = "jupyter"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "jupyter"
     vbox.cpus = 4
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  # private network
  config.vm.network "private_network", ip: "192.168.55.109", :netmask => "255.255.255.0"
  # bridge netwrok
  config.vm.network "public_network", ip: "192.168.1.109", :netmask => "255.255.255.0"
  config.vm.network "forwarded_port", guest:22, host:20022, id:"ssh"
  config.vm.provision "shell", inline: <<-SHELL

wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
chmod +x Anaconda3-4.4.0-Linux-x86_64.sh
./Anaconda3-4.4.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install psycopg2

useradd py
sudo -u py sh -c "mkdir ~/.jupyter"
sudo -u py sh -c "cp /vagrant/jupyter_notebook_config.py ~/.jupyter"

cp /vagrant/jupyter.service /etc/systemd/system
sudo systemctl enable jupyter
sudo systemctl start jupyter

echo 'access -> http://192.168.1.109:8080/?token=jupyter'

SHELL
end
jupyter_notebook_config.py

conf = get_config()

conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
jupyter.service

[Unit]
Description=Jupyter notebook

[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter notebook
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

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

2017年9月5日火曜日

Vagrantでowncloudがインストールされた仮想マシン(ubuntu16.04)を構築する

ownCloudのパッケージ名称が変わり、このVagrantfileでは動作しないのでVagrantでownCloudとPostgreSQLをインストールした仮想マシン(Ubuntu16.04)を構築するを参照してください

以下のVagrantfileでは、データベースにmysqlを使用するように構成されたowncloudをインストールします。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604owncloud"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604owncloud"
     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
# update packages
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

# 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

# install owncloud
wget -nv https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key -O Release.key
apt-key add - < Release.key
sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /' > /etc/apt/sources.list.d/owncloud.list"
apt-get update
apt-get -y install owncloud

cd /var/www/owncloud
sudo -u www-data sh -c "php occ maintenance:install --database mysql --database-name owncloud  --database-user root --database-pass root --admin-user admin --admin-pass admin"
sed -i -e "s/0 => 'localhost'/0 => '192.168.1.108', 1 => '192.168.55.108'/" /var/www/owncloud/config/config.php
sed -i -e "s/\\/\\/localhost/\\/\\/192.168.1.108/" /var/www/owncloud/config/config.php
service apache2 restart

echo 'access http://192.168.55.108/owncloud/'
echo 'user: admin, password: admin'
SHELL
end


my.cnf

[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
default-character-set=utf8

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
bind-address = 0.0.0.0
port            = 3306
key_buffer_size = 256M
max_allowed_packet = 16M
table_open_cache = 16
innodb_buffer_pool_size = 512M
innodb_log_file_size = 32M
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 8M
join_buffer_size = 8M
thread_stack = 4M
character-set-server=utf8
lower_case_table_names = 1
innodb_lock_wait_timeout=120
skip-innodb-doublewrite

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

2017年8月30日水曜日

VagrantでApache Solrがインストールされた仮想マシン(CentOS7.3)を構築する

以下のVagrantfileを使用して、Apache Solrがインストールされた仮想マシン(CentOS7.3)を構築できます。 Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.3"
  config.vm.hostname = "solr"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "solr"
     vbox.cpus = 4
     vbox.memory = 4096 
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  # private network
  config.vm.network "private_network", ip: "192.168.55.75", :netmask => "255.255.255.0"
  # bridge netwrok
  config.vm.network "public_network", ip: "192.168.1.75", :netmask => "255.255.255.0"
  config.vm.network "forwarded_port", guest:22, host:20022, id:"ssh"
  config.vm.provision "shell", inline: <<-SHELL
yum -y install unzip

# havegedのインストール
yum -y install epel-release
yum -y install haveged
systemctl enable haveged.service
systemctl start haveged.service

# install JDK
yum -y install java-1.8.0-openjdk

wget http://ftp.riken.jp/net/apache/lucene/solr/6.6.0/solr-6.6.0.tgz
tar xvfz solr-6.6.0.tgz
./solr-6.6.0/bin/install_solr_service.sh solr-6.6.0.tgz

sudo -u solr /opt/solr/bin/solr create -c mycore
sudo -u solr /opt/solr/bin/post -c mycore /opt/solr/example/exampledocs/*.xml

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

2017年8月29日火曜日

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

mongodbがインストールされた仮想マシンを構築するには、以下のVagrantfileを使用します。このスクリプトでは、mongodbのインストールの他に、管理者であるadminユーザ(パスワードはadmin)と、一般ユーザであるtestユーザ(パスワードはtest)も作成し、testデータベースにproductsコレクションにテストデータを登録します。


Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.3"
  config.vm.hostname = "mongodb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "mongodb"
     vbox.cpus = 4
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  # private network
  config.vm.network "private_network", ip: "192.168.55.74", :netmask => "255.255.255.0"
  # bridge netwrok
  config.vm.network "public_network", ip: "192.168.1.74", :netmask => "255.255.255.0"
  config.vm.network "forwarded_port", guest:22, host:19022, id:"ssh"
  config.vm.provision "shell", inline: <<-SHELL
#yum -y install unzip

cp /vagrant/disable-transparent-hugepages /etc/init.d/
chmod 755 /etc/init.d/disable-transparent-hugepages
chkconfig --add disable-transparent-hugepages
/etc/init.d/disable-transparent-hugepages start

cp /vagrant/mongodb-org-3.4.repo /etc/yum.repos.d/mongodb-org-3.4.repo
sudo yum install -y mongodb-org

mkdir -p /srv/mongodb/
openssl rand -base64 741 > /srv/mongodb/mongodb-keyfile
chmod 600 /srv/mongodb/mongodb-keyfile
chown mongod:mongod /srv/mongodb/mongodb-keyfile
echo 'security:' >> /etc/mongod.conf
echo '  keyFile: /srv/mongodb/mongodb-keyfile' >> /etc/mongod.conf

systemctl enable mongod
systemctl start mongod

# wait until mongod starts listening.
while netstat -lnt | awk '$4 ~ /:27017$/ {exit 1}'; do sleep 10; done

mongo /vagrant/addusers.js
echo '  authorization: enabled' >> /etc/mongod.conf

systemctl restart mongod
while netstat -lnt | awk '$4 ~ /:27017$/ {exit 1}'; do sleep 10; done

# create a test user.
mongo -u "admin" -p "admin" --authenticationDatabase "admin" /vagrant/createst.js

# create sample data
mongo -u "test" -p "test" --authenticationDatabase "test" /vagrant/sample.js

SHELL
end
mongodb-org-3.4.repo

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
disable-transparent-hugepages

#!/bin/bash
### BEGIN INIT INFO
# Provides:          disable-transparent-hugepages
# Required-Start:    $local_fs
# Required-Stop:
# X-Start-Before:    mongod mongodb-mms-automation-agent
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description:       Disable Linux transparent huge pages, to improve
#                    database performance.
### END INIT INFO

case $1 in
  start)
    if [ -d /sys/kernel/mm/transparent_hugepage ]; then
      thp_path=/sys/kernel/mm/transparent_hugepage
    elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
      thp_path=/sys/kernel/mm/redhat_transparent_hugepage
    else
      return 0
    fi

    echo 'never' > ${thp_path}/enabled
    echo 'never' > ${thp_path}/defrag

    re='^[0-1]+$'
    if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]
    then
      # RHEL 7
      echo 0  > ${thp_path}/khugepaged/defrag
    else
      # RHEL 6
      echo 'no' > ${thp_path}/khugepaged/defrag
    fi

    unset re
    unset thp_path
    ;;
esac
addusers.js

var db = db.getSiblingDB('admin');
db.createUser({user:"admin",pwd:"admin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
createtest.js

var db = db.getSiblingDB('test');
db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite",db:"test"}]});
sample.js

var db = db.getSiblingDB('test');
db.products.insert( { item: "chair", qty: 15 } );
db.products.insert( { item: "table", qty: 3 } );
db.products.find();

〇関連情報
・Vagrantでmongo-expressがインストールされた仮想マシン(CentOS7.4)を構築する
http://serverarekore.blogspot.jp/2017/11/vagrantmongo-expresscentos74.html

・VagrantでMongoDBをインストールした仮想マシン(Ubuntu16.04)を構築する
http://serverarekore.blogspot.jp/2017/11/vagrantmongodbubuntu1604.html