2017年10月5日木曜日

VagrantでRancherをインストールした仮想マシン(CentOS7.4)を構築する

以下のVagrantfileを使用して、Rancherがインストールされた仮想マシンを構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.4"
  config.vm.hostname = "co74rancher"
  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 = "co74rancher"
    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

mkdir -p /opt/rancher/mysql

docker swarm init --advertise-addr 192.168.55.115  | grep -e '--token' | sed -e 's/    //' - > /vagrant/joincmd.sh

docker run -d -v /opt/rancher/mysql:/var/lib/mysql --restart=unless-stopped -p 8080:8080 rancher/server

SHELL
end

仮想マシンを構築後、以下の初期設定を行います。


1.ブラウザでhttp://192.168.55.115:8080/にアクセスして、Add a hostをクリック


2.Saveをクリック


3.下へスクロール


4.ホストを登録するのに5番に表示されたコマンドを、SSHなどでサーバにログオンして実行。


5.ADMINメニューをクリック


6.ローカル認証を選択


7.ユーザ名、パスワードを入力して、「Enable Local Auth」を選択


8.セキュリティ有効後は、上記のようなログイン画面が表示される

○関連情報
Vagrantでshipyardがインストールされた仮想マシンを構築する

2017年10月4日水曜日

Vagrantでmosquittoがインストールされた仮想マシン(bento/ubuntu-16.04ベース)を構築する

mosquittoがインストールされたubuntu16.04ベースの仮想マシンを構築するには以下のVagrantfileを使用します。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604mosquitto"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604mosquitto"
     vbox.cpus = 2
     vbox.memory = 1024
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
  config.vm.network "public_network", ip:"192.168.1.101", :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

apt-get -y install mosquitto mosquitto-clients

# execute commands for test.
mosquitto_sub -t mytopic/test -h ub1604mosquitto >> /tmp/sample.txt 2>&1 &
sleep 10
mosquitto_pub -t mytopic/test -h ub1604mosquitto -m "test message."
sleep 10
cat /tmp/sample.txt
SHELL
end
・関連情報
Vagrantでmosquittoがインストールされた仮想マシン(bento/centos-7.4ベース)を構築する

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

2017年10月3日火曜日

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

以下のVagrantfileを使用してshipyardとDocker CEがインストールされた仮想マシンを構築できます。
仮想マシンを構築後、http://192.168.55.112:8080/にユーザadmin、パスワードshipyardでアクセスします。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.4"
  config.vm.hostname = "co74shipyard"
  config.vm.network :public_network, ip:"192.168.1.112"
  config.vm.network "private_network", ip: "192.168.55.112", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
    vbox.name = "co74shipyard"
    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
curl -sSL https://shipyard-project.com/deploy | bash -s
SHELL
end
shipyardのログイン画面

shipyardのコンテナ一覧画面

2017年10月2日月曜日

VagrantでGIMPとKrita、XRDPがインストールされたGNOMEデスクトップ環境(CentOS7.4)を構築する

以下のVagrantfileを使用して、GIMPとKrita、XRDPがインストールされた仮想マシンを構築できます。
仮想マシンにはユーザvagrant、パスワードvagrantでログインできます。
アプリケーション->グラフィックスメニューからGIMPまたはKritaを起動します。
仮想マシンが構築された後、Windowsのリモートデスクトップから192.168.1.112を指定して接続できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.4"
  config.vm.hostname = "co74gimp-krita"
  config.vm.network :public_network, ip:"192.168.1.112"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "co74gimp-krita"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
yum -y install wget

# GUIに関連するパッケージをインストール
sudo yum -y groupinstall "Server with GUI"
# 不要なダイアログを表示されないようにする
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-welcome-tour.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-software-service.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-settings-daemon.desktop"
sudo systemctl disable initial-setup-graphical.service
sudo systemctl disable initial-setup-text.service

sudo systemctl set-default graphical.target

# 日本語のロケールを設定
sudo yum -y install ibus-kkc vlgothic-*
localectl set-locale LANG=ja_JP.UTF-8

# XRDPをインストールして、リモートデスクトップでログインできるようにする。
sudo yum -y install epel-release
sudo yum -y install xrdp
sudo yum -y install tigervnc-server

sudo chcon -t bin_t /usr/sbin/xrdp
sudo chcon -t bin_t /usr/sbin/xrdp-sesman
sudo sed -i "s/max_bpp=32/max_bpp=24/" /etc/xrdp/xrdp.ini
systemctl start xrdp.service
systemctl enable xrdp.service

# gimpのインストール
yum install -y aalib aalib-devel libexif-devel libjpeg-devel libpng-devel gimp
im-config -n fcitx

# kritaのインストール
yum -y install calligra-krita


echo '日本語入力:アプリケーション->システムツール->設定メニューを選択後、Region & Languageをクリック、入力ソースで+をクリック、日本語(かな漢字)を追加する'
telinit 5
SHELL

end

GIMPのスクリーンショット

Kritaのスクリーンショット


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

2017年10月1日日曜日

VagrantでUbuntu17.04とMATEデスクトップ環境、XRDPがインストールされた仮想マシンを構築する

以下のVagrantfileを使用して、Ubuntu17.04、MATEデスクトップ環境、XRDPがインストールされた仮想マシンを構築できます。
仮想マシンが構築された後、Windowsのリモートデスクトップから192.168.1.111を指定して接続できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-17.04"
  config.vm.hostname = "ub1704xrdp"
  config.vm.network :public_network, ip:"192.168.1.111"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1704xrdp"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
localectl set-locale LANG=ja_JP.UTF-8
apt-get update
apt-get -y install xrdp mate-core mate-desktop-environment mate-notification-daemon fcitx-mozc fcitx-anthy
im-config -n fcitx

SHELL
end

リモートデスクトップでのログイン画面

ログイン後のデスクトップ画面

2017年9月30日土曜日

Dockerでphppgadminがインストールされたイメージを作成する

以下のDockerfileでphppgadminがインストールされたイメージを作成できます。
コンテナを実行後、http://サーバー/phppgadmin/にアクセスします。

Dockerfile
FROM alpine:3.6
ARG DB_HOST=localhost
WORKDIR /
RUN  apk update \
  && apk add --nocache apache2 php7-apache2 php7-pgsql php7-mbstring php7-session openssl openrc \
  && wget https://downloads.sourceforge.net/project/phppgadmin/phpPgAdmin%20%5Bstable%5D/phpPgAdmin-5.1/phpPgAdmin-5.1.tar.gz \
  && tar xvfz phpPgAdmin-5.1.tar.gz  \
  && mkdir /opt \
  && mv /phpPgAdmin-5.1 /opt/phppgadmin \
  && mkdir -p /run/apache2 \
  && { \
  echo ''; \
  echo '  Order allow,deny'; \
  echo '  Allow from all'; \
  echo ''; \
  } >> /etc/apache2/httpd.conf \
  && ln -s /opt/phppgadmin /var/www/localhost/htdocs \
  && sed -i -e "s/extra_login_security.*true;/extra_login_security\\'\\] = false;/" /opt/phppgadmin/conf/config.inc.php \
  && sed -i -e "s/conf\\['servers'\\]\\[0\\]\\['host'\\] = ''/conf['servers'][0]['host'] = '${DB_HOST}'/" /opt/phppgadmin/conf/config.inc.php

EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

○イメージのビルド
接続先のPostgreSQLは引数で指定します。
docker build --build-arg DB_HOST= -t httpd24phppgadmin .

例:
docker build --build-arg DB_HOST=192.168.1.110 -t httpd24phppgadmin .


○コンテナの実行
docker run --rm -dit -p 80:80 httpd24phppgadmin


○コンテナの停止
docker ps -a
docker stop 停止したいコンテナのID


○phppgadminのスクリーンショット


○関連情報
VagrantでPostgreSQLとphpPgAdminがインストールされた仮想マシンを構築する

VagrantでRabbitMQとManagement Web interface、Anaconda、pikaがインストールされた仮想マシン(Ubuntu16.04)を構築する

以下のVagrantfileを使用してRabbitMQ、Management Web interface、Anaconda、pikaがインストールされた仮想マシンを構築できます。
仮想マシンの構築と同時にpikaを使用したメッセージを送信(put-helloworld.py)・受信(get-helloworld.py)を行うサンプルも実行します。
Management Web interfaceには、http://192.168.55.102:15672/にユーザ名rabbitmq、パスワードrabbitmqでアクセスします。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604rabbitmq"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604rabbitmq"
     vbox.cpus = 2
     vbox.memory = 1024
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.network "private_network", ip: "192.168.55.102", :netmask => "255.255.255.0"
  config.vm.network "public_network", ip:"192.168.1.102", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
echo 'deb http://www.rabbitmq.com/debian/ testing main' | tee /etc/apt/sources.list.d/rabbitmq.list
DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install rabbitmq-server

rabbitmq-plugins enable rabbitmq_management
systemctl enable rabbitmq-server
systemctl restart rabbitmq-server

# setup management web interface
rabbitmqctl add_user rabbitmq rabbitmq
rabbitmqctl set_user_tags rabbitmq administrator
rabbitmqctl set_permissions -p / rabbitmq ".*" ".*" ".*"

# install anaconda & pika
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 pika

# execute a sample program to put a message.
cat << EOF > put-helloworld.py
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
  routing_key='hello',
  body='Hello World!')
print(" put 'Hello World!'")
EOF
python put-helloworld.py

# exeucte a sample program to get a message
cat << EOF > get-helloworld.py
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
method_frame, header_frame, body = channel.basic_get('hello')
if method_frame:
  print(method_frame, header_frame, body)
  channel.basic_ack(method_frame.delivery_tag)
else:
  print('no message')
EOF
python get-helloworld.py

echo 'management web interface : http://192.168.55.102:15672/';
echo 'user : rabbitmq     password rabbitmq'
SHELL
end

Management Web Interfaceのログイン画面

Management Web Interfaceのログオン後の画面


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