読者です 読者をやめる 読者になる 読者になる

Windows10のHyper-Vを使ったVagrantのBoxファイル作成方法

前準備

Hyper-VでBox化するOSを起動しセットアップ

  • Hyper-V上でOS(ここではCentOS7 Minimal)を起動しセットアップする。
  • その際、最低限、root権限で以下の設定を行う。
    • SE LinuxおよびFirewallをOFFにする。
      % setenforce 0
      % systemctl stop firewalld.service
      % systemctl disable firewalld.service

    • さらに、/etc/sysconfig/selinuxを編集して、
       SELINUX=disable
       SELINUXTYPE=targeted
      に設定する。

    • 以下のPackageをinstallする。
      % yum -y install openssh-clients hyperv-daemons hypervkvpd
      % systemctl enable hypervkvpd.service

    • sudoersを編集する。
      % sed --in-place --expression='s/^Defaults\s*requiretty/# &/' /etc/sudoers
      % echo "vagrant ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/vagrant

    • rootのパスワードをvagrantにする。

    • vagrantのアカウントを作成する。
      % useradd --user-group --create-home /home/vagrant
      % echo "vagrant:vagrant" | chpasswd

    • SSH公開鍵認証を取得する。
      % mkdir -m 0700 -p "/home/vagrant/.ssh"
      % curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub >> "/home/vagrant/.ssh/authorized_keys"
      % chmod 600 "/home/vagrant/.ssh/authorized_keys"
      % chown -R "vagrant:vagrant" "/home/vagrant/.ssh"

    • ネットワークインタフェースにDHCPを設定する。
      % cat < /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE="eth0"
      TYPE="Ethernet"
      BOOTPROTO="dhcp"
      ONBOOT="yes"
      IPV6INIT="yes"
      IPV6_AUTOCONF="yes"
      NM_CONTROLLED="no"
      EOF

    • キャッシュファイルおよび履歴を削除する。
      % yum clean all
      % rm -rf /tmp/*
      % rm -f /var/log/wtmp /var/log/btmp
      % history -c

    • 未使用領域をゼロフィルする。
      % dd if=/dev/zero of=/EMPTY bs=1M
      % rm -f /EMPTY
      % sync

    • シャットダウンする。
      % poweroff

Boxファイルを作成

  • 仮想マシンをエクスポートする。

  • Boxファイルを作成する。

    • Git Bashを起動し、仮想マシンがエクスポートされたディレクトリに移動する。
      エクスポートされた以下のディレクトリ構成のうちSnapshotsを削除する。
      1.Snapshos
      2.Virtual Hard Disks
      3.Virtual Machines
    • metadata.jsonファイルを作成する。
      % cat > matadata.json <<EOF
      {
      "name": "xxxyyyzzz/centos-7.0-x86_64-minimal-hyperv",`
      "provider": "hyperv"
      }
      EOF

    • 出来たファイルをtar+gz形式でまとめてBoxファイルを作成する。
      % tar czvf my-VAGRANTSLASH-CentOS7.box *

rbenvを使ったjrubyのインストール

Oracle Javaのインストール

export JDK_VERSION=8u121
export JDK_BUILD_NO=b13
export JDK_DIRHASH=e9e7ea248e2c4826b92b3f075a80e441
export JDK_RPM=jdk-${JDK_VERSION}-linux-x64.rpm
sudo yum install -y wget
sudo wget -q --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/${JDK_VERSION}-${JDK_BUILD_NO}/${JDK_DIRHASH}/${JDK_RPM}
sudo rpm -ivh ${JDK_RPM}
sudo update-alternatives --config java
sudo cat <<EOF | sudo tee /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/default
export JRE_HOME=/usr/java/default/jre
EOF
sudo chmod 644 /etc/profile.d/java.sh
source /etc/profile

jrubyのインストール

sudo yum -y install gcc-c++
sudo rbenv install jruby-9.1.7.0

環境の切替

sudo rbenv local 2.4.0
ruby -v
sudo rbenv local jruby-9.1.7.0
ruby -v

rbenvを使ったrubyのインストール

事前準備

sudo yum -y install bzip2 git gcc
sudo yum -y install openssl-devel readline-devel zlib-devel

rbenvおよびpluginインストール

sudo git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv
sudo git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build
sudo git clone https://github.com/sstephenson/rbenv-default-gems.git /usr/local/rbenv/plugins/rbenv-default-gems
sudo git clone https://github.com/rkh/rbenv-update.git ~/.rbenv/plugins/rbenv-update
chgrp -R root /usr/local/rbenv
chmod -R u+Xs /usr/local/rbenv
chmod -R +X /usr/local/rbenv

/etc/sudoersを編集する。

sudo cat <<EOF | sudo tee /etc/sudoers.d/rbenv
Defaults    env_keep += "RBENV_ROOT"
EOF
sudo chmod 644 /etc/sudoers.d/rbenv
sudo sed --in-place 's|.*Default.*secure_path.*|Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims|g' /etc/sudoers

rbenv の使用準備

sudo rbenv init -

全ユーザの環境設定

sudo cat <<EOF | sudo tee /etc/profile.d/rbenv.sh
export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init --no-rehash -)"
EOF
sudo chmod 644 /etc/profile.d/rbenv.sh
source /etc/profile

gemのinstall

sudo yum -y install rubygems
sudo apt-get -y install rubygems
sudo cat <<EOF | sudo tee /usr/local/rbenv/default-gems
json_pure
bundler
pry
rbenv-rehash
EOF
sudo chmod 644 /usr/local/rbenv/default-gems

rubyのインストール

rbenv install --list
sudo rbenv install 2.4.0

システムのRubyを設定

sudo rbenv global 2.4.0

gemのupdate

sudo gem update --system

gemの環境確認

gem env

シェルスクリプトで上記全てを実行する場合

echo "### preparation before installation"
sudo yum -y install bzip2 git gcc
sudo yum -y install openssl-devel readline-devel zlib-devel

echo "### install rbenv from git"
sudo git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv
sudo git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build
sudo git clone https://github.com/sstephenson/rbenv-default-gems.git /usr/local/rbenv/plugins/rbenv-default-gems
sudo git clone https://github.com/rkh/rbenv-update.git ~/.rbenv/plugins/rbenv-update

echo "### create rbenv configuraiton"
sudo chgrp -R root /usr/local/rbenv
sudo chmod -R u+Xs /usr/local/rbenv
sudo chmod -R +X /usr/local/rbenv
sudo cat <<EOF | sudo tee /etc/sudoers.d/rbenv
Defaults    env_keep += "RBENV_ROOT"
EOF
sudo chmod 644 /etc/sudoers.d/rbenv
sudo sed --in-place 's|.*Default.*secure_path.*|Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims|g' /etc/sudoers
sudo rbenv init -
sudo cat <<EOF | sudo tee /etc/profile.d/rbenv.sh
export RBENV_ROOT=/usr/local/rbenv
export PATH="\$RBENV_ROOT/bin:\$PATH"
eval "\$(rbenv init --no-rehash -)"
EOF
sudo chmod 644 /etc/profile.d/rbenv.sh
source /etc/profile

echo "### install ruby gem environment"
sudo yum -y install rubygems
sudo cat <<EOF | sudo tee /usr/local/rbenv/default-gems
json_pure
bundler
pry
rbenv-rehash
EOF
sudo chmod 644 /usr/local/rbenv/default-gems

echo "### ruby"
rbenv install --list
sudo rbenv install 2.4.0
sudo rbenv global 2.4.0
sudo gem update --system
gem env

Ubuntu 16.04にZabbix 3.2(PostgreSQL)をインストールする。

必要なパッケージをインストールする。

sudo apt-get install apache2
sudo apt-get install php php-gd php-bcmath php-ctype php-xml php-net-socket php-mbstring php-gettext php-gettext php-ldap php-pgsql php-cgi libapache2-mod-php
sudo apt-get install postgresql postgresql-contrib
sudo apt-get install snmp
wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
sudo apt-get update
sudo apt-get install zabbix-agent zabbix-server-pgsql zabbix-frontend-php

PostgreSQLの設定をする。

sudo cp /etc/postgresql/9.5/main/pg_hba.conf{,.orig}
sudo cat <<EOF | sudo tee /etc/postgresql/9.5/main/pg_hba.conf
local all postgres peer
local all all md5
host  all all 127.0.0.1/32 md5
host  all all ::1/128 md5
host  all postgres 0.0.0.0/0 reject
host  all all 0.0.0.0/0 md5
EOF

sudo chmod 644 /etc/postgresql/9.5/main/pg_hba.conf
sudo service postgresql restart
sudo service postgresql status
sudo su - postgres -c 'createdb zabbix'
sudo su - postgres -c 'createuser -P -S -R -D zabbix'
Enter password for new role: zabbix
Enter it again: zabbix
sudo su - postgres
zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz | psql -U zabbix zabbix
Password for user zabbix: zabbix
exit

Zabbixの設定をする。

/etc/zabbix/zabbix_server.confの内容を編集する。

sudo vi /etc/zabbix/zabbix_server.conf

DBHost=
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

Zabbixを起動する。

sudo service zabbix-agent restart
sudo service zabbix-agent status
sudo service zabbix-server restart
sudo service zabbix-server status
sudo cat /var/log/zabbix/zabbix_server.log

Apache2の設定をする。

/etc/zabbix/apache.confの内容を編集する。

sudo vi /etc/zabbix/apache.conf

    <IfModule mod_php7.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value always_populate_raw_post_data -1
-       # php_value date.timezone Europe/Riga
+       php_value date.timezone Asia/Tokyo
    </IfModule>

sudo service apache2 restart

Zabbixへログインし初期設定をする。

  1. ブラウザで "http://(IP_Address)/zabbix/" アクセスする。
  2. ユーザー名Admin、パスワードzabbixを入力して、Zabbixのスーパーユーザーとしてログインする。
  3. Welcome画面が表示されたら、Next stepボタンを押す。
  4. Check for pre-requisities画面で全てOKであることを確認し、Next stepボタンを押す。
  5. Configure DB Connection画面でDatabase name、User、Passwordを全て zabbix に変更する。
  6. 後はインストール完了までNext stepボタンを押す。

Configure DB Connection画面でエラーとなる場合。

Configure DB Connection画面でエラーとなる場合は、以下の手順で直接ファイルを生成する。

sudo su -
cat <<EOF >/etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'POSTGRESQL';
$DB['SERVER']   = 'localhost';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
EOF

chmod 644 /etc/zabbix/web/zabbix.conf.php
chown www-data.www-data /etc/zabbix/web/zabbix.conf.php
exit