VirtualBox上のcoreOSにdocekerを立ててzabbixを入れる

■ 参考サイト
https://server-network-info.blogspot.com/2017/08/15docker-zabbix-server-34.html
https://usado.jp/spdsk/2018/03/19/post-3450/

virtualboxにcoreOSをインストールする準備
ダウンロードサイト
https://coreos.com/os/docs/latest/booting-with-iso.html

② coreOSのための仮想サーバを作成
1 VirtualBoxマネージャで[新規]アイコンをクリック
2 仮想マシンの作成ダイアログの[名前]、[タイプ]、[バージョン]を入力して[次へ]をクリック
[名前]任意の名前を入力
[タイプ]Linux
[バージョン] Oracle(64-bit)
3 [メモリサイズ]を設定して[次へ]をクリック
今回は4096MBに設定
4 [仮想ハードディスクを作成する]をチェックして[作成]をクリック
5 [VDI(VirtualBox Disk Image]をチェックして[次へ]をクリック
6 [可変サイズ]をチェックして[次へ]をクリック
7 [サイズ]を設定して[作成]をクリック
今回は20GBに設定

③ 仮想サーバのネットワーク設定
画像のように設定
f:id:Saw84:20181127142216p:plain
f:id:Saw84:20181127142225p:plain

④ 仮想サーバのディスク設定
ストレージーストレージデバイス「空」を選択。①ダウンロードサイトで入手したisoイメージを「光学ドライブ」から選択し「OK」を押下する
f:id:Saw84:20181127142254p:plain

⑤ 起動する


■ ユーザcoreにパスワードを設定し、sshで接続できるようにする
① ユーザ一覧を表示する
$ cat /etc/passwd
ユーザ「core」がいることを確認
② ユーザ「core」のパスワードを設定する
$ sudo passwd core
③ ついでにrootのパスワードも設定する
$ sudo passwd root
④ opensslの暗号化パスワードを記載したcloud-config.ymlを作成
ユーザはcoreのまま
(作業ディレクトリは/home/core)
$ openssl passwd -1 > cloud-config.yml
ssh-keygenでssh-authorized-keys用のキーを作成してcloud-config.ymlに貼り付け
$ ssh-keygen -t rsa
→ Enter file in which to save the key(/home/core/.ssh/id_rsa): /home/core/.ssh/id_rsa
パスワードは任意の文字列を入力
$ cat ~/.ssh/id_rsa.pub >> ./cloud-config.yml
⑥ cloud-config.ymlを編集

#cloud-config		
users:		
- name: core		
passwd: 1行目に書かれていた文字列		
groups:		
- sudo		
- docker		
ssh-authorized-keys:		
- "ssh-rsa 生成されていた文字列"		

yml記法は表記が厳格なので要注意
以下のコマンドでバリデーションチェックできる
coreos-cloudinit -validate="true" -from-file="/home/core/cloud-config.yml"
⑦ CoreOSをインストール
$ sudo coreos-install -d /dev/sda -C stable -c cloud-config.yml
⑧ 一度サーバをシャットダウンし、ディスク割り当てを除去する
f:id:Saw84:20181127142718p:plain

⑨ 起動し、ネットワーク設定を行う
Gatewayを確認する
$ route -n
→ enp0s3のGatewayをメモしておく

IPを固定する。この時Gatewayはenp0s3のものを設定する
$ sudo vi /etc/systemd/network/static.network

[Match]
Name=enp0s8

[Network]
Address=192.168.56.106
Gateway=10.0.2.1
DNS=8.8.8.8

$ sudo systemctl restart systemd-networkd
$ ip a
設定したIPアドレスが反映されているか確認する
⑩ coreosのアップデート
$ sudo update_engine_client -update
TeraTerm等からsshで接続する


■ coreOS上にDockerを立てる
参考サイト
https://qiita.com/japboy/items/ca00baeaf0acada31235
http://tasuten.hatenablog.com/entry/2014/10/07/233344
pingで疎通を確認する
# ping 8.8.8.8
② Docker Hubでアカウントを作成する
https://hub.docker.com/
③ Dockerイメージの取得
Docker Hubへログインする
# docker login
→ IDとPasswordを入力する


■ zabbix4.0をdockerで動かす
参考サイト
https://qiita.com/zembutsu/items/32f27fa8136b86620baf
https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql/
http://docs.docker.jp/engine/reference/run.html
https://qiita.com/picapica/items/cb84d6f23504ee2c7d06
docker stop $(docker ps -a -q)
docker rm $(docker ps -aq)
① docker上にmysqlコンテナを立てる
# docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="任意のPW" -e MYSQL_ROOT_PASSWORD="任意のPW" -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin
② docker上にjava-gatewayコンテナを立てる
# docker run --name zabbix-java-gateway -t -d zabbix/zabbix-java-gateway:latest
③ zabbix-server-mysqlコンテナを立てる
# docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="①のPW" \
-e MYSQL_ROOT_PASSWORD="①のPW" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest
④ zabbix-web-nginx-mysqlコンテナを立てる
# docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="①のPW" \
-e MYSQL_ROOT_PASSWORD="①のPW" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql:latest