2017年3月29日水曜日

VMware 製の docker レジストリ「harbor」を使ってみた

概要

harboar は VMware がオープンソースで開発している docker レジストリです
今回は CentOS 上にインストールし簡単な push まで行ってみました

環境

  • CentOS 7.3.1611
  • harbor 0.5.0
  • docker 17.03
  • docker-compose 1.9.0

事前準備

docker と docker-compose は事前にインストールしておいてください

harbor のインストール

hostname = 192.168.100.101

この IP は作業している CentOS マシンの IP を入力してください
localhost と 127.0.0.1 のローカル用のホスト名、IP では動作しないので注意してください
他にも email や ladp, https などの設定ができるので必要であれば設定してください

  • ./install.sh

でインストールします
一応全ログを記載しておきます

[Step 0]: checking installation environment ...

Note: docker version: 17.03.0

Note: docker-compose version: 1.9.0


[Step 1]: preparing environment ...
generated and saved secret key
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/ui/app.conf
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/app.conf
Generated configuration file: ./common/config/ui/private_key.pem
Generated configuration file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.


[Step 2]: checking existing instance of Harbor ...


[Step 3]: starting Harbor ...
Creating network "harbor_default" with the default driver
Pulling log (vmware/harbor-log:0.5.0)...
0.5.0: Pulling from vmware/harbor-log
93b3dcee11d6: Pull complete
5c14e4bdfb0b: Pull complete
e4dee8a574ca: Pull complete
64897311fadc: Pull complete
9b18f82d0181: Pull complete
Digest: sha256:81db268fa32ed35274f88f0e9f6e8c8fe36fdfe3247a7c75cef3d526814755ad
Status: Downloaded newer image for vmware/harbor-log:0.5.0
Pulling ui (vmware/harbor-ui:0.5.0)...
0.5.0: Pulling from vmware/harbor-ui
93b3dcee11d6: Already exists
a91de92f52f5: Pull complete
341612b46e3b: Pull complete
c1a53f812656: Pull complete
9a9aa413559a: Pull complete
e1b377650dfc: Pull complete
be5517028022: Pull complete
726f4e0b4799: Pull complete
08639f4ec97a: Pull complete
Digest: sha256:677776af19c774f665565486ef0ec3ab37e55c6738a471942e3ea841b3e1821c
Status: Downloaded newer image for vmware/harbor-ui:0.5.0
Pulling mysql (vmware/harbor-db:0.5.0)...
0.5.0: Pulling from vmware/harbor-db
43c265008fae: Pull complete
d7abd54d3b34: Pull complete
92b527830a1b: Pull complete
44839710d611: Pull complete
3828a16bed5c: Pull complete
fb91763f6b4e: Pull complete
892bfb27c685: Pull complete
02874ec7a2dc: Pull complete
861c1296cc0d: Pull complete
d611998d5598: Pull complete
09037dc5a941: Pull complete
448973dd2180: Pull complete
c0a51ede01de: Pull complete
54c4b53ba168: Pull complete
Digest: sha256:4bc45566b8aab9288e76ac8a36e604aecf05ba9b25e22f5a9cd5e9686978b78b
Status: Downloaded newer image for vmware/harbor-db:0.5.0
Pulling jobservice (vmware/harbor-jobservice:0.5.0)...
0.5.0: Pulling from vmware/harbor-jobservice
93b3dcee11d6: Already exists
a91de92f52f5: Already exists
cdeb4de41efe: Pull complete
ce3594a70659: Pull complete
Digest: sha256:9c2d927f6e59fafcc930a5f738d713bde7d101cecd4e110a570a7b499d69ff68
Status: Downloaded newer image for vmware/harbor-jobservice:0.5.0
Pulling registry (library/registry:2.5.0)...
2.5.0: Pulling from library/registry
e110a4a17941: Pull complete
2ee5ed28ffa7: Pull complete
d1562c23a8aa: Pull complete
06ba8e23299f: Pull complete
802d2a9c64e8: Pull complete
Digest: sha256:1b68f0d54837c356e353efb04472bc0c9a60ae1c8178c9ce076b01d2930bcc5d
Status: Downloaded newer image for registry:2.5.0
Pulling proxy (nginx:1.11.5)...
1.11.5: Pulling from library/nginx
386a066cd84a: Pull complete
7bdb4b002d7f: Pull complete
49b006ddea70: Pull complete
Digest: sha256:9038d5645fa5fcca445d12e1b8979c87f46ca42cfb17beb1e5e093785991a639
Status: Downloaded newer image for nginx:1.11.5
Creating harbor-log
Creating harbor-db
Creating registry
Creating harbor-ui
Creating nginx
Creating harbor-jobservice

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://192.168.100.101.
For more details, please visit https://github.com/vmware/harbor .

見て分かる通り harbor はコンテナで動作します
解凍したフォルダ内に docker-compose.yml ファイルも存在しています

完了したら harbor 用のコンテナを確認してみましょう

  • docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                      NAMES
405c46a5cf48        vmware/harbor-jobservice:0.5.0   "/harbor/harbor_jo..."   13 minutes ago      Up 13 minutes                                                  harbor-jobservice
c1e65c00f50d        nginx:1.11.5                     "nginx -g 'daemon ..."   13 minutes ago      Up 13 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
c62583b09c91        vmware/harbor-ui:0.5.0           "/harbor/harbor_ui"      13 minutes ago      Up 13 minutes                                                  harbor-ui
8e5a36f0268d        library/registry:2.5.0           "/entrypoint.sh se..."   13 minutes ago      Up 13 minutes       5000/tcp                                   registry
667a6045716a        vmware/harbor-db:0.5.0           "docker-entrypoint..."   13 minutes ago      Up 13 minutes       3306/tcp                                   harbor-db
24e21ba0af2c        vmware/harbor-log:0.5.0          "/bin/sh -c 'crond..."   13 minutes ago      Up 13 minutes       0.0.0.0:1514->514/tcp                      harbor-log

こんな感じで起動していれば OK です

試してみる、その前に

dockerd のオプションに --insecure-registry というオプションがあります
これに今回構築した harbor の IP を追加する必要があります
そうしないと Error response from daemon: Get https://192.168.100.101/v1/users/: dial tcp 192.168.100.101:443: getsockopt: connection refused と言われて怒られます

  • vim /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --insecure-registry 192.168.100.101
  • systemctl daemon-reload
  • systemctl restart docker

で registry が http でも試すことができます

試してみる

  • docker login 192.168.100.101
Username: admin
Password: Harbar12345
Login Succeeded

でログインできます
パスワードはデフォルトです
この設定は harbor.cfg で変更することができます
では実際に registry にイメージを登録してみます

  • docker pull alpine
  • docker tag alpine 192.168.100.101/library/alpine
  • docker push 192.168.100.101/library/alpine

でイメージを登録することができます
harbor にはデフォルトで library というプロジェクトが用意されているのでそれを使っています
それ以外のプロジェクト名をデフォルトで指定すると push できません

UI で確認してみる

harbor にはデフォルトで UI がついています
ブラウザで http://192.168.100.101 にアクセスしてみましょう
ユーザ名とパスワードは先程のデフォルトのものになります

するとプロジェクト「library」があることが確認できると思います
選択すると先程 push した alpine のイメージがあると思います
first_vmware_harbor1.png

別のプロジェクトに対して push したい場合はここでプロジェクトを作成後 push してください

最後に

VMware の harbor を試してみました
実は内部的には dockerhub で公開されている docker 純正の registry を使っています
それに UI やログ置き場、ジョブワーカー、ユーザ管理、メール送信などの機能がデフォルトで用意されている感じになります

今回は簡単に試しただけなので、いろいろと触ったら Tips 的なのも別途紹介したいと思います

参考サイト

2017年3月28日火曜日

docker レジストリを使ってみた

概要

docker レジストリを使ってみました
コンテナ版があるのでそれを使っています

環境

  • Mac OS X 10.12.3
  • docker registry 2.6.0
  • docker 17.03

registry インストール

  • docker pull registry
  • mkdir -p /path/to/registry
  • cd /path/to/registry
  • docker run -d -p 5000:5000 -v $(pwd):/var/lib/registry registry

で完了です
localhost の 5000 番で動作させます

イメージを push してみる

構築したレジストリ上にイメージを push してみます

  • docker pull alpine
  • docker tag alpine localhost:5000/hawksnowlog/alpine
  • docker push localhost:5000/hawksnowlog/alpine

tag を付与するフォーマットは「ホスト名/リポジトリ名/イメージ名」になります
イメージが小さいのもありますが、ローカルホストなので速度も速いです

今回の場合 Mac マシンのカレントディレクトリをコンテナのデータボリュームとして使っています
上記のタグの付け方だと

  • ls docker/registry/v2/repositories/hawksnowlog/alpine/

という感じでイメージ情報を確認することができます

イメージを pull してみる

push したイメージを使ってみます

  • docker rmi localhost:5000/hawksnowlog/alpine
  • docker pull localhost:5000/hawksnowlog/alpine

問題なく pull できると思います

UI を使ってみる

  • docker pull konradkleine/docker-registry-frontend:v2
  • docker run -d -e ENV_DOCKER_REGISTRY_HOST=192.168.100.101 -e ENV_DOCKER_REGISTRY_PORT=5000 -p 8080:80 konradkleine/docker-registry-frontend:v2

192.168.100.101 は docker が動作しているホストの IP です
今回であれば Mac マシンの IP になります

でブラウザで localhost の 8080 にアクセスしてみましょう
管理画面が確認出来ると思います
基本はビューワーなので、画面からイメージを push, pull したりすることはできません

最後に

コンテナバージョンの docker レジストリを使ってみました
個人で使う場合にはレジストリも同じマシンで良いですが、サービスなどで使う場合は専用のマシンと専用のストレージがあったほうが良いかと思います

よくあるのは s3 などと組み合わせるとレジストリのストレージ容量を管理しなくて済むので良いかと思います

2017年3月27日月曜日

progressbar.js の circle を試してみた

概要

progressbar.js を試してみました
いろいろな形でプログレスバーを作成できるライブラリです
今回はサークルのプログレスバーを試してみました
HTML + JavaScript ファイルを作成して nginx の DocumentRoot に対してしてサクッと Chrome で確認します

環境

  • Mac OS X 10.12.3
  • Chrome 56.0.2924.87 (64-bit)
  • progressbar.js 1.0.1

workspace 準備

  • nginx
  • cd /usr/local/var/www/
  • mkdir p
  • cd p

で作業します
nginx を想定しています

ライブラリインストール

index.html の作成

  • vim index.html
<html>
<head>
  <link href="https://fonts.googleapis.com/css?family=Raleway:400,300,600,800,900" rel="stylesheet" type="text/css">
  <link href="./myprogress.css" rel="stylesheet" type="text/css">
  <script type="text/javascript" src="./progressbar.min.js"></script>
</head>
<body>
  <div id="container"></div>
  <script type="text/javascript" src="./myprogress.js"></script>
</body>
</html>

container の div タグにプログレスバーを描画します
ダウンロードした progressbar.min.js のインクルードの他に自作の css と js とフォント用の CSS もインクルードしています

myprogress.js の作成

  • vim myprogress.js
var bar = new ProgressBar.Circle(container, {
  color: '#aaa',
  strokeWidth: 4,
  trailWidth: 1,
  easing: 'easeInOut',
  duration: 1400,
  from: { color: '#aaa', width: 1 },
  to: { color: '#848484', width: 4 },
  // Set default step function for all animate calls
  step: function(state, circle) {
    circle.path.setAttribute('stroke', state.color);
    circle.path.setAttribute('stroke-width', state.width);

    var value = Math.round(circle.value() * 10);
    if (value === 10) {
      circle.setText('<font size="5px">Max</font><br><div align="center">' + value + '</div>');
    } else {
      circle.setText('<font size="5px">Containers</font><br><div align="center">' + value + '</div>');
    }

  }
});
bar.text.style.fontFamily = '"Raleway", Helvetica, sans-serif';
bar.text.style.fontSize = '2rem';

bar.animate(1.0);  // Number from 0.0 to 1.0

描画のメイン処理になります
今回の記事のポイント部分になります

描画する id タグ container を指定して ProgressBar.Circle でオブジェクトを作成しています
その引数としていろいろな値を与えることでデザインがアニメーション速度などを変更することができます

最後の bar.animate でどこまで描画するか割合を指定します
1.0 なら最後まで描画します

myprogress.css の作成

  • vim myprogress.css
#container {
  margin: 20px;
  width: 200px;
  height: 200px;
  position: relative;
}

動作確認

あとはブラウザで http://localhost:8080/p/ にアクセスするとプログレスバーのデモが確認できると思います
try_progressbar_js.png

最後に

progressbar.js を試してみました
アニメーションやデザインが今風でキレイなところが気に入りました

円グラフではないので、凡例などで 2 色分表示とかはできないみたいです

参考サイト

2017年3月26日日曜日

Ubuntu 16.04 で hugo を試してみた

概要

Ubuntu で hugo をインストールしてクリックスタートを試してみました

環境

  • Ubuntu 16.04
  • hugo 0.19

インストール

  • sudo apt install hugo

だと 0.16 になってしまうので deb パッケージからインストール

スキャホールドする

  • hugo new site bookshelf

で一式作成してくれます

記事作成

  • cd bookshelf
  • hugo new post/good-to-great.md
  • vim content/post/good-to-great.md

で markdown 本文を記載できます

テーマを当てる

hugo はデフォルトでテーマが何もないので記事を作成してもテーマを当てないと何も表示されません

http://localhost:1313 にアクセスすると画面が表示されます

テーマを変える

でテーマを変えることができます
自分の場合このテーマだと起動した時にエラーが表示されました
おそらく Params が config.toml に記載されていないためエラーが出ているんだと思います
表示はされるので気にしなくても OK です

設定ファイルを編集する

設定ファイルを変更することでサイトのタイトルなどを変更することができます

  • vim config.toml
baseURL = "http://localhost/"
languageCode = "en-us"
title = "hawksnowlog Book Reviews"

[Params]
  Author = "hawksnowlog"
  • hugo server --baseURL=localhost --bind=0.0.0.0 --theme=hugo_theme_robust --buildDrafts

でサイトのタイトルなどが変わると思います

画像をオーバライトする

テーマで使われている画像を別の画像でオーバライトします
テーマのファイルを自体をいじるわけではなく適切なパスに配置することでオーバライトできます

画像が変わらない場合はブラウザキャッシュしている可能性があるのでキャッシュを削除するかプライベートブラウズで確認してください
Chrome の場合は Ctrl + Shift + R で強制リロードすれば OK です

レイアウトファイルをオーバライトする

画像だけでなくレイアウトファイルもオーバライトできます

  • mkdir -p layouts/_default
  • cp ./themes/hugo_theme_robust/layouts/_default/li.html layouts/_default
  • vim layouts/_default/li.html

で適当に html ファイルを編集するとデザインを変更することができます
基本的にはテーマに含まれているファイルを適切なパスにコピーしてそれを編集する方針で OK です
フッターを変える場合は以下の通り

  • mkdir -p layouts/partials
  • cp ./themes/hugo_theme_robust/layouts/partials/default_foot.html layouts/partials
  • vim layouts/partials/default_foot.html

記事をカスタマイズする

画像を差し替えてみます

+++
date = "2016-02-14T16:11:58+05:30"
draft = true
title = "Good to Great Book Review"
image = "book1.jpg"
+++

追記するのは先頭の toml フォーマットの部分になります
で画像のサムネイル部分を変更できます

ビルドして静的ファイルを作成する

例えば nginx でホスティングしたい場合に使えます

  • hugo --theme=hugo_theme_robust --buildDrafts

で public/ というディレクトリ配下に静的ファイルができあがります
これを例えば

  • cp -ipr public /var/www/html/

とかすれば nginx でホスティングすることができます
ビルド時に --baseURL を指定していないので config.toml で baseURL の設定を行っておいてください
基本はホスティングするサイトの IP を指定しておけばいいと思います
サブディレクトリ使う場合は、そのパスも入力しましょう

Tips

hugo undraft というコマンドがありそれで記事をドラフトからプロダクションにすることで --buildDrafts がなくても表示の対象にすることができる

最後に

hugo を Ubuntu で試してみました
基本的にクイックスタートをやっただけですが、hugo の最新版ないと動かないテーマもありました

あとはクイックスタートのページに github pages で公開する方法も載っていましたが公開する予定はなかったのでスルーしました
git で管理する場合は public と themes ディレクトリは .gitignore に記載したほうが良いと思います

参考サイト

2017年3月25日土曜日

AWS の Storage Gateway のデータボリューム (iSCSI) を VM でマウントしてみた

概要

前回 Storage Gateway のボリュームゲートウェイで iSCSI インタフェースを作成しました
前回は ESXi でマウントしたのですが、今回は VM (Ubuntu) でマウントしてみたいと思います
iSCSI インタフェースを持った Storage Gateway は前回の記事を参考に事前に作成しておいてください

環境

  • VMware vCenter Server 6.0.0u2
  • VMware ESXi 6.0.0 3620759
  • AWS Storage Gateway (20170322 時点)
  • AWS Storage Gateway Appliance
  • Ubuntu 16.04

iSCSI イニシエータのインストール

  • apt -y install open-iscsi

iSCSI イニシエータの設定

  • vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1997-05.com.amazon:volume1

InitiatorName は Storage Gateway のコンソールにログインし「ボリューム」の一覧の「ターゲット名」で確認してください

  • systemctl restart iscsid open-iscsi

iSCSI デバイスの認識

  • iscsiadm -m discovery -t sendtargets -p xxx.xxx.xxx.xxx

IP アドレスは Storage Gateway のコンソールにログインし「ボリューム」の一覧の「ホスト IP」で確認できる

  • iscsiadm -m node -o show
  • iscsiadm -m node --login
Logging in to [iface: default, target: iqn.1997-05.com.amazon:volume1, portal: xxx.xxx.xxx.xxx,3260] (multiple)
Login to [iface: default, target: iqn.1997-05.com.amazon:volume1, portal: xxx.xxx.xxx.xxx,3260] successful.
  • iscsiadm -m session -o show
tcp: [1] xxx.xxx.xxx.xxx:3260,1 iqn.1997-05.com.amazon:volume1 (non-flash)
  • fdisk -l
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B1599688-376B-4FFB-AFF4-732C1A7258B8

iSCSI デバイスのフォーマット

  • parted --script /dev/sdb "mklabel msdos"
  • parted --script /dev/sdb "mkpart primary 0% 100%"
  • mkfs.ext4 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
/dev/sdb1 contains a VMFS_volume_member file system
Proceed anyway? (y,n) y
Creating filesystem with 5242624 4k blocks and 1310720 inodes
Filesystem UUID: 94b8fed5-af73-4c27-b882-0fe26671a1b9
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

iSCSI デバイスのマウントと利用

  • mkdir -p /mnt
  • mount /dev/sdb1 /mnt
  • df -h /dev/sdb1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        20G   44M   19G   1% /mnt

これで普通のディスクとして使えるはずです
もちろん s3 側にもボリュームのスナップショットが作成され Storage Gateway 経由でリストアなどできるようになります

最後に

Storage Gateway の iSCSI インタフェースを Ubuntu にマウントしてみました
前回は ESXi 上のデータストアとして認識させた上で VM のディスクに割り当てていたのですが、うまく動作しなかったので VM でも試してみたところうまくいきました

本当は ESXi のデータストアとしてして使えたほうが何かと便利なのですが、、、
その問題はそのうち解決できればなと思います

参考サイト

2017年3月24日金曜日

AWS Storage Gateway のファイルゲートウェイを使って nfs のデータストアを VMware 上に構築してみた

概要

前回 Storage Gateway のファイルゲートウェイで nfs インタフェースを作成しました
前回は VM でマウントしたのですが、今回は ESXi でマウントしてみたいと思います
nfs インタフェースを持った Storage Gateway の作成は前回の記事を参考してください

環境

  • VMware vCenter Server 6.0.0u2
  • VMware ESXi 6.0.0 3620759
  • AWS Storage Gateway (20170322 時点)
  • AWS Storage Gateway Appliance
  • Ubuntu 16.04

nfs デバイスのマウント

vSphere Client を開いて

ホスト -> アクション -> ストレージ -> 新しいデータストア

を選択します
タイプの選択で「NFS」を選択します
バージョンは NFS3 を選択します

データストア名とフォルダ、サーバを入力する画面で Storage Gateway に作成したファイル共有の情報を入力します
フォルダには設定したバケット名をサーバ名は Storage Gateway の IP アドレスを設定します
aws_storage_gateway_nfs_mount1.png

これで OK し作成を完了します
Storage Gateway の nfs インタフェースを使ったデータストアが一覧に表示されると思います

試し手に VM のディスクとしてに割り当ててみる

以下のような感じで VM にディスクを割り当てます
データストアを追加したデータストアに変更するので注意してください
今回は20GB 分割り当てます
aws_storage_gateway_nfs_mount2.png

そしてフォーマットしマウントします

  • parted --script /dev/sdb "mklabel msdos"
  • parted --script /dev/sdb "mkpart primary 0% 100%"
  • mkfs.ext4 /dev/sdb1
  • mkdir -p /mnt
  • mount /dev/sdb1 /mnt
  • df -h /dev/sdb1

VMware 環境の場合はディスクは vmdk ファイルとしてデータストアに保存されます
そしてこの状態で s3 を見ると s3 側にも vmdk ファイルが存在することが確認できると思います
aws_storage_gateway_nfs_mount3.png

aws_storage_gateway_nfs_mount4.png

最後に

Storage Gateway の nfs を ESXi のデータストアとしてでマウントする方法を紹介しました
iSCSI のときは ESXi にはマウントできたのですが、それを VM に割り当てるとうまくフォーマットできませんでした
nfs だとうまくフォーマットし、マウントすることで VM 上でファイルシステムとして使用することができました

きっと iSCSI もできるはずですが、原因は未だに不明です

2017年3月23日木曜日

AWS Storage Gateway のファイルゲートウェイを使って s3 にデータを保存する

概要

AWS Storage Gateway にはファイル共有という機能があり nfs フォーマットでマウントすることができます
マウントした領域にデータを保存するとそのまま s3 にも保存することができます
今回は Appliance を VMware 環境にデプロイし VM から Storage Gateway で作成した nfs をマウントして s3 にデータを保存してみます
基本的な手順は前回の iSCSI の回と同じなのでそちらをご覧ください

環境

  • VMware vCenter Server 6.0.0u2
  • VMware ESXi 6.0.0 3620759
  • AWS Storage Gateway (20170322 時点)
  • AWS Storage Gateway Appliance

ファイルゲートウェイ用 AWS Storage Gateway Appliance のデプロイ

以下からアプライアンスをダウンロードし VMware 環境にデプロイしてください
https://dslbbkfzjw91h.cloudfront.net/AWS-Storage-Gateway-File.zip

デプロイ後に設定変更するので起動しないようにしてください

Appliance の設定変更

設定変更から以下を変更します

  • 50GB のディスクを 1 本追加する (ストレージの容量に余裕がなければ 50GB もなくても OK です)
  • 仮想マシン オプション -> VMware Tools -> 時刻 にチェックを入れる

設定変更したら起動します
IP が取得できれば OK です

AWS 側に Storage Gateway を追加する

Storage Gateway のコンソールで作業します

ゲートウェイの種類を選択で「ファイルゲートウェイ」を選択します
ホストプラットフォームの選択で「VMware ESXi」を選択します

あとはゲートウェイに接続してアクティブ化すれば OK です
追加した 50GB 分のストレージもローカルストレージとして作成してください

ファイル共有を作成します

続けてファイル共有を作成します
左メニューの「ファイル共有」を選択します

作成時にデータを保存するバケットを指定する必要があるので入力します
s3 へのアクセス用の IAM ロールを設定する必要がありますが、新規で作成することもできるので設定が面倒であれば新規で作成してください

あとは作成されるのを待ちます

nfs として VM にマウントする

では VM にマウントしてみましょう
コンソールにコマンドが出ているのでそのまま利用すれば OK です
もちろん Appliance の IP アドレスにアクセスできる VM から試してください
今回は Ubuntu 16.04 から試しています

  • apt -y install nfs-common
  • mkdir -p /sg
  • mount -t nfs -o nolock xxx.xxx.xxx.xxx:/my-sg-test-bucket /sg
  • echo hoge > /sg/hoge.txt

という感じでマウントしてファイルを作成してみましょう
すると s3 側にもデータが保存できているのが確認できると思います
aws_storage_gateway_nfs1.png

最後に

Storage Gateway のファイル共有機能を使って s3 をバックグランドにした nfs をマウントしてみました
感覚的には s3fs などのファイルシステムツールに近い感じです

利点としてはマウントには nfs クライアントがあればいいのでいちいち s3fs をインストール必要がありません
また、同じバケットを別の VM でも簡単にマウントすることができるようになります

ESXi にも NFS をマウントする機能があるけどこれでマウントしてデータストアとして認識させてから VM に割り当てることはできるのだろうか