OpenSolarisを触る環境をつくる場合、DualBootでOpenSolaris, 自身のPCのSun xVM VirtualBox等で仮想環境をつくりOpenSolarisをinstallするなどがありますが、お金はかかるもののCloud Computingの時代(?)には
OpenSolaris on Amazon EC2という手があります。Cloud Computing 環境に興味をもっている人間としてはこれも試さないわけにはいけません。既に、Amazon EC2でOpenSolarisを動かしている方はいらっしゃいますが、自分自身で動かしてみたいですよねぇ。
自分でOpenSolarisのAmazonのImageを作り上げて、それをEC2で動作させることが王道かのかもしれませんが、私の場合はOpenSolarisわざわざinstallしたくないけど、EC2つかってちょっとSolarisでやってみる的なことを試そうかと思っています。
本blogに作業メモを残しておきます。ちなみに、ClientはMac OS 10.4.11です。
OpenSolaris on EC2のサイトにいって、SunのFormに入力。Sunのフォームに入力している途中で、AWSのAccount numberが必要なことに気づく(いきなりバカですね)。AWSの登録をして、Account numberを探す。行き当たりばったりなので、"Your Web Service Accout"の"AWS Account Activity"に12桁の番号を見つける。フォームの入力を継続して、Submit。もちろん、Amazon 側ではEC2/S3は従量課金なので、paymentのためのクレジットカードも登録しておく。
---
Thank you for registering.
Our technical team will review your requirements and get back to you shortly.
---
おいおい、Sun それはないだろう・・・なんか人力な予感を感じを悲しく思い、かつ社員だとはねられるんだろうかなどとかんがえつつ。しばしサスペンド。Amazon S3もみてみるが、S3を簡単に使うツールとかあんのかとぐぐってみたら、Elastic Driveとかいうのがあるらしい。MacのS3 browserを使えるのか。なるほど。
暫くするとメールがきて、登録のconfirmationメール。数日後、updateとして
New AMIs on OpenSolaris 2008.05 (with Build 91 packages) on Amazon EC2!Hope your experience with OpenSolaris on Amazon EC2 has been great so far.
Continuing the release train of pre-configured AMIs on OpenSolaris on Amazon EC2, we
are pleased to announce the availability of AMP (Apache, MySQL, MySQL/PHP/Perl/Python)
and JBoss AMIs:
OpenSolaris 2008.05 (updated with Build 91 packages) + AMP
32-bit AMI: ami-45f1152c OpenSolaris 2008.05 (updated with Build 91 packages) + AMP + Drupal
32-bit AMI: ami-4ff01426
OpenSolaris 2008.05 (updated with Build 91 packages) + AMP + Joomla
32-bit AMI: ami-2bf01442
OpenSolaris 2008.05 (updated with Build 91 packages) + AMP + Mediawiki
32-bit AMI: ami-2ef11547
OpenSolaris 2008.05 (updated with Build 91 packages) + Apache + MySQL + JBOSS
32-bit AMI: ami-8fe206e6
というメール。別にApproveのprocessとかあるわけではないようですね。
さてさて、メールの中にSun提供のAmazon Machine Imageがリストされていると書いてあるので、こちらを参照。
List of all Sun-offered OpenSolaris AMIs:
http://blogs.sun.com/ec2/entry/opensolaris_based_ami_catalog_on
ami-fbe10592Ruby On Rails stack with DTrace AMI is based on ami-41e70328. This stack includes, Mongrel, Mongrel_cluser, Thin, MySQL, Postgres, sample SMF scripts, the Blastwave client, Git, Ruby clients for the databases/S3, GNU Findutils, gcc, and Sun Studio. For more information go here
流行のRoRのAMIでも動かしてみようかとこのAMIに決定。
さて、事前準備は、
Getting Started Guideに記述されている通り。ssh keypairをつくり, id_rsa-gsg-keypairのファイルに格納。環境変数を設定して、いざインスタンス起動。
export EC2_PRIVATE_KEY=~/.ec2/pk-LQZHRRMGTTEJYRPANZ7I7LFLKZ3MA44Q.pem
export EC2_CERT=~/.ec2/cert-LQZHRRMGTTEJYRPANZ7I7LFLKZ3MA44Q.pem
export EC2_HOME=~/ec2-api-tools-1.3-24159
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
export PATH=/opt/local/bin:/opt/local/sbin/:$EC2_HOME/bin:$PATH
fujii-akihito-nokonpyuta:~ akihito$ ec2-run-instances --url https://ec2.amazonaws.com ami-fbe10592 -k gsg-keypair
RESERVATION r-5876a131 711192086146 default
INSTANCE i-3af35753 ami-fbe10592 pending gsg-keypair 0 m1.small 2008-09-01T09:00:03+0000 us-east-1a aki-b78367de ari-b68367df
fujii-akihito-nokonpyuta:~ akihito$
fujii-akihito-nokonpyuta:~ akihito$ ec2-describe-instances i-3af35753
RESERVATION r-5876a131 711192086146 default
INSTANCE i-3af35753 ami-fbe10592 ec2-75-101-237-120.compute-1.amazonaws.com ip-10-250-11-181.ec2.internal running gsg-keypair 0 m1.small 2008-09-01T09:00:03+0000 us-east-1a aki-b78367de ari-b68367df
fujii-akihito-nokonpyuta:~ akihito$
で起動OK確認。本当に数分でビックリ。ec2-terminate-instancesして、tokyo2.0出席のため中断。terminateしないと課金されてしまいますからね。
fujii-akihito-nokonpyuta:~ akihito$ ec2-describe-instances i-3af35753
RESERVATION r-5876a131 711192086146 default
INSTANCE i-3af35753 ami-fbe10592 terminated gsg-keypair 0 m1.small 2008-09-01T09:00:03+0000 aki-b78367de ari-b68367df
さて翌日再度時間をみつけて、インスタンスを再度起動。
$ ec2-run-instances --url https://ec2.amazonaws.com ami-fbe10592 -k gsg-keypair
RESERVATION r-b19f49d8 711192086146 default
INSTANCE i-6aa10503 ami-fbe10592 pending gsg-keypair 0 m1.small 2008-09-02T07:49:01+0000 us-east-1c aki-b78367de ari-b68367df
$ ec2-describe-instances
RESERVATION r-1f914776 711192086146 default
INSTANCE i-fba60292 ami-fbe10592 terminated gsg-keypair 0 m1.small 2008-09-02T06:27:57+0000 aki-b78367de ari-b68367df
RESERVATION r-b19f49d8 711192086146 default
INSTANCE i-6aa10503 ami-fbe10592 ec2-75-101-235-133.compute-1.amazonaws.com domU-12-31-38-01-BD-C2.compute-1.internal running gsg-keypair 0 m1.small 2008-09-02T07:49:01+0000 us-east-1c aki-b78367de ari-b68367df
$ ec2-authorize default -p 22
$ ec2-authorize default -p 80
$ ssh -i id_rsa-gsg-keypair root@ec2-75-101-235-133.compute-1.amazonaws.com
The authenticity of host 'ec2-75-101-235-133.compute-1.amazonaws.com (75.101.235.133)' can't be established.
RSA key fingerprint is -------------------------.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-75-101-235-133.compute-1.amazonaws.com,75.101.235.133' (RSA) to the list of known hosts.
Last login: Thu Aug 14 10:27:33 2008 from 192.18.43.225
Sun Microsystems Inc. SunOS 5.11 snv_91 January 2008
-bash-3.2#
おお、ログインできました。SunOS 5.11です。どんなサービスが起動されているのでしょう。
# svcs -a
STATE STIME FMRI
legacy_run 0:54:05 lrc:/etc/rc2_d/S20sysetup
legacy_run 0:54:05 lrc:/etc/rc2_d/S47pppd
legacy_run 0:54:05 lrc:/etc/rc2_d/S72autoinstall
legacy_run 0:54:05 lrc:/etc/rc2_d/S73cachefs_daemon
legacy_run 0:54:06 lrc:/etc/rc2_d/S81dodatadm_udaplt
legacy_run 0:54:06 lrc:/etc/rc2_d/S89PRESERVE
legacy_run 0:54:06 lrc:/etc/rc2_d/S98deallocate
disabled 0:53:28 svc:/network/iscsi_initiator:default
disabled 0:53:28 svc:/system/device/mpxio-upgrade:default
disabled 0:53:28 svc:/network/physical:nwam
disabled 0:53:28 svc:/network/ipfilter:default
disabled 0:53:29 svc:/network/ipsec/manual-key:default
disabled 0:53:29 svc:/network/ipsec/ike:default
disabled 0:53:29 svc:/system/nws_scm:default
disabled 0:53:29 svc:/system/nws_sv:default
disabled 0:53:29 svc:/system/nws_ii:default
disabled 0:53:29 svc:/system/nws_rdc:default
disabled 0:53:30 svc:/network/nis/client:default
disabled 0:53:30 svc:/network/dns/client:default
disabled 0:53:30 svc:/network/rpc/keyserv:default
disabled 0:53:30 svc:/network/rpc/nisplus:default
disabled 0:53:30 svc:/network/ldap/client:default
disabled 0:53:30 svc:/network/nfs/nlockmgr:default
disabled 0:53:30 svc:/network/nfs/status:default
disabled 0:53:30 svc:/network/nfs/cbd:default
disabled 0:53:30 svc:/system/idmap:default
disabled 0:53:30 svc:/network/nfs/mapid:default
disabled 0:53:30 svc:/network/inetd-upgrade:default
disabled 0:53:30 svc:/network/nfs/client:default
disabled 0:53:30 svc:/application/print/server:default
disabled 0:53:30 svc:/network/ntp:default
disabled 0:53:30 svc:/network/smb/client:default
disabled 0:53:31 svc:/system/auditd:default
disabled 0:53:31 svc:/system/mdmonitor:default
disabled 0:53:32 svc:/network/nfs/server:default
disabled 0:53:32 svc:/application/graphical-login/gdm:default
disabled 0:53:32 svc:/application/print/ipp-listener:default
disabled 0:53:32 svc:/application/pkg/server:default
disabled 0:53:33 svc:/network/ipmievd:default
disabled 0:53:33 svc:/network/dns/server:default
disabled 0:53:33 svc:/network/dns/multicast:default
disabled 0:53:33 svc:/network/ipv6-forwarding:default
disabled 0:53:33 svc:/network/routing/ripng:default
disabled 0:53:33 svc:/network/routing/legacy-routing:ipv4
disabled 0:53:33 svc:/network/routing/legacy-routing:ipv6
disabled 0:53:33 svc:/network/routing/rdisc:default
disabled 0:53:33 svc:/network/routing/route:default
disabled 0:53:33 svc:/network/device-discovery/printers:snmp
disabled 0:53:33 svc:/network/security/krb5kdc:default
disabled 0:53:33 svc:/network/security/kadmin:default
disabled 0:53:33 svc:/network/ipv4-forwarding:default
disabled 0:53:33 svc:/system/sar:default
disabled 0:53:34 svc:/system/iscsitgt:default
disabled 0:53:34 svc:/system/nws_rdcsyncd:default
disabled 0:53:34 svc:/system/pools:default
disabled 0:53:34 svc:/system/pools/dynamic:default
disabled 0:53:34 svc:/system/consadm:default
disabled 0:53:34 svc:/application/cups/scheduler:default
disabled 0:53:34 svc:/network/slp:default
disabled 0:53:34 svc:/system/stmf:default
disabled 0:53:34 svc:/application/database/postgresql:version_81
disabled 0:53:34 svc:/application/database/postgresql:version_82
disabled 0:53:34 svc:/application/database/postgresql:version_82_64bit
disabled 0:53:34 svc:/application/database/mysql:version_50
disabled 0:53:34 svc:/network/http:apache22
disabled 0:54:04 svc:/network/rpc/meta:default
disabled 0:54:05 svc:/application/x11/xfs:default
disabled 0:54:05 svc:/application/x11/xvnc-inetd:default
disabled 0:54:05 svc:/application/print/rfc1179:default
disabled 0:54:05 svc:/network/stlisten:default
disabled 0:54:05 svc:/network/rpc/mdcomm:default
disabled 0:54:05 svc:/network/rpc/spray:default
disabled 0:54:05 svc:/network/rpc/rusers:default
disabled 0:54:05 svc:/network/rpc/rex:default
disabled 0:54:05 svc:/network/rpc/metamh:default
disabled 0:54:06 svc:/network/rpc/rstat:default
disabled 0:54:06 svc:/network/rpc/wall:default
disabled 0:54:06 svc:/network/rpc/metamed:default
disabled 0:54:06 svc:/network/login:eklogin
disabled 0:54:06 svc:/network/login:klogin
disabled 0:54:06 svc:/network/login:rlogin
disabled 0:54:07 svc:/network/rexec:default
disabled 0:54:07 svc:/network/nfs/rquota:default
disabled 0:54:07 svc:/network/comsat:default
disabled 0:54:07 svc:/network/ftp:default
disabled 0:54:07 svc:/network/finger:default
disabled 0:54:07 svc:/network/shell:default
disabled 0:54:07 svc:/network/shell:kshell
disabled 0:54:07 svc:/network/telnet:default
disabled 0:54:07 svc:/network/stdiscover:default
disabled 0:54:07 svc:/network/talk:default
disabled 0:54:08 svc:/application/cups/in-lpd:default
online 0:53:28 svc:/system/svc/restarter:default
online 0:53:30 svc:/network/datalink-management:default
online 0:53:30 svc:/network/loopback:default
online 0:53:31 svc:/milestone/name-services:default
online 0:53:38 svc:/network/physical:default
online 0:53:38 svc:/system/identity:node
online 0:53:38 svc:/system/metainit:default
online 0:53:39 svc:/system/filesystem/root:default
online 0:53:39 svc:/system/scheduler:default
online 0:53:39 svc:/system/boot-archive:default
online 0:53:39 svc:/system/filesystem/usr:default
online 0:53:41 svc:/system/keymap:default
online 0:53:42 svc:/system/device/local:default
online 0:53:43 svc:/system/filesystem/minimal:default
online 0:53:44 svc:/system/metasync:default
online 0:53:45 svc:/system/cryptosvc:default
online 0:53:45 svc:/system/sysevent:default
online 0:53:45 svc:/system/rmtmpfiles:default
online 0:53:45 svc:/system/resource-mgmt:default
online 0:53:45 svc:/system/identity:domain
online 0:53:45 svc:/system/power:default
online 0:53:45 svc:/system/device/fc-fabric:default
online 0:53:46 svc:/milestone/devices:default
online 0:53:46 svc:/network/ipsec/ipsecalgs:default
online 0:53:46 svc:/network/ipsec/policy:default
online 0:53:46 svc:/milestone/network:default
online 0:53:46 svc:/system/picl:default
online 0:53:47 svc:/system/manifest-import:default
online 0:53:48 svc:/network/initial:default
online 0:53:48 svc:/milestone/single-user:default
online 0:53:50 svc:/system/coreadm:default
online 0:53:50 svc:/network/service:default
online 0:53:50 svc:/system/filesystem/local:default
online 0:53:54 svc:/system/sysidtool:net
online 0:53:54 svc:/application/stosreg:default
online 0:53:54 svc:/network/shares/group:zfs
online 0:53:54 svc:/system/cron:default
online 0:53:54 svc:/system/name-service-cache:default
online 0:53:55 svc:/system/boot-archive-update:default
online 0:53:55 svc:/system/dbus:default
online 0:53:55 svc:/network/shares/group:default
online 0:53:55 svc:/application/font/fc-cache:default
online 0:53:55 svc:/application/opengl/ogl-select:default
online 0:53:56 svc:/system/avahi-bridge-dsd:default
online 0:53:56 svc:/application/print/ppd-cache-update:default
online 0:53:56 svc:/ec2ify/ident:default
online 0:53:58 svc:/system/hal:default
online 0:53:58 svc:/system/filesystem/rmvolmgr:default
online 0:53:59 svc:/network/routing-setup:default
online 0:54:00 svc:/network/rpc/bind:default
online 0:54:01 svc:/system/sysidtool:system
online 0:54:01 svc:/system/filesystem/autofs:default
online 0:54:01 svc:/milestone/sysconfig:default
online 0:54:01 svc:/network/routing/ndp:default
online 0:54:01 svc:/system/dumpadm:default
online 0:54:02 svc:/system/sac:default
online 0:54:02 svc:/system/system-log:default
online 0:54:02 svc:/system/utmp:default
online 0:54:02 svc:/system/console-login:default
online 0:54:03 svc:/network/ssh:default
online 0:54:03 svc:/network/inetd:default
online 0:54:03 svc:/system/postrun:default
online 0:54:04 svc:/system/fmd:default
online 0:54:04 svc:/network/smtp:sendmail
online 0:54:07 svc:/milestone/multi-user:default
online 0:54:07 svc:/system/intrd:default
online 0:54:08 svc:/network/rpc/gss:default
online 0:54:08 svc:/network/rpc/smserver:default
online 0:54:08 svc:/network/security/ktkt_warn:default
online 0:54:08 svc:/milestone/multi-user-server:default
online 0:54:09 svc:/system/zones:default
さて/ROOTに smfファイルが転がっています。
# svccfg import rails-sample.smf
# svcadm enable rails-sample
# svcs -vx rails-sample
むむ、Onlineになりません。logをみてみるとpidのfileが存在するためにエラーになっているのかな。
-bash-3.2# cd rails-sample
-bash-3.2# ls
app db lib public README test vendor
config doc log Rakefile script tmp
-bash-3.2# cd tmp
-bash-3.2# ls
cache pids sessions sockets
-bash-3.2# cd pids
-bash-3.2# ls
mongrel.3000.pid mongrel.3001.pid
-bash-3.2# rm mongrel.300*
-bash-3.2# cd
-bash-3.2# svcadm enable rails-sample
-bash-3.2# svcs rails-sample
STATE STIME FMRI
online 1:01:27 svc:/network/mongrel/rails-sample:default
起動されました。
# svcadm enable apache22
でapacheもあがりますね。MySQLも登録済み。なんて簡単な環境なんでしょう。mongrelのport 3000もあけないとbrowserから確認できないので、Client側で
$ ec2-authorize default -p 3000
GROUP default
PERMISSION default ALLOWS tcp 3000 3000 FROM CIDR 0.0.0.0/0
さて、ブラウザから http://ec2-75-101-235-133.compute-1.amazonaws.com:3000/ で画面を確認。ま、もちろん何も無いですが開発実行環境ができていることを確認。今日はここまでということで、またまた中断。
-bash-3.2# exit
$ ec2-terminate-instances i-6aa10503
INSTANCE i-6aa10503 running shutting-down
うーむ。おそるべしAmazon。OpenSolarisちょっとだけ触りたいなぁというひとにはもってこいです。次回はAmazon S3ためして、Rails/DTrace動かしてみようかなと思いつつも。?なんでGlassFish, JRuby on Railsでないん?まだまだ道は長そうです。
ちなみに、これ全部rootでやっちゃってます。試すと書いたものの試すというレベルではないですね。すいません。terminateしちゃえば消えちゃうので、ご了承くださいませ。
・・・既に私のblog読者層が変わっているかもしれませんが、またお試し日記の続きを書きたいと思います。(時間ねーかなぁ)