$ wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
2013年3月30日土曜日
aws : ec2で自身のインスタンスidを取得する
メモ。こんな方法なんですね。
2013年3月29日金曜日
vagrant-awsを使ってAWSインスタンを立ち上げる
Virtual Boxの便利なクライアントラッパーとして有名だったvagrantが、version1.1以降ではAWSやRackspaceなど有名なクラウド環境もサポートするようになりました。
AWSについては、vagrant-aws というプラグインを導入することで、vagrantからaws instanceの立ち上げ〜廃棄を行うことができます。
◯install
vagrantについては以下のサイトなどから適当に(1.1以上必須)。
http://www.vagrantup.com/
vagrant-awsについては以下のコマンドで追加できます。
ここではawsのインスタンスを立ち上げる事を目標としているので、Vagrantfileをaws向けの設定に書き換えます。
vgrant-awsのREADMEを引用すると以下のような書式になります。
続いて、config.vm.boxで使用するboxを指定します。awsの場合、ec2側で登録されているamiを使用する形になるので、本来はこの設定は不要です。ただ、vagrant的には値の設定が必要なようなので、dummyのboxを指定します。
なおdummyのboxはvagrant-awsのgit上に用意されているので、あらかじめvagrantにaddしておきましょう。
詳細な項目についてはvagrant-awsのREADMEの”Configuration"の項を参照ください。
https://github.com/mitchellh/vagrant-aws
なお、security group についてはssh portが空いているものを設定する必要があります。sshが接続できないとvagrantからコントロールすることが出来ず、インスタンスだけ立ち上がるけれどvagrant側はエラーになりdestroyできなくなる、という状況に陥ります。
※ 設定で嵌りそうな点についてはこの辺のブログなどを参照してください。
http://d.hatena.ne.jp/naoya/20130315/1363340698
◯operation
ひと通り設定が終わったら、vagrant upを実行します。provider情報として"aws"を指定する必要があります。
◯所感
vagrant経由で簡単にawsをハンドリングする事ができるので、手軽にec2のインスタンスを立ち上げ、アプリケーションや構成管理ツール(chefなど)の動作確認を行うには非常に便利なツールだと思います。
ただ、ユースケースとしては、あくまで検証向きだと思います。本番環境の複数台のサーバーに対してvagrantで管理する、というイメージがあまり持てないので、検証領域での使用に留めるのが妥当かなと思っています。
AWSについては、vagrant-aws というプラグインを導入することで、vagrantからaws instanceの立ち上げ〜廃棄を行うことができます。
◯install
vagrantについては以下のサイトなどから適当に(1.1以上必須)。
http://www.vagrantup.com/
vagrant-awsについては以下のコマンドで追加できます。
◯init$ vagrant plugin install vagrant-aws $ vagrant plugin list vagrant-aws (0.1.2)
まず"vagrant init"によってVagrantfileのひな形を作成します。$ vagrant init
ここではawsのインスタンスを立ち上げる事を目標としているので、Vagrantfileをaws向けの設定に書き換えます。
vgrant-awsのREADMEを引用すると以下のような書式になります。
まず 、"Vagrant.configure("2")"はおまじないみたいなもので、vagrantの1.1を使用する、という宣言です。Vagrant.configure("2") do |config| config.vm.box = "dummy" config.vm.provider :aws do |aws| aws.access_key_id = "YOUR KEY" aws.secret_access_key = "YOUR SECRET KEY" aws.keypair_name = "KEYPAIR NAME" aws.ssh_private_key_path = "PATH TO YOUR PRIVATE KEY" aws.ami = "ami-7747d01e" aws.ssh_username = "ubuntu" end end
続いて、config.vm.boxで使用するboxを指定します。awsの場合、ec2側で登録されているamiを使用する形になるので、本来はこの設定は不要です。ただ、vagrant的には値の設定が必要なようなので、dummyのboxを指定します。
なおdummyのboxはvagrant-awsのgit上に用意されているので、あらかじめvagrantにaddしておきましょう。
aws provider周りの設定については、それぞれの項目に応じて設定します。あらかじめaccess keyやsecret access keyなどの値を控えておきましょう。vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
詳細な項目についてはvagrant-awsのREADMEの”Configuration"の項を参照ください。
https://github.com/mitchellh/vagrant-aws
なお、security group についてはssh portが空いているものを設定する必要があります。sshが接続できないとvagrantからコントロールすることが出来ず、インスタンスだけ立ち上がるけれどvagrant側はエラーになりdestroyできなくなる、という状況に陥ります。
※ 設定で嵌りそうな点についてはこの辺のブログなどを参照してください。
http://d.hatena.ne.jp/naoya/20130315/1363340698
◯operation
ひと通り設定が終わったら、vagrant upを実行します。provider情報として"aws"を指定する必要があります。
ec2のインスタンスが立ち上がったら、Virtual Boxの時と同じようにssh接続することができます。$ vagrant up --provider=aws
使用が終わったら、destroyをすると立ち上げたインスタンスがterminateされます。$ vagrant ssh
なお、私が試した環境では、"vagrant halt"が上手く動作しませんでした。イメージ的にはインスタンスがstopされて欲しいのですが…$ vagrant destroy
◯所感
vagrant経由で簡単にawsをハンドリングする事ができるので、手軽にec2のインスタンスを立ち上げ、アプリケーションや構成管理ツール(chefなど)の動作確認を行うには非常に便利なツールだと思います。
ただ、ユースケースとしては、あくまで検証向きだと思います。本番環境の複数台のサーバーに対してvagrantで管理する、というイメージがあまり持てないので、検証領域での使用に留めるのが妥当かなと思っています。
2013年3月27日水曜日
jenkinsでロール管理を行う
jenkinsはユーザー単位で権限管理もできますが、ロール単位でも管理ができます。
ただし、標準機能では出来ないので、"Role Strategy Plugin"を追加する必要があります。
プラグインを追加した後の手順は、以下ブログが詳細で分かりやすいです。
http://d.hatena.ne.jp/tyuki39/20110111/1294759823
ただし、標準機能では出来ないので、"Role Strategy Plugin"を追加する必要があります。
プラグインを追加した後の手順は、以下ブログが詳細で分かりやすいです。
http://d.hatena.ne.jp/tyuki39/20110111/1294759823
githubにブロックされずにssh接続を行う
githubに22番ポートで接続をしていたら、あるタイミングで接続できなくなりました。
https://help.github.com/articles/using-ssh-over-the-https-port
ここに記載されているように、"/.ssh/config"に以下のような記述を追加すれば、ブロックされること無くSSH接続ができるようになります。
githubのhelpを読んでいると”Using SSH over the HTTPS port”という項があり、HTTPSのポートを使用してSSHを接続することが推奨されています。ssh: connect to host github.com port 22: Connection refused
https://help.github.com/articles/using-ssh-over-the-https-port
ここに記載されているように、"/.ssh/config"に以下のような記述を追加すれば、ブロックされること無くSSH接続ができるようになります。
Host github.com Hostname ssh.github.com Port 443
64bit CentOS環境のjenkinsでAndroidのテストを実行する
jenkinsには"Android Emulator Plugin"が存在するので、こちらを利用すればAndroidアプリのテストをjenkinsの継続インテグレーションに組み込むことができます。
手順については、@ITの以下記事が良くまとまっているので、ここでは引用まで。
http://www.atmarkit.co.jp/fsmart/articles/androidtest06/01.html
ただ、手元の環境がCentOS6.3だったのですが、その環境でemulatorを動作させようとするとlibstdc++が見つからないという事でエラーになりました。
http://iexcel.wordpress.com/2010/01/25/ia32-libs-for-android-sdk-on-fedora-12-x86_64/
上記ブログはFedora向けの説明ですが、概ねCentOSでも同じで大丈夫です。私は以下のライブラリについて"yum install xxxx"して、ひと通りjenkinsでテストが動くようになることを確認しました。
手順については、@ITの以下記事が良くまとまっているので、ここでは引用まで。
http://www.atmarkit.co.jp/fsmart/articles/androidtest06/01.html
ただ、手元の環境がCentOS6.3だったのですが、その環境でemulatorを動作させようとするとlibstdc++が見つからないという事でエラーになりました。
どうも以下のブログ記事などを見る限りだと、Linux系向けのAndroid SDKは32bitアプリケーションのため、64bit OS環境で動作させるためにはいくつかライブラリをインストールする必要があります。android create avd -f -a -c 64M -s WVGA800 -n hudson_ja-JP_160_WVGA_android-8 -t android-8 Auto-selecting single ABI armeabi Android 2.2 is a basic Android platform. Do you wish to create a custom hardware profile [no] Error: /home/jenkins/.jenkins/tools/android-sdk/tools/mksdcard: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory Error: Failed to create the SD card. Error: Failed to create sdcard in the AVD folder.
http://iexcel.wordpress.com/2010/01/25/ia32-libs-for-android-sdk-on-fedora-12-x86_64/
上記ブログはFedora向けの説明ですが、概ねCentOSでも同じで大丈夫です。私は以下のライブラリについて"yum install xxxx"して、ひと通りjenkinsでテストが動くようになることを確認しました。
glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686
mavenと認証設定済みのnexusの連携
認証設定をしたnexusサーバーにpom.xml経由でjarの取得、もしくは登録を行いたい場合、~/.m2/settings.xml に以下のような設定を記載する必要があります。
ローカルPCの開発環境で上記設定を行う場合は、ログインしているユーザーの~/.m2/settings.xml を編集すればOKです。
jenkinsなどサーバー環境で設定が必要な場合は、たとえばjenkinsの場合はjenkins serverの実行ユーザーのsettings.xmlを、サーバー上で直接編集してあげる必要があります。
また、ID・パスワード認証以外の方法...たとえば公開鍵認証方式...でサーバーに接続する場合は、以下のmanualの内容を参考にしてください。
http://maven.apache.org/settings.html#Servers
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc ation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>hoge</id> <username>fuga</username> <password>password</password> </server> </settings>
idの部分に、pom.xmlでserver情報を一意に特定するためのサービスID(任意)を設定します。usernameならびにpasswordはnexusで使用するID・passwordです。
pom.xmlで管理しているプロジェクトのjarを"mvn deploy"でnexusに登録したい場合は、pom.xmlに以下のような記述を記載します。
pom.xmlで管理しているプロジェクトのjarを"mvn deploy"でnexusに登録したい場合は、pom.xmlに以下のような記述を記載します。
<distributionManagement> <repository> <id>hoge</id> <url>http://nexus.hoge.jp/content/repositories/releases</url> </repository> </distributionManagement>
上記pom.xmlのid"hoge"と、settings.xml中のid"hoge"は対応しています。ですので上記URLに接続する際、認証が求められた場合はsettings.xmlに記載した認証情報を元に接続をすることになります。
nexus上のrepositoryを取得したい場合は以下です。
nexus上のrepositoryを取得したい場合は以下です。
<repositories> <repository> <id>hoge</id> <url>http://nexus.hoge.jp/nexus/content/repositories/releases</url> </repository> </repositories>
ローカルPCの開発環境で上記設定を行う場合は、ログインしているユーザーの~/.m2/settings.xml を編集すればOKです。
jenkinsなどサーバー環境で設定が必要な場合は、たとえばjenkinsの場合はjenkins serverの実行ユーザーのsettings.xmlを、サーバー上で直接編集してあげる必要があります。
また、ID・パスワード認証以外の方法...たとえば公開鍵認証方式...でサーバーに接続する場合は、以下のmanualの内容を参考にしてください。
http://maven.apache.org/settings.html#Servers
2013年3月24日日曜日
登録:
投稿 (Atom)