http://www.momiage.com/wiki/api.php?action=feedcontributions&user=Hage&feedformat=atom
もみあげうぃき - 利用者の投稿記録 [ja]
2024-03-28T02:49:48Z
利用者の投稿記録
MediaWiki 1.22.2
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2018-11-02T16:13:04Z
<p>Hage: /* Toolたちのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[SerfとGlusterFSでScalableな共有ディスクを作る]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-services-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSのメモ]]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
* [[SerfでVyOSからインスタンスの情報を取り寄せて、ネットワーク機器の絵を書いて、オンプレの気分を味わう]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2015-04-24T04:57:52Z
<p>Hage: /* AWSでのVPNのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用WebAPI風のもの]]<br />
* [[SerfとGlusterFSでScalableな共有ディスクを作る]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-services-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSのメモ]]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
* [[SerfでVyOSからインスタンスの情報を取り寄せて、ネットワーク機器の絵を書いて、オンプレの気分を味わう]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2015-03-04T04:00:17Z
<p>Hage: /* ソフトウェア関係 */</p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.jyougichan 定規ちゃん]<br />
某ゲームでおなじみの、仲間の絵描きさんが描き下ろしてくれたので、巻尺mmに搭載させていただきました!<br />
<br />
<br />
*[https://github.com/yaggytter GitHub]<br />
*[http://qiita.com/Yaggytter Qiita]<br />
*[https://speakerdeck.com/yaggy SpeakersDeck]<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Services (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
* [[サンドボックス]]<br />
* [[TODOリスト]]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2015-01-27T03:40:10Z
<p>Hage: /* ソフトウェア関係 */</p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.jyougichan 定規ちゃん]<br />
某ゲームでおなじみの、仲間の絵描きさんが描き下ろしてくれたので、巻尺mmに搭載させていただきました!<br />
<br />
<br />
*[https://github.com/yaggytter GitHub]<br />
*[http://qiita.com/Yaggytter Qiita]<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Services (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
* [[サンドボックス]]<br />
* [[TODOリスト]]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-11-28T09:11:43Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
といいつつ、とりあえず載せてみました。英語が間違っているとしても![https://github.com/yaggytter/vyos-serf-vpn https://github.com/yaggytter/vyos-serf-vpn]<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。もしくは、[http://momiage.com/software/serf-keygen-js/ serf-keygen-js]ここから適当にひとつ取ってきてください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* こんな感じ<br />
サンプル http://momiage.com/webmonitor/<br />
<br />
[[Image:Vpnmonitor.png]]<br />
<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
※うまく行かない場合は、updateconcheck.sh内のqueryのtimeoutを長くしてみてください。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただいたスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2014-09-30T14:36:20Z
<p>Hage: /* ソフトウェア関係 */</p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.jyougichan 定規ちゃん]<br />
某ゲームでおなじみの、仲間の絵描きさんが描き下ろしてくれたので、巻尺mmに搭載させていただきました!<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Services (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
* [[サンドボックス]]<br />
* [[TODOリスト]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-09-10T09:56:40Z
<p>Hage: /* AWSでのVPNのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用WebAPI風のもの]]<br />
* [[SerfとGlusterFSでScalableな共有ディスクを作る]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSのメモ]]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
* [[SerfでVyOSからインスタンスの情報を取り寄せて、ネットワーク機器の絵を書いて、オンプレの気分を味わう]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E9%96%A2%E9%80%A3%E7%94%A8%E8%AA%9E%E9%9B%86
AWS関連用語集
2014-08-15T03:35:24Z
<p>Hage: </p>
<hr />
<div>=== 塩 ===<br />
VPCで利用する、Network ACL (NaCl)のこと<br />
<br />
=== スーさん ===<br />
S3の読み方。S3の3は、三國連太郎の三と≒。<br />
<br />
=== 恵比寿 ===<br />
Amazon Elastic Block Store。略してエビス。</div>
Hage
http://www.momiage.com/wiki/index.php/Serf%E3%81%A8GlusterFS%E3%81%A7Scalable%E3%81%AA%E5%85%B1%E6%9C%89%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%82%92%E4%BD%9C%E3%82%8B
SerfとGlusterFSでScalableな共有ディスクを作る
2014-08-13T09:49:44Z
<p>Hage: ページの作成:「「SerfとGlusterFSでScalableな共有ディスクを作る」を作成中」</p>
<hr />
<div>「SerfとGlusterFSでScalableな共有ディスクを作る」を作成中</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-08-13T09:49:28Z
<p>Hage: /* Toolたちのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用WebAPI風のもの]]<br />
* [[SerfとGlusterFSでScalableな共有ディスクを作る]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSのメモ]]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%81%82%E3%81%A0%E3%81%99%E3%81%AE%E5%85%88%E7%94%9F%E6%96%B9
あだすの先生方
2014-08-12T14:33:52Z
<p>Hage: </p>
<hr />
<div><br /><br />
'''音楽関連の先生'''<br /><br />
<br /><br />
一時期、アニメソング界では超有名な先生に唄を教えていただいておりました。<br /><br />
世界で一番有名な日本人(Wikipedia翻訳言語数調べ)にもなっていた偉大な方です!<br /><br />
ライヴ・イベントでのコーラスや、レコーディングなどなども参加させていただきました。<br /><br />
大変貴重な経験で、音楽をお仕事にする方の偉大さを、身をもって経験できました!<br /><br />
ありがとうございました!!!<br /><br />
<br /><br />
'''あだすにコンピュータを教えてくれた偉大な方々'''<br /><br />
<br /><br />
・近所のXEROXのマイコンショップの方々<br /><br />
お姉さんや店長さんが優しくしてくれました。まだ、小学生低学年だったからかな?<br /><br />
あの頃は、みんなマイコンショップに通ってましたね~。<br /><br />
ベーマガ(マイコンBASICマガジン)片手に、プログラム打ち込んでは、はしゃいでました。<br /><br />
何の因果か、現在は電波新聞社の近所に勤めています。<br /><br />
初めてプログラム打ち込んだのは、MZ-80Bか、MZ-2000か、そのあたりです。<br /><br />
<br /><br />
僕のことは覚えていなくてあたりまえですが、ひじょ~にお世話になりました!<br /><br />
ありがとうございました!!!<br /><br />
<br /><br />
・さとうこういちくん<br /><br />
やはり小学生のころですが、<br /><br />
姉の同級生の、さとうこういちくんがパソコンを教えてくれました。<br /><br />
マイコンショップ仲間だったのかな?記憶があいまいです。<br /><br />
後に、さとうこういちくんは、「天までとどけ」というお昼のドラマに出て、<br /><br />
長男の正平役をやってましたね~。<br /><br />
いまは、「高尾晃市」という名前に変わってるんですね!<br /><br />
調べちゃいました。<br /><br />
<br /><br />
僕のことは覚えていないかと思いますが、ひじょ~にお世話になりました!<br /><br />
ありがとうございました!!!<br /><br />
<br /><br />
・パソコン通信(BBS)関連の方々<br /><br />
中学生になり、学校にあったモデム(300ボー)をこっそり借りてきて、パソコン通信をやり始めました。<br /><br />
そこで、ひじょ~に優しい方々からいろいろお教えいただきました。<br /><br />
が、無責任な行動ばかりで、ひじょ~~~~にご迷惑をおかけしまくりしてしまいました。<br /><br />
また、みかか代(電話代のこと)が高額になったり、(うちは商売で電話ひいているのに)回線占有してしまったり<br /><br />
して、親からパソコン通信禁止令が出てしまったりして、サドンデスったりしちゃいました。<br /><br />
自業自得です。<br /><br />
ほんと、パソコン通信関連の方々には、恩をあだで返すようにご迷惑おかけしまくりだったのが、今でも心残りです。<br /><br />
業界狭いので、もし、なにかしらの機会にお会いできたら、ほんと「申し訳ありませんでした」と言いたいです。<br /><br />
<br /><br />
当時、ぼくは「はげ」という、今考えると危険なハンドルネームでパソコン通信してました。<br /><br />
みなさん、呼びづらくてすいませんでした!特にオフ会では。<br /><br />
そんなぼくは、八王子に住んでいたので、0426区域か、042x区域じゃないと電話代が高くてできなかったので、<br /><br />
その範囲でBBSを探していました~。<br /><br />
そして、いろんな方々にお世話になってしまいました。<br /><br />
その中でも、よく覚えているのは、次のBBSの方々です。<br /><br />
<br /><br />
・パソコン通信BBS「High Tail Net」の方々<br /><br />
地元、八王子の高尾のネット<br /><br />
momoさんの襲撃という言葉にびびったりした<br /><br />
などなどの思い出があります。<br /><br />
・パソコン通信BBS「れんこんネット」の方々<br /><br />
地元、八王子のネット<br /><br />
原発についていろいろ学びました<br /><br />
レジNさんにモデム作ってもらったり、天才はたくんにお世話になったり<br /><br />
などなどの思い出があります。<br /><br />
・パソコン通信「STUDIO☆FEMY」の方々<br /><br />
後にBio 100%になる方々がいらっしゃったネット<br /><br />
femyさんにグライコいただいたり、altyさんがビールをラッパ飲みしながら調布を歩いていたり<br /><br />
などなどの思い出があります。<br /><br />
<br /><br />
いやぁ~。すごい人たちばっかりでいま思い返すと逆にあれですね!<br /><br />
<br /><br />
また、当時NiftyServeにインターネットゲートウェイ的なものがあって、IP Unreachableなのがふつーの時代に、NiftyServe経由でインターネットへtelnetできてました!わたくしが初めてインターネットをしたのは、そのNiftyさんから海外のShoppingSite(?)へtelnetにてつないだ時です逆に!<br /><br />
そして、いろいろあって、今に至る・・・</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-30T03:49:38Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
といいつつ、とりあえず載せてみました。英語が間違っているとしても![https://github.com/yaggytter/vyos-serf-vpn https://github.com/yaggytter/vyos-serf-vpn]<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。もしくは、[http://momiage.com/software/serf-keygen-js/ serf-keygen-js]ここから適当にひとつ取ってきてください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* こんな感じ<br />
[[Image:Vpnmonitor.png]]<br />
<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
※うまく行かない場合は、updateconcheck.sh内のqueryのtimeoutを長くしてみてください。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただいたスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-29T11:23:36Z
<p>Hage: /* VPN設定情報 */</p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。もしくは、[http://momiage.com/software/serf-keygen-js/ serf-keygen-js]ここから適当にひとつ取ってきてください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* こんな感じ<br />
[[Image:Vpnmonitor.png]]<br />
<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
※うまく行かない場合は、updateconcheck.sh内のqueryのtimeoutを長くしてみてください。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただいたスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/TODO%E3%83%AA%E3%82%B9%E3%83%88
TODOリスト
2014-07-29T02:25:54Z
<p>Hage: ページの作成:「* NiftyCloud+さくらのクラウド+AWS+GCE でSerfVPNを相互に接続できるか試す ** できればTerraformを使って * VyOSにJuniperのVPNMonitorみたい...」</p>
<hr />
<div>* NiftyCloud+さくらのクラウド+AWS+GCE でSerfVPNを相互に接続できるか試す<br />
** できればTerraformを使って<br />
* VyOSにJuniperのVPNMonitorみたいな機能を入れる<br />
** さとーさんのスライドを参考に<br />
* Cocos2d-xでゲーム風なものを作って一本出す<br />
* githubの使い方を覚える<br />
** これを最初にやるべきでは・・・</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2014-07-29T02:22:17Z
<p>Hage: /* 自分用 */</p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Services (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
* [[サンドボックス]]<br />
* [[TODOリスト]]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2014-07-29T02:21:59Z
<p>Hage: </p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Services (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
[[サンドボックス]]<br />
[[TODOリスト]]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-28T16:24:59Z
<p>Hage: /* 発表資料とか */</p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* こんな感じ<br />
[[Image:Vpnmonitor.png]]<br />
<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
※うまく行かない場合は、updateconcheck.sh内のqueryのtimeoutを長くしてみてください。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただいたスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-28T16:24:30Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* こんな感じ<br />
[[Image:Vpnmonitor.png]]<br />
<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
※うまく行かない場合は、updateconcheck.sh内のqueryのtimeoutを長くしてみてください。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただくスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-28T16:23:09Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
こんな感じ<br />
[[Image:Vpnmonitor.png]]<br />
<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただくスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Vpnmonitor.png
ファイル:Vpnmonitor.png
2014-07-28T16:22:35Z
<p>Hage: </p>
<hr />
<div></div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-28T16:20:24Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
* こんな感じです<br />
[[Image:Awsuserdataserfvpn.png]]<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただくスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Awsuserdataserfvpn.png
ファイル:Awsuserdataserfvpn.png
2014-07-28T16:19:05Z
<p>Hage: </p>
<hr />
<div></div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-27T01:38:17Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。※という予定ですが、いまはバグがあって他のNodeと合わせる必要があります(^^;)<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただくスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-26T06:00:09Z
<p>Hage: ちょっと整形</p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
=== まずはLaunchボタンから ===<br />
* VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
** 現状は、TokyoRegionのみに準備してます。必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
<br />
※別リージョン用のAMIを作成する方は、AMI作成前に、<br />
<pre><br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
</pre><br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
=== VPN設定情報 ===<br />
* Launch時に、UserDataに以下を設定します。<br />
<pre><br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
</pre><br />
** PREKEY (必須)<br />
*** IPSec接続用のPreSharedKeyです。<br />
*** 特に他のNodeと合わせる必要はありません。<br />
** SERFKEY (必須)<br />
*** SerfのEncription用のKeyです。<br />
*** このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、他のNodeと合わせる必要があります。<br />
*** KeyはどっかのマシンにSerfを入れて、 serf keygen コマンドで生成したものを使ってください。<br />
** JOINIP (必須)<br />
*** Join先のNodeのIPアドレスです。<br />
*** 基本的にはGlobalIPアドレスになりますが、まず最初のNodeを立ち上げるときには、 127.0.0.1 で大丈夫です。<br />
** ROLE (任意)<br />
*** まだ実装してませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
** DISPNAME (任意)<br />
*** 表示用の名前です。<br />
*** 各種表示される部分に出てくる名前になります。実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
** LOCALNET (任意)<br />
*** IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
*** 省略すると、自分のSubnetを指定したことになります。<br />
*** AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingをPeerに伝播させることができます。<br />
*** また、自分の裏にさらにSubnetがいる場合は、もう少し大きく 10.0.0.0/10 とかも書けます。<br />
*** いまのところ1つのCIDRしか書けません・・・<br />
<br />
=== 他のAWS設定 ===<br />
* セキュリティグループ<br />
** IPSecとSerfのプロトコルが通るようにしてください。<br />
*** UDP 500<br />
*** ESP<br />
*** TCP/UDP 7946<br />
** あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
* Source / Dest Check<br />
** Launch後は、速やかにインスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
=== VPNだから相手がいないとね☆ ===<br />
* あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== Serfで構築する利点 ==<br />
*どれか1つのNodeのGlobalIPを知っていればそれでOK!万事休す!<br />
**なぜJOINするのか?そこにNODEがあるから。<br />
* あとはほとんど気にしなくてよい<br />
* 全VPNルータを設定しなくてもよい<br />
* 逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
== 今後の予定 ==<br />
* 同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
* ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
* 同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
== 現状の課題 ==<br />
* セキュリティ<br />
** Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
* 品質<br />
** 本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
** コマンドが重複してたりとか、謎のsleep入れてたりとか・・・<br />
<br />
== AWS以外でもたぶん動きます ==<br />
<br />
* スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
* /opt/serf に全体的に入っています。<br />
* /opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
== SerfによるMonitoringとか ==<br />
* /opt/serf/etc/webmonitor/ に、このSerfで作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
* どっかのNodeで<br />
<pre><br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
</pre><br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
== 発表資料とか ==<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただくスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-26T05:20:22Z
<p>Hage: </p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
現状は、TokyoRegionのみに準備してます。<br />
必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
※AMI作成前に、<br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
Launch時に、UserDataに以下を設定します。<br />
<br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
<br />
PREKEY (必須)<br />
IPSec接続用のPreSharedKeyです。<br />
特に他のNodeと合わせる必要はありません。<br />
<br />
SERFKEY (必須)<br />
SerfのEncription用のKeyです。<br />
このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、<br />
他のNodeと合わせる必要があります。<br />
<br />
JOINIP (必須)<br />
Join先のNodeのIPアドレスです。<br />
基本的にはGlobalIPアドレスになりますが、<br />
まず最初のNodeを立ち上げるときには、<br />
127.0.0.1<br />
で大丈夫です。<br />
<br />
ROLE (任意)<br />
まだ使ってませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
<br />
DISPNAME (任意)<br />
表示用の名前です。<br />
各種表示される部分に出てくる名前になります。<br />
実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
<br />
LOCALNET (任意)<br />
IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
省略すると、自分のSubnetを指定したことになります。<br />
AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingを伝播させることができます。<br />
また、自分の裏にさらにSubnetがいる場合は、もう少し大きく<br />
10.0.0.0/10<br />
とかも書けます。<br />
<br />
セキュリティグループ<br />
<br />
IPSecとSerfのプロトコルが通るようにしてください。<br />
UDP 500<br />
ESP<br />
TCP/UDP 7946<br />
あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
Launch後は、速やかに、<br />
インスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== なにが利点か ==<br />
<br />
なにが利点か<br />
・どれか1つのGlobalIPを知っていればそれでOK!万事休す!<br />
なぜJOINするのか?そこにNODEがあるから。<br />
・あとはほとんど気にしなくてよい<br />
・全VPNルータを設定しなくてもよい<br />
・逆に、いつ切断してもOK<br />
※悪いことにはマスクがかかっています<br />
<br />
今後の予定<br />
・同一セグメント内に2台以上いた場合は勝手に冗長構成にする⇒AWSのIAM RoleとRouteTableを使えばたぶんすぐできる<br />
・ROLEによる複数フルメッシュVPN群の作成⇒フルメッシュVPN群同士をつなぐのも!<br />
・同一セグメントも気にしないでつなぎたい⇒L2TPv3も組み合わせる?<br />
<br />
<br />
課題<br />
・セキュリティ<br />
Serfのencryptionのみなので・・・VyOSのFirewallで対応?最初のjoin先は手動で開ける、他はjoinメッセージを受けたら対象GlobalIPを開ける???う~ん。。。<br />
・品質<br />
本番環境への適用に向けて、もう少し安定するようにしたい雰囲気!<br />
<br />
<br />
== おまけ ==<br />
<br />
スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
/opt/serf に全体的に入っています。<br />
/opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
/opt/serf/etc/webmonitor/ に、作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
どっかのNodeで<br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。<br />
<br />
[https://speakerdeck.com/yaggy/build-fullmesh-vpn-by-vyos-with-serf-vyos-users-meeting-japan-number-1-lt VyOS Users Meeting Japan #1 にてLTさせていただくスライドはこちら!]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-07-26T05:06:53Z
<p>Hage: とりあえず保存</p>
<hr />
<div>== 経緯 ==<br />
<br />
AWS上で、複数Regionを一つの固まりと見せるようにするためスター型風トポロジでVyattaにてVPNを構築し運用していてとっても便利でした。<br />
しかし!あたりまえですが、接続が集中しているVyattaが落ちると、そこから先の経路が全滅します。あたりまえですが!あたりまえですが!<br />
Failoverするようにしても、やっぱり一時的に全滅は痛い・・・<br />
<br />
そこで!やっぱ、フルメッシュでつないだ方がよくね?<br />
でも、、、トンネルの数!!!拠点増えた時めんどい?!<br />
15台のVyattaをつなぐと、トンネルの数は、15x(15-1)/2=。。。<br />
<br />
あれ?こういう時にSerfって使うんじゃないの?<br />
<br />
ということで!<br />
<br />
== 作ってみた感じ(アルファ版) ==<br />
<br />
とりあえず、GitHubの使い方がいまいちわからないので、AWSにAMIを用意してみました。<br />
GitHubのこと、誰か口頭で教えてください!<br />
<br />
== 動かし方 ==<br />
<br />
いまのところ、AmazonWebServices(AWS)での動かし方を書いておきます。<br />
<br />
VyOS 1.0.4 amd64 with Serf FullmeshVPN alpha (HVM) - ami-e5abf6e4 というAMIを探してLaunchします。<br />
現状は、TokyoRegionのみに準備してます。<br />
必要な方は、AMIからLaunch後にAMIを作成して、別リージョンにコピーしてお使いください。<br />
※AMI作成前に、<br />
configure <br />
delete interfaces ethernet eth0 hw-id<br />
commit<br />
save<br />
を行ってください。<br />
行わないと、コピーしたAMIからLaunchしても、<br />
MACアドレスが変更になって、SSH接続できなくなります。<br />
<br />
Launch時に、UserDataに以下を設定します。<br />
<br />
例:<br />
PREKEY,aaabbbPREKEY22cccddd<br />
SERFKEY,6UIpjHbohEyOETGiuNqgNQ==<br />
ROLE,vpngrp1<br />
JOINIP,127.0.0.1<br />
DISPNAME,VyOSSerf1-Tokyo<br />
LOCALNET,10.15.0.0/16<br />
<br />
PREKEY (必須)<br />
IPSec接続用のPreSharedKeyです。<br />
特に他のNodeと合わせる必要はありません。<br />
<br />
SERFKEY (必須)<br />
SerfのEncription用のKeyです。<br />
このKeyをもとにSerfにJoinし暗号化を行うので(たぶん)、<br />
他のNodeと合わせる必要があります。<br />
<br />
JOINIP (必須)<br />
Join先のNodeのIPアドレスです。<br />
基本的にはGlobalIPアドレスになりますが、<br />
まず最初のNodeを立ち上げるときには、<br />
127.0.0.1<br />
で大丈夫です。<br />
<br />
ROLE (任意)<br />
まだ使ってませんが、将来的にはこのROLEに応じてVPNの接続グループを分ける予定<br />
<br />
DISPNAME (任意)<br />
表示用の名前です。<br />
各種表示される部分に出てくる名前になります。<br />
実際のNode名、マシン名、NameTagと全然違ってもOKです。<br />
<br />
LOCALNET (任意)<br />
IPSec接続先ノードに対して自分の裏にいるネットワークを教えるためにCIDRを書きます。<br />
省略すると、自分のSubnetを指定したことになります。<br />
AWSの場合は、VPCのNetworkAddressを書くと、そのVPC全体へのRoutingを伝播させることができます。<br />
また、自分の裏にさらにSubnetがいる場合は、もう少し大きく<br />
10.0.0.0/10<br />
とかも書けます。<br />
<br />
セキュリティグループ<br />
<br />
IPSecとSerfのプロトコルが通るようにしてください。<br />
UDP 500<br />
ESP<br />
TCP/UDP 7946<br />
あたりを開ければよいかと思いますが、良くわからん方は、とりあえずフルオープン!で後で閉じて行きましょう。逆に。<br />
<br />
Launch後は、速やかに、<br />
インスタンスの、 Source / Dest Check を Disable にします。<br />
<br />
あとは、同様の手順で2台以上動かすと、勝手にフルメッシュVPNが構築されちゃうっていう寸法です!<br />
<br />
== おまけ ==<br />
<br />
スクリプトは全体的に、ただのテキスト処理をひたすらやっている、vbashのシェルスクリプトです。<br />
/opt/serf に全体的に入っています。<br />
/opt/serf/bin/getinfo.sh にて、AWSのUserDataやMetaDataから情報を取得する処理を行っているので、そこのAWS依存部分を書き換えれば他のクラウドや他の仮想化環境でも動くはず!(たぶん)<br />
<br />
/opt/serf/etc/webmonitor/ に、作ったフルメッシュVPNの状態を可視化するもどきのサンプルページが入っているので、適当なWebServerでそこを見れるようにすれば、なんとなくグラフっぽくなるかも?!<br />
どっかのNodeで<br />
cd /opt/serf/bin ; ./updateconcheck.sh &<br />
しておくと、serf queryでVPN接続したmember間のlatency(rtt)をとって返してくれたものを、Web用のデータにします。</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8WebAPI%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用WebAPI風のもの
2014-07-07T10:32:54Z
<p>Hage: ページの作成:「 VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、Amazon Web Services(AWS)にはServi...」</p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、Amazon Web Services(AWS)にはServiceごとにまちまちにしか用意されてなさそうだったので、WebAPI風に見せかけるやつをあれしました。S3用のREST情報や、商品検索(A2S ECS)などのREST API情報は見つかるのですが、EC2やRoute53、IAMやRDSなど他のサービスについては見つかりませんでした。ちゃんとしたものがあるかもしれませんが、とりあえず手っ取り早くWebAPI風味に仕立てました。<br />
<br />
※あくまでも「風」です。全然RESTfulではありません。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
※あたりまえですが、IAMユーザを発行してそのKEYでやりましょう。<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("`", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-07-07T10:32:40Z
<p>Hage: /* Toolたちのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用WebAPI風のもの]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSのメモ]]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8REST_API%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用REST API風のもの
2014-07-07T10:31:39Z
<p>Hage: </p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、Amazon Web Services(AWS)にはServiceごとにまちまちにしか用意されてなさそうだったので、WebAPI風に見せかけるやつをあれしました。S3用のREST情報や、商品検索(A2S ECS)などのREST API情報は見つかるのですが、EC2やRoute53、IAMやRDSなど他のサービスについては見つかりませんでした。ちゃんとしたものがあるかもしれませんが、とりあえず手っ取り早くWebAPI風味に仕立てました。<br />
<br />
※あくまでも「風」です。全然RESTfulではありません。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
※あたりまえですが、IAMユーザを発行してそのKEYでやりましょう。<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("`", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%AE%E3%83%A1%E3%83%A2
VyOSのメモ
2014-07-01T11:03:09Z
<p>Hage: ページの作成:「== @j3tm0t0 さんの VyOS AMI(PV) を1.0.4にVersionUpする == <pre> vyos@vyos:~$ add system image http://mirror.vyos.net/iso/release/1.0.4/vyos-1.0.4-amd64.iso </pre>...」</p>
<hr />
<div>== @j3tm0t0 さんの VyOS AMI(PV) を1.0.4にVersionUpする ==<br />
<br />
<pre><br />
vyos@vyos:~$ add system image http://mirror.vyos.net/iso/release/1.0.4/vyos-1.0.4-amd64.iso<br />
</pre><br />
Enter叩きまくる<br />
<pre><br />
vyos@vyos:~$ set system image default-boot 1.0.4<br />
vyos@vyos:~$ sudo vi /boot/grub/menu.lst<br />
</pre><br />
内容こんな感じ?<br />
<pre><br />
default=0<br />
timeout=3<br />
hiddenmenu<br />
<br />
title VyOS 1.0.4<br />
root (hd0)<br />
kernel /boot/1.0.4/vmlinuz boot=live vyatta-union=/boot/1.0.4 root=/dev/xvda1 console=hvc0<br />
initrd /boot/1.0.4/initrd.img<br />
</pre><br />
<br />
<pre><br />
vyos@vyos:~$ reboot<br />
<br />
vyos@vyos:~$ show version<br />
Version: VyOS 1.0.4<br />
Description: VyOS 1.0.4 (hydrogen)<br />
Copyright: 2014 SO3 Group<br />
Built by: maintainers@vyos.net<br />
Built on: Mon Jun 16 15:58:49 UTC 2014<br />
Build ID: 1406161558-32e5690<br />
System type: x86 64-bit<br />
Boot via: image<br />
Hypervisor: Xen<br />
Uptime: 11:01:18 up 1 min, 1 user, load average: 0.16, 0.10, 0.04<br />
</pre><br />
<br />
う〜〜〜ん。。。なんか違う気がするけど、逆にとりあえず1.0.4試してみます!</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-07-01T10:29:31Z
<p>Hage: /* AWSでのVPNのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSのメモ]]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-06-27T04:06:55Z
<p>Hage: </p>
<hr />
<div>* VyOSを入れる<br />
* Serfを入れる<br />
* VPN接続の流れ<br />
** join params<br />
*** GlobalIP<br />
*** Pre shared key<br />
*** LAN側ネットワークIP<br />
<br />
* 課題<br />
** Security<br />
*** SerfのEncryptionだけでインターネットにさらすのはちょっと不安<br />
*** 定期的に鍵を変えるようにするだけでは・・・<br />
** HA<br />
*** どうやって冗長化するかはこれから考える</div>
Hage
http://www.momiage.com/wiki/index.php/Serf%E3%81%A7%E9%80%9A%E4%BF%A1%E8%A6%81%E4%BB%B6%E3%81%8C%E6%BA%80%E3%81%9F%E3%81%9B%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%82%92%E8%87%AA%E5%8B%95%E3%83%86%E3%82%B9%E3%83%88(Serverspec%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB)%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%81%A8%E3%81%84%E3%81%86%E8%A9%A6%E3%81%BF
Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み
2014-06-27T04:03:34Z
<p>Hage: ページの作成:「試み始めたとこ!なう中」</p>
<hr />
<div>試み始めたとこ!なう中</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-06-27T04:03:15Z
<p>Hage: /* AWSでのVPNのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
* [[Serfで通信要件が満たせているかを自動テスト(Serverspecのように)してみようという試み]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/VyOS%E3%81%ABSerf%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%83%95%E3%83%AB%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5VPN%E3%82%92%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%AC%E3%82%B9%E3%81%A7%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E8%A9%A6%E3%81%BF
VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み
2014-06-25T04:01:09Z
<p>Hage: ページの作成:「* VyOSを入れる * Serfを入れる * VPN接続の流れ ** join params *** GlobalIP *** Pre shared key *** LAN側ネットワークIP」</p>
<hr />
<div>* VyOSを入れる<br />
* Serfを入れる<br />
* VPN接続の流れ<br />
** join params<br />
*** GlobalIP<br />
*** Pre shared key<br />
*** LAN側ネットワークIP</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-06-25T03:59:16Z
<p>Hage: </p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
* [http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
* [https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
* [[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]]<br />
<br />
== maybe better practice のお話 ==<br />
* [[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-06-25T03:58:44Z
<p>Hage: /* AWSでのVPNのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
*[https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
*[VyOSにSerfを入れてフルメッシュVPNをメンテナンスレスでやってみる試み]<br />
<br />
== maybe better practice のお話 ==<br />
*[[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8REST_API%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用REST API風のもの
2014-06-18T05:18:47Z
<p>Hage: </p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、Amazon Web Services(AWS)にはServiceごとにまちまちにしか用意されてなさそうだったので、REST API風に見せかけるやつをあれしました。S3用のREST情報や、商品検索(A2S ECS)などのREST API情報は見つかるのですが、EC2やRoute53、IAMやRDSなど他のサービスについては見つかりませんでした。ちゃんとしたものがあるかもしれませんが、とりあえず手っ取り早くREST風味に仕立てました。<br />
<br />
※あくまでも「風」です。全然RESTfulではありません。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
※あたりまえですが、IAMユーザを発行してそのKEYでやりましょう。<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("`", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%82%AA%E3%83%B3%E3%83%97%E3%83%AC%E3%83%9F%E3%82%B9%E3%81%8B%E3%82%89DirectConnect%E7%B5%8C%E7%94%B1%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A0%E3%81%91%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%92%E9%80%9A%E3%82%89%E3%81%AA%E3%81%84%E3%81%A7S3%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B
オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする
2014-05-14T16:43:56Z
<p>Hage: ページの作成:「オンプレミスなEnterpriseSystemの人は、インターネットとつながるのを嫌がります。 でも、S3は使いたい。 そんなときはDirectConne...」</p>
<hr />
<div>オンプレミスなEnterpriseSystemの人は、インターネットとつながるのを嫌がります。<br />
でも、S3は使いたい。<br />
<br />
そんなときはDirectConnect経由でRoutingTableをうまいことやって、できるだけインターネットを通らないようにします。<br />
※SocksProxyなどをEC2で作ると、EC2の帯域を広くとるためお金がかかるので、EC2はなるべく通さない方法にします。<br />
<br />
詳細は後日!</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-05-14T16:41:43Z
<p>Hage: </p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
*[https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
<br />
== maybe better practice のお話 ==<br />
*[[オンプレミスからDirectConnect経由でできるだけインターネットを通らないでS3にアクセスする]]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-04-22T02:44:36Z
<p>Hage: </p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
*[https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Services(AWS) #jvum2014s]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Services_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Services (AWS) 関係のお話
2014-04-22T02:44:13Z
<p>Hage: ページの作成:「== Cloud Design Pattern もどき == * CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続) == Toolたちのお話 == * AWS用REST API...」</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
*[https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Service(AWS) #jvum2014s]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2014-04-22T02:43:19Z
<p>Hage: </p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Services (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
[[サンドボックス]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Service_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Service (AWS) 関係のお話
2014-04-17T07:15:50Z
<p>Hage: </p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== AWSでのVPNのお話 ==<br />
*[https://speakerdeck.com/yaggy/vyattadeyatutemasu-multi-region-vpn-on-amazon-web-service-number-jvum2014s Vyattaでやってます! Multi Region VPN on Amazon Web Service(AWS) #jvum2014s]<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
メインページ
2014-04-16T16:03:35Z
<p>Hage: /* ソフトウェア関係 */</p>
<hr />
<div>= もみあげどっとこむ。 =<br />
<br />
ようこそおいでくださいました。<br />
なんか、逆にすいません。<br />
こんな小汚いサイトへ。<br />
wikiの使い方が間違っていたとしても!<br />
<br />
== ソフトウェア関係 ==<br />
<br />
*[http://www.soisoi.mobi/shikanai/ しかない計算機]<br />
あと何回あえるか、など計算してくれます。定量化すると儚くて切なくてがんばろって思いますね!<br />
<br />
*[http://www.vector.co.jp/vpack/browse/person/an004242.html ヴェクターのいらなそうなソフトウェアのページ]<br />
<br />
*[http://dietmemo.net ダイエットメモらー]<br />
携帯から記録する、ダイエット支援システム<br />
<br />
*[[mixiメールサーバ(もどき)]]<br />
mixiのメッセージをふつーのメールのソフトから送受信できるといいな<br />
<br />
*[http://sourceforge.jp/projects/asom a source of music]<br />
プログラムのソースコードから、音楽を生成します。的なソフト。みたいな。<br />
<br />
*[http://msession.net/ MusicSessionPartSystem]<br />
音楽セッション曲決め支援システム。セッション会やバンドでやる曲を決めるのに便利かも?<br />
<br />
*[http://tweetssummary.appspot.com/tweetssummary/ TweetsSummary(bot)]<br />
あなたのタイムラインやリストを、てきと~~~に要約して、つぶやいてくれます。というbotです。<br />
<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app 巻尺mm]<br />
*[https://play.google.com/store/apps/details?id=com.momiage.android.app.tapemesureinch 巻尺inch]<br />
あなたのAndroid端末を、巻尺代わりに使えるようにしてくれるかもしれない可能性を秘めてなくもないと一部ではささやかれているかもしれないアプリのようなあれです。<br />
<br />
== IT全般 ==<br />
*[[用語集]]<br />
*[[Amazon Web Service (AWS) 関係のお話]]<br />
<br />
== 記録 ==<br />
<br />
[[あだすの先生方]]<br />
<br />
== 自分用 ==<br />
<br />
[[サンドボックス]]</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8REST_API%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用REST API風のもの
2014-04-10T03:26:43Z
<p>Hage: </p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、Amazon Web Services(AWS)にはServiceごとにまちまちにしか用意されてなさそうだったので、REST API風に見せかけるやつをあれしました。S3用のREST情報や、商品検索(A2S ECS)などのREST API情報は見つかるのですが、EC2やRoute53、IAMやRDSなど他のサービスについては見つかりませんでした。ちゃんとしたものがあるかもしれませんが、とりあえず手っ取り早くREST風味に仕立てました。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
※あたりまえですが、IAMユーザを発行してそのKEYでやりましょう。<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("`", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8REST_API%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用REST API風のもの
2014-04-10T01:27:52Z
<p>Hage: </p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、AWSにはServiceごとにまちまちにしか用意されてなさそうだったので、REST API風に見せかけるやつをあれしました。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("`", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Service_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Service (AWS) 関係のお話
2014-04-07T11:13:54Z
<p>Hage: /* Toolたちのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Vyatta Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/Amazon_Web_Service_(AWS)_%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%8A%E8%A9%B1
Amazon Web Service (AWS) 関係のお話
2014-04-07T11:05:58Z
<p>Hage: /* Toolたちのお話 */</p>
<hr />
<div>== Cloud Design Pattern もどき ==<br />
* [[CDPもどき:InterConnectCloudHubパターン(複数CloudHubの相互接続)]]<br />
<br />
== Toolたちのお話 ==<br />
* [[AWS用REST API風のもの]]<br />
*[http://www.momiage.com/vyatta/AutoScaleupRouter.mp4 Auto Scaleup Routerっぽい雰囲気の動画]<br />
** RSC(Routerだって Scaleしてもいいじゃない Cloudだもの の略)<br />
** awkやsleepなどは手抜きなのでちゃんと作るのがおすすめ!<br />
<br />
== 用語集 ==<br />
* [[AWS関連用語集]]</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8REST_API%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用REST API風のもの
2014-04-07T11:02:21Z
<p>Hage: /* 作り方の雰囲気 */</p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、AWSにはServiceごとにまちまちにしか用意されてなさそうだったので、REST API風に見せかけるやつをあれしました。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage
http://www.momiage.com/wiki/index.php/AWS%E7%94%A8REST_API%E9%A2%A8%E3%81%AE%E3%82%82%E3%81%AE
AWS用REST API風のもの
2014-04-07T11:01:52Z
<p>Hage: ページの作成:「 VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、AWSにはServiceごとにまちま...」</p>
<hr />
<div><br />
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、AWSにはServiceごとにまちまちにしか用意されてなさそうだったので、REST API風に見せかけるやつをあれしました。<br />
<br />
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。<br />
<br />
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?<br />
<br />
※ちゃんと作るつもりはありません。<br />
<br />
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます<br />
<br />
※せめてHTTPSにしましょう<br />
<br />
== 作り方の雰囲気 ==<br />
<br />
あくまでも雰囲気なので、この通りやってもだめかもしれません。<br />
<br />
AmazonLinuxをLaunch<br />
sshでAmazonLinuxに入る<br />
<br />
<pre><br />
sudo yum -y install httpd python mod_python aws-cli<br />
</pre><br />
で必要そうなものを入れる<br />
<br />
/etc/httpd/conf.d/python.conf<br />
に<br />
<pre><br />
<br />
Alias /test/ "/var/www/test/"<br />
<br />
<Directory "/var/www/test"><br />
<br />
AllowOverride None<br />
Order allow,deny<br />
Allow from all<br />
<br />
AddHandler mod_python .py<br />
PythonHandler mod_python.publisher<br />
PythonDebug On<br />
<br />
</Directory><br />
<br />
</pre><br />
<br />
こんな感じに足す<br />
<br />
/var/www/test/aws.py<br />
<br />
を<br />
<br />
<source lang="python"><br />
<br />
#!/usr/bin/python2<br />
# -*- coding: utf-8 -*-<br />
<br />
import os<br />
import shutil<br />
import sys<br />
import codecs<br />
import datetime<br />
import locale<br />
import commands<br />
<br />
from mod_python import apache,util<br />
<br />
def escapecmd(arg):<br />
<br />
ret = arg.replace(";", "")<br />
ret = ret.replace("<", "")<br />
ret = ret.replace(">", "")<br />
ret = ret.replace("$", "")<br />
<br />
return ret<br />
<br />
<br />
def restapi(req, awsid, awskey, region, cmd, subcmd, options):<br />
<br />
ret = apache.OK<br />
json = ""<br />
req.content_type = "application/json"<br />
<br />
awsid = escapecmd(awsid)<br />
awskey = escapecmd(awskey)<br />
region = escapecmd(region)<br />
cmd = escapecmd(cmd)<br />
subcmd = escapecmd(subcmd)<br />
options = escapecmd(options)<br />
<br />
line = " export AWS_ACCESS_KEY_ID=" + awsid<br />
line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey<br />
line += " ; aws " <br />
line += " --output json"<br />
line += " --region " + region<br />
line += " " + cmd<br />
line += " " + subcmd<br />
line += " " + options<br />
<br />
c_status, c_output = commands.getstatusoutput(line)<br />
json = c_output<br />
<br />
if 0 != c_status:<br />
ret = apache.HTTP_BAD_REQUEST<br />
<br />
req.write(json)<br />
<br />
return ret<br />
<br />
</source><br />
<br />
こんな感じで作る<br />
<br />
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!<br />
<br />
<pre><br />
sudo service httpd restart<br />
</pre><br />
で反映!<br />
<br />
で curl なり wget なり Browser なりで、<br />
<br />
http://AmazonLinuxにつけたElasticIP/test/aws.py/restapi?awsid=IAMUserのAWS_ACCESS_KEY_ID&awskey=IAMUserのAWS_SECRET_ACCESS_KEY&region=Regionの識別子&cmd=メインコマンド&subcmd=サブコマンド&options=その他オプション<br />
<br />
でアクセス!<br />
<br />
例.<br />
<br />
http://ec2-1/test/aws.py/restapi?awsid=ID&awskey=SECKEY&region=ap-northeast-1&cmd=ec2&subcmd=describe-instances&options=--instance-ids%20i-abcdefggg"<br />
<br />
※繰り返しではございますが、せめてHTTPSにはしましょうね</div>
Hage