タグ別アーカイブ: Amazon Linux

kitchen-dockerでEC2の料金をかけず、高速にAmazon LinuxでのCookbookのテストを行う方法

2014.04.28 追記:

ライセンスについてのご質問をいただいたので追記しました。

 

最近、Kitchen-dockerでCookbookのテストを流すようになり、

捗ってはいたのですが、

仕事ではCentOSとAmazon Linuxの両方を使うことがあり、

お互いRHEL互換で大体同じで通るとはいえ、

ちゃんと両方でテストしないといけないよな〜と思っていました。

でも、Amazon Linuxを使おうと思うと、

kitchen-ec2とかvagrant-awsとかで立ち上げる感じになって、

やっぱり仮想マシンの立ち上げが遅いんですよね。

あと、課金を気にしなきゃいけないのが一番やりにくい。

 

とりあえず、今やってるCookbookの充実&リファクタリングは早く終わらせたかったので、

CentOSだけで作って後で考えようかと思っていたのですが、

ちょっと良い方法を思いついたので試してみました。

 

 

その内容は、

「Amazon LinuxのDocker Imageって作れたらkitchen-dockerで使えたりしないのかな?」

 

って感じです。で、調べてみたら、

Amazon LinuxのDocker Imageを作った例

※「Amazon Linux Docker Image」のセクション

があったので、いけそうな気がしてやってみました。

 

以下、手順です。

※「marcy/amzn」の所は 各々のリポジトリ名に置き換えてください。

 

①まず、上記リンクの通りにDocker Imageを作成します。

 

②kitchen-dockerの実行に必要な変更を施します。

# docker run -t -i local/amzn /bin/bash
bash-4.1# rm -f /etc/ssh/ssh_host_*
bash-4.1# sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config

Docker Registoryへpushします。

# docker ps -a
 # docker commit ${CONTAINER ID} marcy/amzn
 # docker push marcy/amzn

※${CONTAINER ID}にはdocker ps -aで確認したCONTAINER IDが入ります。

④Tagを切ります(これは無くてもいけるけど)

# docker images
 # docker tag ${IMAGE ID} marcy/amzn:2014.03.1
 # docker push marcy/amzn

※${IMAGE ID}にはdocker imagesで確認したIMAGE IDが入ります。

 

実際には②で施した変更は実行してみて動かなくて直しました。

変更して再度pushするのは以下のような感じです。

# docker run -t -i marcy/amzn /bin/bash
 bash-4.1# 変更実施
 # docker commit ${CONTAINER ID} marcy/amzn
 # docker tag ${IMAGE ID} marcy/amzn:2014.03.1
 # docker push marcy/amzn

リポジトリ上だけ更新しても、

一度取得してしまったkithcen-docker実行側には反映されないので更新します。

# docker pull marcy/amzn:2014.03.1

 

こんな感じでできあがったDocker Imageを、

以下のような.kitchen.ymlで指定してやるとAmazon Linux のテストができます。

CentOSとかだとnameに「centos-6.4」と書くだけで良い感じにしてくれるのですが、

「marcy/amzn-2014.03.1」とかにしてしまうと、

nameから自動生成したファイルを使うような処理で、

スラッシュがディレクトリとして扱われて

「Not such file or directory」で落ちるので注意です。

 

これで、EC2の課金を気にせず、

かつ高速にAmazon Linuxでtest-kitchenのテストが回せます。

 

また、今回作成したDocker ImageはPublicにしてあるので、

使っていただいても構いません。

 

 

あれ?

ていうか、自分の所ではEC2上でやったのですが、

もしかしてコレって…

厳密に同じでは無いものの、

Amazon LinuxがAWS以外でも手軽に動かせるようになったってことでは???

 

2014.04.28 追記:

「ライセンスって大丈夫なの?」とご質問をいただきました。

調べた限りではライセンスについての記述は見当たらず、

AMIの公開が万人に許されていることから、

AWS EC2上かつ個人での利用については問題無い or グレーゾーンであると個人的には解釈していますが、

実施の際は自己責任でお願い致します。

また、よくあるご質問に以下の記載があるので、

Q: Amazon Linux AMI は EC2 以外でサポートされますか?

いいえ。Amazon Linux AMI は、Amazon EC2 内のみで使用可能です。

AWS EC2以外での動作は現状辞めておいた方が良さそうです。

 

 

 

全然別件ですが、もしChefネタなので一応宣伝。

札幌に在住の方がもし居ましたら、

こんなんやりますので、ご興味あればどうぞ。

Chef Meetup Sapporo

 

 


SoftEther VPN ClientのEC2(AmazonLinux)向け起動スクリプト

先日検証したSoftEther VPNですが、

早速ちょっと使う機会が出てきたので、自動起動用の起動スクリプトを作りました。

ちなみにServerの方は公式サイトに乗ってるそのまま。(結構下の方)

 

設定までは前に書いたのと同じです。

 

やりたかったこと

  1. まずは当然VPN Clientの自動起動
  2. VPN Serverへの自動接続
  3. Private IPの設定

 

基本は上述のServer起動スクリプトのパスやらをClientに変えただけ。

それにServerへの接続コマンド実行+IPアドレス設定って感じです。

 

こんな感じです(変数の内容は環境によって異なります)↓

 #!/bin/sh
 # chkconfig: 2345 99 01
 # description: SoftEther VPN Client
 DAEMON=/usr/local/vpnclient/vpnclient
 CMDPATH=/usr/local/vpnclient/vpncmd
 CMDHOST=localhost
 CMDCONN=local
 IP4ADDRESS=192.168.100.1
 VIRTUALIF=vpn_adapter01
 LOCK=/var/lock/subsys/vpnclient
 test -x $DAEMON || exit 0
 case "$1" in
 start)
 $DAEMON start
 touch $LOCK
 $CMDPATH /client $CMDHOST /cmd AccountConnect $CMDCONN
 ifconfig $VIRTUALIF $IP4ADDRESS
 ;;
 stop)
 $DAEMON stop
 rm $LOCK
 ;;
 restart)
 $DAEMON stop
 sleep 3
 $DAEMON start
 $CMDPATH $CMDTYPE $CMDHOST $CMDSUFFIX $CMDEXEC $CMDCONN
 ifconfig $VIRTUALIF $IP4ADDRESS
 ;;
 *)
 echo "Usage: $0 {start|stop|restart}"
 exit 1
 esac
 exit 0

変数名とかイケてないけど、とりあえず気にしないwことにして、

/etc/init.d/vpnclient

に配置して、

# /sbin/chkconfig --add vpnclient

で自動起動設定完了です。

 

これ、インストールから設定と併せてChefのレシピにしたらIPアドレスの管理が捗りますね。

もし複数台で使うことがあればやろうっと。

 

そして、これでアレで遊ぶために必要な設定①が完了しました!

 

 


SoftEther VPNでEC2(Amazon Linux)に繋いでみた③(まとめ)

導入編設定編通してのまとめ(感想)です。

 

やってみて感想

  1. 導入はシェル叩くだけ。非常に簡単だった。
  2. 今気づいた。公式サイトにLinuxへのServerのインストール方法書いてあるorz
  3. 公式サイトのチュートリアルが充実しているので、導入も設定も非常に助かった。
    Windowsだとほとんど困ることなんて無いんじゃないだろうか?
  4. Serverの設定は遠隔からGUIでできたりして非常に簡単だった。
  5. Clientもコマンドが分かりやすくできている感じがして、
    リファレンス見ながらやれば困ることは無かった。
  6. ルーティングの部分で少し悩んだのは、
    SoftEther VPNがどうとかいう話じゃなく、自分の意識が甘かっただけのこと。
    NWが簡単かつ自在に弄れるAWS VPCばっかりつかっていると、
    OSのルーティング設定とかiptableとか弄ることないからなぁw

 

良い所

  1. 高機能だけど分かりやすい
  2. 遠隔から操作できる
  3. 公式サイトの充実したコンテンツ

集約するとこの3点だけど、細かく挙げればきりがない。

かなり魅力的なソフトウェアだと思う。

特に②はクラウド利用では超大事。

 

悪い所

今のところ特に無い。

あえて言うなら下記だけど、これは相性的な問題だから仕方がない。

 

 

AWSで使える?

基本的にはめっちゃ使えそう。

但し、一個だけ問題があることが分かった。

AWSはプロミスキャスモードを一切許していないので、ブリッジ接続が使えない。

各サーバにクライアントをインストールして、

起動スクリプトでコネクション張るとこまで自動でやるようにして、

仮想DHCPオンにして…って感じになりそう。

接続先を固定したかったらどうすれば良いだろうか・・・

サーバ側でMACアドレステーブルとか持ってるけど、

同じ接続元には同じIP振ってくれたりはするのかな?

それなら特に問題は無いんだけど・・・

そうでないとして、とりあえず今思いつく解決法は、

クライアントに自発的に仮想DHCPで充てられたIPをAPIでRoute53に登録させるとか?

 

まとめると

最初に感じた

なんかこれめっちゃ使えるんじゃね?

はその通りだった。

でも、ガチで使うにはもうちょっと検証と評価したい所。

 

 

 

とりあえず、こんな感じで一旦?終了です。