インストール

ここでは、hive-builder のインストールについて説明します。

動作環境

インターネット上の各種リポジトリに http, https でアクセスできる必要があります。 プロキシ経由でのみアクセスできる環境の場合、「プロキシ環境下での構築」を参照して事前準備を行ってください。

mother マシンの OS は、CentOS, Windows Subsystem for Linux, Mac OS, Ubuntu などの環境で以下を満たしている必要があります。

  • openssl コマンドが利用できること

  • pip が利用できること

  • python 3.6 以上が利用できること

  • git コマンドが利用できること

  • docker コマンドが利用できること

各OSごとにインストールの手順を示します。

Centos 7 の場合

注釈

現在サポートしているのは CentOS 7/8 です。CentOS 6 は未サポートです。

docker コマンド, python3 のインストール

以下のコマンドを root ユーザで実行して docker-client, python3 をインストールしてください。 (libselinux が必要かどうかは未)

yum install -y docker-client python3

vagrant プロバイダを使用する場合

vagrant プロバイダを使用する場合 libvert, qemu-kvm と Vagrant がインストールされている必要があります。 また、 vagrant-disksize プラグインがインストールされている必要があります。

vagrant のインストール

以下のコマンドを root ユーザで実行して vagrant をインストールしてください。

yum install qemu-kvm qemu-img libvirt virt-install git libvirt-devel gcc
systemctl enable --now libvirtd
yum install https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.rpm
sh -c 'echo echo 5.2.30r130521 > /usr/bin/VBoxManage'
chmod +x /usr/bin/VBoxManage

注釈

最後の2行は vagrant up で「Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.」の エラーが出る場合に必要となる回避策です。Vagrant のバージョンによっては不要になる可能性があります。

注釈

2行目で「ファイルが開けません: https://releases.hashicorp.com/vagrant/2.2.10/vagrant_2.2.10_x86_64.rpm を飛ばします。」というエラーが 出る場合は、yum update nss curl コマンドを実行して、 nss と curl をアップデートしてください。

仮想環境の構築

構築を実行するユーザで以下のコマンドを実行して仮想環境を構築してください。

vagrant plugin install vagrant-libvirt
vagrant plugin install vagrant-disksize
vagrant box add centos/8 --provider=libvirt
python3 -m venv hive
echo . ~/hive/bin/activate >> .bashrc
. ~/hive/bin/activate
pip install --upgrade pip
pip install hive-builder
sudo usermod --append --groups libvirt `whoami`

注釈

vagrant plugin installで「usr/bin/ld: 認識できないオプション '--compress-debug-sections=zlib' です」というエラーが 出る場合は、以下のコマンドを実行して、vagrant にパッチをあててください。

sudo sed -i -e 's/-Wl,--compress-debug-sections=zlib //' /opt/vagrant/embedded/lib/ruby/2.6.0/x86_64-linux/rbconfig.rb

Centos 8 の場合

vagrant プロバイダを使用する場合

vagrant プロバイダを使用する場合 libvert, qemu-kvm と Vagrant がインストールされている必要があります。 また、 vagrant-disksize プラグインがインストールされている必要があります。

vagrant のインストール

以下のコマンドを root ユーザで実行して vagrant をインストールしてください。

yum install -y --enablerepo=powertools dnsmasq qemu-kvm qemu-img git gcc ruby ruby-devel cmake libcmocka-devel \
  libcmocka wget make gcc-c++ rpcgen python3-docutils ninja-build glib2-devel gnutls-devel \
  libxslt-devel libtirpc-devel yajl-devel byacc
python3 -m venv ~/meson
source ~/meson/bin/activate
pip install meson
wget https://github.com/libvirt/libvirt/archive/v6.10.0.tar.gz
wget https://gitlab.com/keycodemap/keycodemapdb/-/archive/master/keycodemapdb-master.tar.gz
tar xzf v6.10.0.tar.gz
tar xzf keycodemapdb-master.tar.gz
ln -s  ~/keycodemapdb-master/* libvirt-6.10.0/src/keycodemapdb/
cd libvirt-6.10.0/
groupadd libvirt
chgrp -R libvirt /var/log/libvirt
sed -i -e "s/^SELINUX=enforcing$/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
meson --prefix=/usr --localstatedir=/var --sharedstatedir=/var/lib -D driver_qemu=enabled build
ninja -C build
ninja -C build install
systemctl enable virtnetworkd libvirtd virtqemud virtstoraged
dnf install -y https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.rpm
cd /tmp; wget https://vault.centos.org/8.3.2011/BaseOS/Source/SPackages/krb5-1.18.2-5.el8.src.rpm
rpm2cpio krb5-1.18.2-5.el8.src.rpm | cpio -imdV
tar xf krb5-1.18.2.tar.gz
cd krb5-1.18.2/src
LDFLAGS='-L/opt/vagrant/embedded/' ./configure
make
cp lib/libk5crypto.so.3.1 /opt/vagrant/embedded/lib64/
ln -s libk5crypto.so.3.1 /opt/vagrant/embedded/lib64/libk5crypto.so.3
ln -s libk5crypto.so.3.1 /opt/vagrant/embedded/lib64/libk5crypto.so
cd /tmp; wget https://vault.centos.org/8.3.2011/BaseOS/Source/SPackages/libssh-0.9.4-2.el8.src.rpm
rpm2cpio libssh-0.9.4-2.el8.src.rpm | cpio -imdV
tar xf libssh-0.9.4.tar.xz
cd libssh-0.9.4
mkdir build; cd build
cmake -DOPENSSL_ROOT_DIR=/opt/vagrant/embedded/ ..
make
cp lib/libssh.so.4.8.5 /opt/vagrant/embedded/lib64/
ln -s libssh.so.4.8.5 /opt/vagrant/embedded/lib64/libssh.so.4
ln -s libssh.so.4 /opt/vagrant/embedded/lib64/libssh.so
sh -c 'echo echo 5.2.30r130521 > /usr/bin/VBoxManage'
chmod +x /usr/bin/VBoxManage

注釈

CentOS Stream release 8 で vagrant 2.2.14 を安定して動作させるためには libvirt, libk5crypto, libssh をソースコードからビルドして インストールする必要があります。libvirt-6.0.0-29 では、vagrant up 時に Waiting for domain to get an IP address... のメッセージの後、ストールする場合がありました。また、 vagrant に付属のlibcrypto.so は CentOS 8 のものと 互換性がなく「symbol EVP_KDF_ctrl version OPENSSL_1_1_1b not defined in file libcrypto.so.1.1 」というエラーが libk5cryptoとlibsshのロード時に発生しました。この手順は将来のバージョンで必要なくなる可能性があります。

注釈

最後の2行は vagrant up で「Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.」の エラーが出る場合に必要となる回避策です。Vagrant のバージョンによっては不要になる可能性があります。

vagrant プラグインのロード

構築を実行するユーザで以下のコマンドを実行してvagrantのプラグインをロードしてください。

sudo usermod --append --groups libvirt `whoami`
vagrant plugin install vagrant-libvirt vagrant-disksize
vagrant box add centos/8 --provider=libvirt
# stream-8 を使う場合
# vagrant box add centos/8 https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-Vagrant-8-20200113.0.x86_64.vagrant-libvirt.box

docker コマンドのインストール

以下のコマンドを root ユーザで実行して docker-ce-cli をインストールしてください。

yum config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y  docker-ce-cli

注釈

prepared プロバイダを使用し、その対象サーバ内に mother 環境を作成する場合は、 docker コマンドをインストールする必要はありません。 逆に CentOS 標準の docker-client パッケージがインストールされていると、 hive-builder がインストールする docker-ce と競合して構築に失敗しますので、注意してください。

仮想環境の作成例

hive-builder をインストールするための仮想環境 Python3 の venv モジュールを用いて作成する場合のコマンド例を示します。 仮想環境の作成は pyenv, conda, pipenv など、他のツールを用いることもできますし、 もともと hive-builder 専用に用意されたOSであれば、仮想環境を作成せずに利用しても良いでしょう。

cd ~
python3 -m venv hive --system-site-packages
echo source ~/hive/bin/activate >> .bashrc
source ~/hive/bin/activate
pip install -U pip wheel selinux

hive-builder のインストール

以下のコマンドでインストールしてください。

pip install hive_builder

インストールがエラーになる場合は、 pip install -U pip wheel で pip と wheel を最新バージョンにアップデートしてみてください。

Windows Subsystem for Linuxの場合

python3, docker, sshpass コマンドのインストール

以下のコマンドを root で実行して python3, docker, sshpass をインストールしてください。

apt-get update
apt-get install python3 docker sshpass
apt docker.io

仮想環境と hive-builder のインストール

仮想環境と hive-builder のインストールについては、Cent OS の場合と同じです。 そちら を参照してください。

ssh鍵のmode の問題

ansible でサーバへのログインに使用する ssh 鍵のファイルについて、 owner は自分で modeは 0400 となっていて、他人から参照できない状態である必要があります。 Windows 10 WSL 環境で /mnt/c/Users/lucy のように Windows から見えるディレクトリに hive のルートディレクトリを作成すると、ssh 鍵の mode が 0777 となってしまい、 ssh ログイン時にエラーになります。その場合、 context_dir を ~/hive-context などに設定することで回避できます。 以下のコマンドを実行してください。

mkdir -p ~/.hive/private
hive set context_dir ~/.hive/private

この操作はステージごとに必要であり、context_dir はステージごとに異なる 必要があります。

vagrant プロバイダを使用する場合

vagrant プロバイダを使用する場合 VirtualBox と Vagrant がインストールされている必要があります。 また、 vagrant-disksize プラグインがインストールされている必要があります。

(詳細未)

Mac OS の場合

docker コマンドのインストール

インストールの手順は以下のページに従ってください。 https://docs.docker.com/docker-for-mac/install/ インストール後、一度は docker アプリケーションを起動しないと docker コマンドがインストールされません。 デスクトップからdocker アプリケーションを起動して、docker コマンドが使えるようになったことを確認した後、 ステータスバーの docker のアイコンをクリックして docker を終了しても構いません。 hive-builder は docker コマンドを必要としますが、端末のdocker デーモンにアクセスしません。 docker desktop for mac は VM を起動しますので、リソースを消費します。 他に docker を必要とすることがなければ、落としておいてください。

仮想環境と hive-builder のインストール

仮想環境と hive-builder のインストールについては、Cent OS の場合と同じです。 そちら を参照してください。

vagrant プロバイダを使用する場合

vagrant プロバイダを使用する場合 VirtualBox と Vagrant がインストールされている必要があります。 また、 vagrant-disksize プラグインがインストールされている必要があります。

(詳細未)

raspbian へのインストール

raspberry pi にインストールする場合は、OSに raspbian を利用し、以下の手順で必要なソフトウェアをインストールしてください。

apt-get update
apt-get upgrade
curl -sSL https://get.docker.com | sh
usermod -aG docker pi
apt-get install build-essential libssl-dev libffi-dev python3-dev subversion python3-venv subversion xorriso

仮想環境と hive-builder のインストール

仮想環境と hive-builder のインストールについては、Cent OS の場合と同じです。 そちら を参照してください。