Saturday Oct 31, 2009

Setup OpenSolaris Dom0 

First Step is to setup xVM Hypervisor on the OpenSolaris 2009.06 machine.

Follow the steps mentioned at following link and setup Dom0 OpneSolaris 2009.06.
http://hub.opensolaris.org/bin/view/Community+Group+xen/2008_11_dom0

Create a RAW disk image for the DomU installation

mkdir /centos53-pv/
cd /centos53-pv/
dd if=/dev/zero of=CentOS-5.3-x86_64.img bs=1k seek=10000k count=1

Enable xvm/virtd service on Dom0

svcadm enable svc:/system/xvm/virtd:default

Begin the Paravirtualized CentOS DomU installation with the virt-install command

virt-install -n centos53_x86_64 \
-r 1024 \
-f /centos53-pv/CentOS-5.3-x86_64.img \
-p --nographics \
-l http://mirrors.kernel.org/centos/5.3/os/x86_64/

In the above command -n is for the name of the domu, -r is for the memory, -f is for specifying location of the raw disk on which installation will be performed, -p is for specifying paravirtualized mode and -l is for the location containing an installable distribution image.

Follow the regular CentOS installation steps and reboot the DomU when prompted.

Following snapshots walk you through CentOS DomU installation.

After reboot enable ssh login for root user on DomU

uncomment the line "PermitRootLogin yes" from "/etc/ssh/sshd_config" file and save it.

Extract kernel and ramdisk from the running DomU image

Copy "/boot/vmlinuz-2.6.18-128.el5xen" and "/boot/initrd-2.6.18-128.el5xen.img" files to Dom0 machine at "/centos53-pv/".

scp  /boot/vmlinuz-2.6.18-128.el5xen root@dom0-ip:/centos53-pv/
scp  /boot/initrd-2.6.18-128.el5xen.img root@dom0-ip:/centos53-pv/ 

Halt the DomU.

Shutdown domU issuing halt command inside domU and remove a domain from Xend domain management using following command.

# xm delete centos53_x86_64

Create a domain configuration file as given below. 

Create "/centos53-pv/domu.py" file as given below

# cat domu_64.py 
name = "centos53_x86_64"
memory = "2058"
kernel = "/centos53-pv/vmlinuz-2.6.18-128.el5xen"
ramdisk = "/centos53-pv/initrd-2.6.18-128.el5xen.img"
disk = ['file:/centos53-pv/CentOS-5.3-x86_64.img,xvda,w']
vif = ['']

Relaunch the DomU by passing extracted kernel and ramdisk images using py script. 

# xm create domu.py 
Using config file "./domu.py".
Started domain centos53_x86_64

Access domU console

 # xm console centos53_x86_64

Cent OS 5.3 Paravirtualized DomU VNC Session on OpenSolaris 2009.06 Dom0

Tuesday Jun 16, 2009


Project Link: http://code.google.com/p/iphone-aws-manager/

I was looking for the free iPhone application to manage my ec2 account and came across this article: "Mobile Monitoring and Administration of Amazon Web Services: Developing an iPhone-Optimized Web Application".

This article not only describes in details each steps on how to begin with developing iPhone application to manage AWS but also provides source code that you easily download from Google Code Repository and setup in-house.

In this blog entry I will walk you through steps on setting up this application on our popular OpenSolaris AMP Stack AMI.

Following Steps are also valid for the setup of "iPhone AWS Manager" on local machine with OpenSolaris and AMP Stack.

Lets begin with launching new OpenSolaris AMP Stack AMI Instance.
ec2-run-instances ami-c7cf28ae -k my-keypair

Get the public DNS address of an Instance and login into with your keypair
ec2-describe-instances i-xxxxxxxx
ssh -i <path_to_your_keypair> root@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com

Install SVN Package from the Repository
pkg refresh
pkg install SUNWsvn

Checkout iPhone AWS Manager code form the Google Code Repository
cd /var/apache2/2.2/htdocs/

svn co http://iphone-aws-manager.googlecode.com/svn/trunk/ aws-iphone
A aws-iphone/amis.php
A aws-iphone/class.s3.php
A aws-iphone/reboot.php
A aws-iphone/deleteobj.php
A aws-iphone/contents.php
A aws-iphone/getbuckets.php
A aws-iphone/delete.php
A aws-iphone/create.php
A aws-iphone/run.php
A aws-iphone/index.php
A aws-iphone/about.php
A aws-iphone/size.php
A aws-iphone/class.ec2.php
A aws-iphone/lib
A aws-iphone/lib/iui
A aws-iphone/lib/iui/backButton.png
A aws-iphone/lib/iui/grayButton.png
A aws-iphone/lib/iui/loading.gif
A aws-iphone/lib/iui/pinstripes.png
A aws-iphone/lib/iui/toolbar.png
A aws-iphone/lib/iui/iuix.js
A aws-iphone/lib/iui/toolButton.png
A aws-iphone/lib/iui/whiteButton.png
A aws-iphone/lib/iui/iui.js
A aws-iphone/lib/iui/toggleOn.png
A aws-iphone/lib/iui/thumb.png
A aws-iphone/lib/iui/toggle.png
A aws-iphone/lib/iui/iuix.css
A aws-iphone/lib/iui/blueButton.png
A aws-iphone/lib/iui/cancel.png
A aws-iphone/lib/iui/selection.png
A aws-iphone/lib/iui/listArrow.png
A aws-iphone/lib/iui/listGroup.png
A aws-iphone/lib/iui/iui.css
A aws-iphone/lib/iui/listArrowSel.png
A aws-iphone/iPhone AWS Source Code.zip
A aws-iphone/instances.php
A aws-iphone/terminate.php
Checked out revision 3.


Set the Document Root in the httpd.conf file
vi /etc/apache2/2.2/httpd.conf

Set the DocumentRoot as given below
DocumentRoot "/var/apache2/2.2/htdocs/aws-iphone"

edit /etc/php/5.2/php.ini and set following variables to On
register_globals = On
register_long_arrays = On

Create "key.php" file at "/var/apache2/2.2/htdocs/aws-iphone/keys.php" with following code

<?php 
define('my_access_key','XXXXXXXXXXXXXXXXXXXX'); define('my_secret_key','XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
?>

Edit "/var/apache2/2.2/htdocs/aws-iphone/index.php" file and replace php code block at the top of the page with following code.
<?php
        // start the session
        session_start();

        // include the EC2 and S3 libraries
        require_once("class.ec2.php");
        require_once("class.s3.php");
        include_once("keys.php");
        // create session variables for AWS keys
        session_register("AMAZON_KEY");
        session_register("AMAZON_PRIVATE_KEY");

        $HTTP_SESSION_VARS["AMAZON_KEY"]=my_access_key;
        $HTTP_SESSION_VARS["AMAZON_PRIVATE_KEY"]=my_secret_key;
?>

change your keypair in "/var/apache2/2.2/htdocs/aws-iphone/class.ec2.php" file
look for the function definition and replace your keyName

function runInstances($imageId, $min = 1, $max = 1, $keyName = "divyen-personal-aws-key")


Restart the Apache Server
svcadm disable svc:/network/http:apache22
svcadm enable svc:/network/http:apache22

Open Safari Browser in your iPhone and type in EC2 Instance DNS Address





Create a Shortcut icon so that you don't need to type in URL every time





Snapshots of the basic operations supported on this application are described as given below

Describe AMIs - Both Public and Private





Create Instance, Reboot Instance, Terminate Instance





Create Bucket, Delete Bucket





Thursday Jun 04, 2009

Following instructions describes steps to access GUI on OpenSolaris 2009.06 EC2 AMI Instance using VNC Viewer.

Enable following desktop related services

svcadm enable svc:/application/graphical-login/gdm:default
svcadm enable svc:/application/desktop-cache/icon-cache:default
svcadm enable svc:/application/desktop-cache/desktop-mime-cache:default
svcadm enable svc:/application/desktop-cache/mime-types-cache:default
svcadm enable svc:/application/desktop-cache/input-method-cache:default
svcadm enable svc:/application/desktop-cache/gconf-cache:default
svcadm enable svc:/application/desktop-cache/pixbuf-loaders-installer:default

Set xvm_vnc property to true for x11-server SMF service.

svccfg -s x11-server setprop options/xvm_vnc = boolean: true

Set the root password, you may need it to get back to your session in case if screen saver starts.

root@domU-12-31-39-02-5C-D1:~# passwd
passwd: Changing password for root
New Password:
Re-enter new Password:
passwd: password successfully changed for root
root@domU-12-31-39-02-5C-D1:~#

Setup VNC server

Create .vnc directory under /root if it does not exist
mkdir /root/.vnc/

Create /root/.vnc/xstartup file with following lines.
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-terminal -geometry 100x60 -title "$VNCDESKTOP Desktop" &
/usr/bin/gnome-session
Note: if xstartup file is already exist, replace it with above lines to start gnome terminal session for VNC.

Provide execute permission on xtartup file.
chmod +x /root/.vnc/xstartup

Start the vncserver and set the password.

root@domU-12-31-39-02-5C-D1:~# vncserver

You will require a password to access your desktops.

Password:
Verify:
xauth: creating new authority file /root/.Xauthority

New 'domU-12-31-39-02-5C-D1:1 (root)' desktop is domU-12-31-39-02-5C-D1:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/domU-12-31-39-02-5C-D1:1.log

root@domU-12-31-39-02-5C-D1:~#

Authorize VNC Port
Here we are done with configuring EC2 instance for GUI Remote Access.
Finally we need to authorize the corresponding VNC port on users machine where VNC client is installed.

divyen-patels-macbook:~ divyen$ ec2-authorize default -p 5801
GROUP default
PERMISSION default ALLOWS tcp 5801 5801 FROM CIDR 0.0.0.0/0
divyen-patels-macbook:~ divyen$


Screen Shots
VNC client connection configuration
Snapshot1:http://blogs.sun.com/divyen/resource/snap_1_ec2_opensolaris_2009_06_vnc.jpg
Use public DNS address associated with EC2 instance as the host name.

VNC client connected to OpenSolaris 2009.06 EC2 Instance.
Snapshot2:http://blogs.sun.com/divyen/resource/snap_2_ec2_opensolaris_2009_06_vnc.jpg

For more details on OpenSolaris AMIs visit http://blogs.sun.com/ec2/

Wednesday May 06, 2009


In this blog entry, I am going to walk you through the steps for importing OpenSolaris Amazon EC2 AMI on local Xen environment running on OpenSolaris 2008.11.

I assume
- you are running OpenSolaris 2008.11 build rc2 dom0.
- ec2 ami/api tools installed at /opt/ec2
- your ec2 certificate and private key files available at /opt/ec2/keys
- your ec2 keypair file located at /opt/ec2



[ Step-1 ]
Launch fresh OpenSolaris 2008.11 AMI Instance
ec2-run-instances ami-7db75014 -k your-keypair

Login in with your keypair file
ssh -i /opt/ec2/your-keypair root@ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com

[ Step-2 ]
Remove EC2 specific stuff from the instance.

Open “/etc/ssh/sshd_config” and replace "PermitRootLogin without-password" with "PermitRootLogin yes" and save the file.

Set the root password
passwd
passwd: Changing password for root
New Password:
Re-enter new Password:
passwd: password successfully changed for root

Disable and remove ec2 specific services

svcadm disable svc:/ec2/sshkey:default
svcadm disable svc:/ec2/fixes:default
svcadm disable svc:/ec2/mount:default

svccfg delete svc:/ec2/sshkey:default
svccfg delete svc:/ec2/fixes:default
svccfg delete svc:/ec2/mount:default

[ Step-3 ]
Log out of the ec2 instance and transfer your keys at /mnt/keys to begin re-bundling image.
scp -i /opt/ec2/id-your-keypair -r /opt/ec2/keys/ root@ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:/mnt

[ Step-4 ]
Login back to ec2 instance.
ssh -i /opt/ec2/your-keypair root@ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com

[ Step-5 ]
Start bundling the image.

# cd /mnt
# /opt/ec2/sbin/rebundle.sh -v opensolaris_2008_11_ami.img
Creating image file /mnt/opensolaris_2008_11_ami.img
Preparing clone pool on /dev/lofi/1
Cloning
#

rebundle.sh will take about 10-15 minutes to create raw opensolaris image.

[ Step-6 ]
Bundle image and create parts.

export BUCKET=my-bucket
export JAVA_HOME=/usr/jdk/latest
export EC2_HOME=/opt/ec2
export PATH=$PATH:$EC2_HOME/bin
export RUBYLIB=$EC2_HOME/lib
export EC2_URL=https://ec2.amazonaws.com

export EC2_PRIVATE_KEY=/mnt/keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=/mnt/keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem

export EC2_KEYID=xxxxxxxxxxxxxxxxxxxxxxx
export EC2_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

export DIRECTORY=/mnt
export IMAGE=opensolaris_2008_11_ami.img

# ec2-bundle-image -c $EC2_CERT -k $EC2_PRIVATE_KEY \
--kernel aki-6552b60c --ramdisk ari-6452b60d \
--block-device-mapping "root=rpool/52@0,ami=0,ephemeral0=1" \
--user <user-id> --arch i386 \
-i $DIRECTORY/$IMAGE -d $DIRECTORY/parts

[ Step-7 ]
Upload image parts on s3

# cd $DIRECTORY/parts

# ec2-upload-bundle -b $BUCKET -m opensolaris_2008_11_ami.img.manifest.xml \
--url http://s3.amazonaws.com \
--retry -a $EC2_KEYID -s $EC2_KEY

[ Step-8 ]
Log out of the instance.
Download image parts and unbundle it to re-create the raw image locally.

# mkdir /osol-ec2-image
# mkdir /osol-ec2-image/parts
# cd /osol-ec2-image/parts

# ec2-download-bundle -b my-bucket -m opensolaris_2008_11_ami.img.manifest.xml \
-a <your-access-key-id> -s <your-secret-key-id> \
--privatekey /opt/ec2/keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .pem

# ec2-unbundle -m opensolaris_2008_11_ami.img.manifest.xml \
-k /opt/ec2/keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .pem

# mv opensolaris_2008_11_ami.img
# cd /osol-ec2-image/
[ Step-9 ]
Create “domu.py” at /osol-ec2-image with following lines

name = "opensolaris-ec2-image"
vcpus = 1
memory = "1024"

disk = ['file://osol-ec2-image/opensolaris_2008_11_ami.img,0,w']

vif = ['']

on_shutdown = "destroy"
on_reboot = "restart"
on_crash = "destroy"


[ Step-10 ]
Launch domu image and login with root user and the password you set during step-2

xm create domu.py

Using config file "./domu.py".
Started domain opensolaris-ec2-image

xm console opensolaris-ec2-image
v3.1.4-xvm chgset 'Mon Oct 13 22:14:51 2008 -0700 15904:94bd0a643efe'

SunOS Release 5.11 Version snv_101b 32-bit

Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved.

Use is subject to license terms.
Hostname: dhcp-umpk16-85-23
Reading ZFS config: done.
Mounting ZFS filesystems: (5/5)

dhcp-umpk16-85-23 console login:

Sunday May 03, 2009

Install vpnc package with following command.

divyen@divyen-laptop:~$ sudo apt-get install vpnc

Create a file default.conf at /etc/vpnc/ with following lines and
fill in the required parameters replacing strings enclosed within “<” and “>" without keeping "<" and ">”.

divyen@divyen-laptop:~$ sudo vi /etc/vpnc/default.conf

IPSec gateway <gateway>
IPSec ID <group-id>
IPSec secret <group-pass-key>
Xauth username <user-name>
NAT Traversal Mode cisco-udp

Note: Make sure you don't append extra space at the end of parameter value.

Connect using "vpnc-connect" command.
divyen@divyen-laptop:~$ sudo vpnc-connect
[sudo] password for divyen:
Enter password for user-name@company-vpn-gateway:


To disconnect type in following command.
divyen@divyen-laptop:~$ sudo vpnc-disconnect
Terminating vpnc daemon (pid: 7894)