docker-mahcine使ってみた
init
$ docker-machine create —driver virtual box doc INFO[0000] Creating SSH key... INFO[0000] Creating VirtualBox VM... ERRO[0009] Error creating machine: exit status 1 WARN[0009] You will want to check the provider to make sure the machine and associated resources were properly removed.
debugモードで起動してみる
$ docker-machine rm doc $ docker-machine —debug create --driver virtualbox doc ... STDERR: Oracle VM VirtualBox Command Line Management Interface Version 5.0.2 ...
docker-machine create
fails on Mac OSX 10.10.4
4.3系なら動くようなのでここからpkgダウンロードしてダウングレード
4.3.30 なら動いた
docker-machineでdockerを試せる環境を作ってみる
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM
何もない
$ docker-machine create —driver virtual box doc INFO[0000] Creating SSH key... INFO[0000] Creating VirtualBox VM... INFO[0009] Starting VirtualBox VM... INFO[0009] Waiting for VM to start... INFO[0056] "doc" has been created and is now the active machine. INFO[0056] To point your Docker client at it, run this in your shell: eval "$(docker-machine env doc)"
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM doc * virtualbox Running tcp://192.168.99.101:2376
できてるっぽい
いろいろ確認してみる
- ip
$ docker-machine ip doc 192.168.99.101
- env
$ docker-machine env doc ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015 Docker version 1.8.1, build d12ea79 docker@doc:~$
入れた
nginxをいれてみる
$ eval "$(docker-machine env doc)"
してdockerの接続先を変える
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
なにもない
imageの取得
$ docker pull nginx Using default tag: latest latest: Pulling from library/nginx 2c49f83e0b13: Pull complete 4a5e6db8c069: Pull complete 08ecf065655b: Pull complete ff0618bc0767: Pull complete 12a77b8bf89a: Pull complete 5dde53921c3f: Pull complete a53219dc4d2f: Pull complete 8c7e9b6e3131: Pull complete f9bff7d0d06e: Pull complete 3ac9cfbdf572: Pull complete 491aec45eaf8: Pull complete cd3cf76a61ee: Pull complete Digest: sha256:aaaaaaaaaaaabbbbbbbbbbbbb Status: Downloaded newer image for nginx:lates
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx latest cd3cf76a61ee 3 days ago 132.9 MB
できてる
$ docker run -i 80:80 -d nginx
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d482c3d5542 nginx "nginx -g 'daemon off" 26 seconds ago Up 25 seconds 0.0.0.0:80->80/tcp, 443/tcp mad_panini
ブラウザでアクセスしてみる
やった!
YAPC::Asia 2015 に参加してきた #yapcasia
ブログを書くまではYAPC::Asiaということで!!
今年もYAPCに参加してきました!! とりあえず、最高だった。
聞いて印象に残ったトーク
1日目
Managing Containers at Scale with CoreOS and Kubernetes
CoreOSってよりかはk8sの話がメインでどんな感じに使うかのDEMO多めのトークでした。 個人的には、k8sブログとかで記事見かけてたけど、どんな風に使うのかイマイチわかっていなかったので良かった。
ただ k8s 自体の冗長化はどうすればいいのか質問すればとかったと反省。
Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜
成長しているサービスを改善している裏側だった。 読んだ本をどうやってプロダクションにとりいれてるかすごい参考になった。
紹介されている本のなかで幾つか積んであるのでさっそく読もうと思った。
ベストトーク賞おめでとうございます。
2日目
ISUCONの勝ち方
再起動時にNFS の起動で失敗するやつは何をやってもだめ
— tkuchiki (@tkuchiki) 2015, 8月 22
再起動したらNFSがマウントできないチームがありましたね うッ… 頭が #yapcasia #yapcasiaE
— こんぼい。 (@Konboi) 2015, 8月 22
昨年は予選敗退してなんとも悔しかったので今年は勝ちたいと思って聞かせて頂きました。
聞きながら自分達がやってたやり方を振り返りながら聞けてよかった。
サーバーサイドエンジニア(特にPerl)のためのiOSアプリ開発入門
Demoがことごとく失敗してて失礼ながら笑ってしまいました ← 何度か挫折しているけれど、無料で実機に送れるとのことなのでもっかい手を出してみようかなと思いました
ソーシャルゲームにおける AWS 移行事例
同期の@tkuchikiが登壇するということで聞いてました。 会社で色々聞いていましたが、詳しいところまで把握できていなかったので勉強になりました。
上に挙げたトーク以外にもLTをはじめ色々な話を聞くことができました。
さいごに
牧さんをはじめとするYAPCのみなさん本当にお疲れ様でした!!! おかげさまで、本当に楽しい2日間(前夜祭はいけなかったので)を味わうことができました! 本当にありがとうございました!!!
自宅のルータからraspiへ振られるlocal ipを固定する
はじめに
自宅で使っているルータはElecomのWRC-F300NF
お、お前エンジニアなのにそんなルータなのかよ… とdisが飛んでくるかもしれませんが、 日常で使う分には全然困らない程度に速度出るし、安かったのでこれを使っています。
macアドレスを調べる
pi@raspberrypi ~ $ ifconfig eth0 Link encap:Ethernet HWaddr <mac アドレス> inet addr: < local ip> Bcast:< local ip brod cast> Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:164 errors:0 dropped:0 overruns:0 frame:0 TX packets:141 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:16804 (16.4 KiB) TX bytes:19580 (19.1 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
HWaddr
がmacアドレス。
inet addr
が現在振られているlocal ip。 設定が終わった後に任意のIPが振られているかはここを見る
local ip を固定する
ルータの管理画面にログインする。
WAN&LAN設定 > LAN設定 > 固定DHCP設定
から設定する
IPアドレス
には設定したいローカルIPアドレスを。MACアドレス
には先ほど調べたMACアドレスを入力するaa:bb:cc:dd
など:
で区切られているが入力するときは:
は除く
コメント
には任意
設定してルータを再起動すると設定される。
再起動後にifconfig
で確認すると設定したIPが設定されていることを確認。
まとめ
固定IP振れてめでたしめでたし
ELECOM 11n/b/g対応 無線LAN親機(Wi-Fiルーター) 300Mbps WRC-F300NF (利用推奨環境 3人・ワンルーム・平屋)
- 出版社/メーカー: エレコム
- 発売日: 2014/04/21
- メディア: Personal Computers
- この商品を含むブログ (3件) を見る
Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (6件) を見る
pull request builder plugin を使わずgithub上にテストの結果を表示する
はじめに
現在のプロジェクトではJenkinsを使ってCIを行っています。 当初ビルドのタイミングはポーリングで行っていました。 しかしポーリングだと再度ビルドを走らせる必要がある時に空コミットする必要があったり、jenkinsのrebuild pluginを追加しポチポチしてビルドする必要がありました。
段々と億劫になり今は、Githubのweb hookでGithub::Hooks::Reciverというhook server経由でjenkinsのjobを実行するようにしました。
jenkins側の設定でbranchをパラメータとして渡せるようにして置くことで任意のbranchを指定してjobを実行できるようにしてあります。
と説明が長くなりましたが、今回はそのjobの実行結果をtarvis ciを連携したときのようにbuildの結果をgithubにも表示するようにしましたのでその方法をメモしておきます。
結果こんな感じに表示されるようになりました。
どうやったのか
説明したような仕組みでjenkinsのjobを回しているので結果を表示するためだけにpull request builder plugin を入れて設定するのは大分面倒だなと思って、何かないか色々調べていました。
調べていると以下の記事が見つかった
Githubのpull requestページに、テスト結果を表示するJenkinsの設定
この記事によると GithubのCommit Status API を使えば実現出来そうということがわかったのでやってみました。
以下の様なscriptを用意しjenkinsのPost build task で実行してあげればpull request の最後のcommitのステータスを設定してくれます。
use 5.018; use warnings; use strict; use FindBin::libs; use Furl; use Git::Repository; use JSON::XS; use Pithub; use Sub::Retry qw/retry/; { my $repo_user = ‘sample-user-name’; my $repo_name = ‘sample-repo-name’; my $git = Git::Repository->new(work_tree => ‘project/dir/path’); my $sha = $git->run('log', '-n', '1', '--pretty=format:%H'); my $state = { 'SUCCESS' => { state => 'success', description => 'ぐっ!! (๑•̀ᄇ•́)و✧', }, 'UNSTABLE' => { state => 'error', description => 'アタフタ ヘ( ̄□ ̄;)ノ ヽ(; ̄□ ̄)ヘ アタフタ', }, }; my $url = $ENV{BUILD_URL}; my $furl = Furl->new; my $json = retry 3, 5 => sub { my $res = $furl->get( "$url/api/json?tree=result" ); decode_json $res->content; }; my $result = $json->{result}; exit(0) unless $state->{$result}; my $ph = Pithub->new( token => ‘GITHUB_API_TOKEN’ ); $result = $ph->repos->statuses->create( user => $repo_user, repo => $repo_name, sha => $sha, data => { state => $state->{$result}{state}, description => $state->{$result}{description}, target_url => $url, } ); }
ぐっ!! (๑•̀ᄇ•́)و✧
まとめ
ステータスが出るようになってめでたしめでたし。
raspberry pi で自宅サーバー構築
はじめに
毎日の業務ではAWSを使っていて簡単にサーバー追加とかインスタンスサイズ変更とできて非常に便利に感じている。 ただ普段あまり意識しないもう少し低いレイヤーのことも出来なきゃなと思ったのでが自宅サーバーを運用しようと思う。
ただ、いきなりがっつり自宅サーバー準備しても動かす物の予定も無いし電気代もかかるのやだなーと思ってたのでraspberry pi でカジュアルに動かして見ることにする
やらないといけないであろう事をざっくりと書き出してみる
- 自宅のルータからraspiへ振られるlocal ip が変わらないようにする
- 自宅のネットワーク外から自宅サーバーへ接続するようにする
- 自宅サーバーへ設定したドメインのIPアドレスが変わっても繋がるようにする
とりあえずやらないといけないのはこのぐらいかなーと
がんばるぞ〜!!
ジュラシック・ワールド
IMAX 3D で見たけど大分良かった。