/var/lib/coreos-install/user_data
coreosの設定を変えたい時は
# 設定の変更 $ sudo vi /var/lib/coreos-install/user_data # 適用 $ sudo coreos-cloudinit -from-file=/var/lib/coreos-install/user_data
/var/lib/coreos-install/user_data
coreosの設定を変えたい時は
# 設定の変更 $ sudo vi /var/lib/coreos-install/user_data # 適用 $ sudo coreos-cloudinit -from-file=/var/lib/coreos-install/user_data
Docker for macが出てから、しばらく使っていたけれど、 どうしてもディスクの喰い方がつらくて、Docker for macを卒業。
現在のローカルのDockerの環境は Parallels + CoreOS Stable channel + Docker client という構成に。 というか戻った。
paralllels + CoreOSのところは一旦置いておいて MacにDocker clientだけをスマートに入れる方法はないかと模索したところ toolboxのソースにあるDockerfile.osxにヒントが。
36 RUN curl -fsSL -o dockerbins.tgz "https://get.docker.com/builds/Darwin/x86_64/docker-${DOCKER_VERSION}.tgz" && \ 37 tar xvf dockerbins.tgz docker/docker --strip-components 1 && \ 38 rm dockerbins.tgz 39 40 RUN chmod +x /docker
https://get.docker.com/builds/Darwin/x86_64/docker-${DOCKER_VERSION}.tgz
このURLさえあれば、動いたり動かなかったりするDocker toolboxのインストーラーにやきもきすることもなく、 Docker clientだけをMacにスマートに入れられる。
$ DOCKER_VERSION=1.11.2 $ wget https://get.docker.com/builds/Darwin/x86_64/docker-${DOCKER_VERSION}.tgz $ tar zxf docker-${DOCKER_VERSION}.tgz $ mv docker/docker /usr/local/bin/docker-${DOCKER_VERSION} $ pushd /usr/local/bin/ $ chmod +x docker-${DOCKER_VERSION} $ ln -s docker-${DOCKER_VERSION} docker
これでclientだけを入れる事ができた。 あとは環境変数のDOCKER_HOSTにtcp://${COREOS_HOST}:2375 とか入れておけばOK
Cognitive ToolKitを追いかけていたら、ちょいちょいGourceというなんだかかっちょいいツールを見かける。
これはよくわからんけど、使ってみたい。 Windows用のバイナリは用意されているみたいだけれども、Mac用のバイナリはないっぽいので自分で作る。
$ sudo port install glm boost libsdl glew pcre freetype ftgl libpng libsdl2_image
$ git clone git@github.com:acaudwell/Gource.git
$ cd Gource
$ ./autogen.sh
$ ./configure && make
$ sudo make install
ここ以下は手順をメモっただけなので読み飛ばし可
$ git clone git@github.com:acaudwell/Gource.git $ cd Gource $ ./autogen.sh 〜略〜 Run './configure && make' to continue. $ ./configure 〜略〜 checking for GLEW... configure: error: Package requirements (glew) were not met: No package 'glew' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLEW_CFLAGS and GLEW_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
glewがないよっていう事を言われるので
$ sudo port install glew
そして再び
$ ./configure 〜略〜 configure: WARNING: SDL 2.0 libraries not found. Trying SDL 1.2. Please note SDL 1.2 support is deprecated checking for SDL... configure: error: Package requirements (sdl >= 1.2.10 SDL_image) were not met: No package 'sdl' found No package 'SDL_image' found
今度はsdlがないと
$ sudo port install libsdl
$ ./configure
configure: error: Boost Filesystem >= 1.46 is required. Please see INSTALL
次はBoost Filesystemが必要と言われ、 INSTALLを見てくれという事なので見てみると
ちゃんと依存が書いてありました
MacPortsには Boost Filesystem >= 1.46 (libboost-filesystem-dev) まんまこれは存在していないようなので、 boostをinstall、そしてconfigure
$ sudo port install boost $ ./configure
configure: error: GLM headers are required. Please see INSTALL
$ sudo port install glm $ ./configure
これで無事にconfigureは完了です。
自分の環境には他に依存しているものがたまたま入っていただけなので、INSTALLに書いてある
を全部入れましょう
$ make && make install
これで無事にインストールは完了。
Mac上でCNTK改めCognitive Toolkitを使おうとコンパイルを試みたけれど、ネイティブでは無理だった。 無理じゃないかもしれないけれど、労力ががが 結局Dockerでやるのが楽ちん。
ここにも有るようにACMLがLinuxとWindowsにしか提供されていないからだと言う。 他のオープンソースのライブラリで代用しないか?という質問に対しても しかも当面はWindows とLinux以外はサポートしないとはっきりと書かれている。
AMD Core Math Libraryの事。 developer.amd.com
ただ、現在サイトを見てみると終了のお知らせがあり、これからはオープンソースでやっていくから gpuopen.comを見てねと オープンソースになったので、Mac用にビルドするとか出来るようになるでしょう
とりあえず、ACMLはここまでにしてMacでなんとかCNTK
DockerでCNTKを使う方法は公式のWikiにも書いてある。
CNTK Docker Containers · Microsoft/CNTK Wiki · GitHub
ここに書かれている通りに
cd ${REPO_ROOT}/CNTK/Tools/docker docker build -t cntk CNTK-CPUOnly-Image
こんな感じでbuildすればとりあえず、MacでもなんでもCognitive ToolKitは試せる ただ、buildにMacbook Air 2014 で大体8時間位かかるので、 ビルド中は美術館なんかに行くのが良いと思う。
ちなみに
$ docker search cntk NAME DESCRIPTION STARS OFFICIAL AUTOMATED torumakabe/cntk-cpu Image built by MS CNTK Dcokerfile (CPU) 1 microsoft/cntk CNTK 1 [OK] attz/cntk 0 xmedicus/cntk CNTK 0 smizy/cntk Based on torumakabe/cntk-cpu, MNIST data p... 0 xiw9/cntk Another CNTK docker image 0 qianjun22/cntk-gpu Docker Image built from the official MS CN... 0 alfpark/cntk Microsoft Cognitive Toolkit (CNTK) with 1-... 0 toyotaka/cntk 0 tottokug/cntk-cpuonly 0 incognition/cntk-devel 0 nefrock/docker-cntk-cpu 0 nefrock/docker-cntk-gpu 0 incognition/cntkcuda8 0 ericebert/cntk_gpu 0
と、野良のcntkのDocker Imageが出て来る。 その中に一つ異彩を放つ一行がこちら microsoft/cntk なんか公式っぽいTagが付いているImageがある、 しかしdocker hubに行ってみると、
https://hub.docker.com/r/microsoft/cntk/tags/
キチンと公式っぽいものが用意されていた。 RepoInfoのショボさはこの際は気にしない。
$ docker run -it --rm microsoft/cntk:1.7.2-cpu-only /bin/bash root@de3948185514:/cntk# cntk ------------------------------------------------------------------- Build info: Built time: Oct 1 2016 21:16:06 Last modified date: Sat Oct 1 21:14:58 2016 Build type: release Build target: CPU-only With 1bit-SGD: no Math lib: mkl Build Branch: HEAD Build SHA1: d1ad5fcc9b71c9b6122623a2a0c3d126a64cbe94 Built by philly on 9b019bb2e014 Build Path: /home/philly/jenkins/workspace/CNTK-Build-Linux ------------------------------------------------------------------- No command-line argument given. ------------------------------------------------------------------- Usage: cntk configFile=yourConfigFile For detailed information please consult the CNTK book "An Introduction to Computational Networks and the Computational Network Toolkit" -------------------------------------------------------------------
とりあえず、これでよいか。
Mac上でcntkを試す程度であれば、これが1番楽ちんそうだなと思いました。
New Amazon Linux Container Image for Cloud and On-Premises Workloads | AWS Blog
こんなリリースがあったけど、ecrとイチャイチャしたり、色々めんどくさいから、手元で使いやすいように
規約的に大丈夫かわからないので自己責任で
#!/bin/bash if [ $# -ne 1 ] then echo "USAGE: $0 {MY_REPOSITORY}" echo " " exit; fi REPOSITORY=$1 LOGIN_CMD=$(aws ecr get-login --registry-ids 137112412989) eval "$LOGIN_CMD" for image in $(aws ecr list-images --registry-id 137112412989 --repository-name amazonlinux |jq -r .imageIds[].imageTag); do docker pull 137112412989.dkr.ecr.us-west-2.amazonaws.com/amazonlinux:${image} echo "IMAGE reTAG=========================================================" docker images |grep "amazonaws.com/amazonlinux" |grep "${image}" | perl -anle 'print "$F[2]"' | xargs -I{} docker tag {} ${REPOSITORY}/amazonlinux:${image} echo "IMAGE push=========================================================" docker push ${REPOSITORY}/amazonlinux:${image} done
SORACOMリリース1周年記念リレーブログ 11月1日分です。 blog.soracom.jp
SORACOMももう1周年という事で、色々とサービスが増えて来ました。 まずは各サービスをGoogle Trendで見てみます。
↑読み込み遅いけどGoogle Trendsのグラフ出ます。
↑読み込み遅いけどGoogle Trendsのグラフ出ます。
SORACOM Airが 2014/7/6 - 12の間に検索されていたりするのは、 創業者二人が飲みながら名前を考えているときに、 検索していたのかなと想像すると楽しいですね。
AirとBeamの検索量にたいして、他のサービスはGateがかろうじて 検索されている位の状況です。
ということで、今回はCanal周りを中心に遊んでみようと思います。
まずはVPGで遊んでみたいと思います。 VPGを作成するところから。
$ soracom vpg create --device-subnet-cidr-range=10.0.0.0/9 --primary-service-name=canal { "createdTime": 1477998721142, "deviceSubnetCidrRange": "10.128.0.0/9", "lastModifiedTime": 1477998722107, "operatorId": "OP0012950956", "primaryServiceName": "Canal", "status": "creating", "tags": {}, "type": 12, "ueSubnetCidrRange": "10.128.0.0/9", "useInternetGateway": true, "virtualInterfaces": null, "vpcPeeringConnections": null, "vpgId": "********-****-****-****-************" } コマンドラインでサクと作ります。 ### statusがrunnningになればvpg作成完了 $ soracom vpg get --vpg-id=acf68be6-83f7-44c3-9fd5-bd741a434176 |jq -r .status running
特に難しいこともなく、作成完了です。
$ soracom vpg list-ip-address-map-entries --vpg-id=********-****-****-****-************ [ { "hostId": "100.64.148.132", "ipAddress": "10.64.148.132", "key": "100.64.148.132", "type": "gatePeer" }, { "hostId": "100.64.148.4", "ipAddress": "10.64.148.4", "key": "100.64.148.4", "type": "gatePeer" } ]
なにやら、アドレスが2個作成されています。 推測ですが、VPGというのはVPCと(AZにまたがって)EC2が2台という構成で作られているのでは無いかと推測できます。 今作成したものであれば、 100.64.128.0/17と100.64.0.0/17というサブネットがあるのではないかと思います。
このVPCがアカウント毎に違うVPCなのか、同じVPCなのかは今回は検証していませんが、おそらく別れていることでしょう。
こちらもさくと作ります。
$ aws ec2 create-vpc --cidr-block 172.19.0.0/16 { "Vpc": { "VpcId": "vpc-467*****",[f:id:tottokug:20161102003146p:plain] "InstanceTenancy": "default", "State": "pending", "DhcpOptionsId": "dopt-ada4b3cf", "CidrBlock": "172.19.0.0/16", "IsDefault": false } }
VPCとつなぐのはコマンド一つのお手軽さです。
$ soracom vpg create-vpc-peering-connection \ --destination-cidr-block=172.19.0.0/16 \ --peer-owner-id=01234567890123 \ --peer-vpc-id=vpc-********** \ --vpg-id=********-****-****-****-************
これで、SORACOM側のAWSアカウントから、指定したVPCに対してPeeringのRequestが届きます。
それをAWS側でAcceptすることで、Peeringが完成しました。
VPGとSORACOMのVPCの関係について後日追記予定の内容があります。
先程Peeringを作ったVPCもそのままでは特に何もないネットワークなので、 もうちょっと遊ぶために、Subnet(172.19.8.0/24)を作成し、 RouteTableに100.64.0.0/16 への通信をpeeringに渡す設定とSecurity Groupを適切に設定する事で、 AirからEC2への疎通は出来るはずです。 今回はAirは使っていないので、確認はできていません。。。
そして、今日の本題。 EC2からSORACOMのどこまでアクセス出来るのか試してみたいと思います。
Doorがあればまた話しは変わってくるのかもしれませんが、 今回はSORACOM CanalとSORACOM GateだけでEC2がどこまでアクセス出来るのかを試していきたいと思います。 vxlanの設定までを https://dev.soracom.io/jp/start/gate/ ここを見ながら終わらせます。
$ soracom vpg register-gate-peer --outer-ip-address 172.19.8.253 --vpg-id ********-****-****-****-************ { "innerIpAddress": "10.18.216.109", "netmask": null, "outerIpAddress": "172.19.8.253", "ownedByCustomer": true }
これは公式ドキュメント https://dev.soracom.io/jp/start/gate/#step5 にも書いてある事で出来るはずです。 今回はSORACOM Airを使わないで楽しむことが目的なので、割愛します。
SORACOM Beamには100.127.127.100というIPアドレスがついています。 このネットワークにアクセス出来ると良いですね。 とりあえず、単純にRouteTableに100.127.0.0/16へのルートをPeeringに向けてみます。
$ nmap 100.127.127.100 Starting Nmap 6.40 ( http://nmap.org ) at 2016-11-01 14:58 UTC Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn Nmap done: 1 IP address (0 hosts up) scanned in 3.03 seconds
Beamのときと同様にfunnel.soracom.io (100.127.65.43)にも
$ nmap 100.127.65.43 Starting Nmap 6.40 ( http://nmap.org ) at 2016-11-01 15:01 UTC Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn Nmap done: 1 IP address (0 hosts up) scanned in 3.03 seconds
結論、頑張ったけど、EC2からBeamにもFunnelにも到達することはできませんでした。
もし、EC2から直接BeamやFunnelにアクセス出来たならば、 MQTTのフルマネージドサービスを手に入れることができ、 SORACOMをIoTのサービスではなく、データフローのサービスとしても楽しむことが出来るはずです。
VPGはセットアップの時に 980 円/回 (税別)がかかるのと、 VPG 利用料金: 1時間あたり 50 円 (税別) VPC ピア接続利用料金: 1ピア接続・1時間あたり 10 円 (税別) [2016/11/1 現在] がかかるので遊び終わったら削除する事と、無駄にVPGを作成しないことで 突然の課金にびっくりすることはないでせう。
と、自己満足に浸ったところで、11/1分はおしまいです。