Opened 12 years ago
Closed 11 years ago
#49 closed (fixed)
Capture documentation and the process required to make a custom VM images available in InstaGENI
Reported by: | lnevers@bbn.com | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | IG-EXP-2 |
Component: | AM | Version: | SPIRAL4 |
Keywords: | image support | Cc: | |
Dependencies: |
Description
This ticket will capture the process followed to build a VM custom image for OpenVZ containers. Using the existing instructions, the following steps will be completed:
- Create an Experiment with an existing image
- Login to node and customize
- Create a new Image Descriptor and snapshot
- Wait for the email saying the image creation is done
- Verify new customized image
- Make image available
Background: The following email exchange kicked off this effort:
On 8/30/12 11:50 AM, Robert Ricci wrote:
2) We have support for making disk images of VMs (OpenVZ containers) - from a user perspective, it looks basically the same as making an image from a bare metal node. We have our first guinea pigHHHHHHHHHH user trying it out right now.
On 8/30/12 12:44 PM, Luisa Nevers wrote:
If you need a 2nd guinea pig... just point me to the instructions.
On 8/30/12 12:54 PM, Robert Ricci wrote:
There are no instructions it looks the same as doing it for a bare metal node.
On 8/30/12 1:07 PM, Luisa Nevers wrote:
So the existing instructions now needd to be modified to remove all instances on "physical nodes"? Sounds good, I will use the existing instructions.
Change History (19)
comment:1 Changed 12 years ago by
comment:2 Changed 12 years ago by
Step 2 in "Creating you Custom Image" has pointers to a knowledge base item for custom images at https://www.emulab.net/kb-show.php3?xref_tag=linux_kernel, which defines how to build "Emulab standard Fedora Core 4 or 6 images (i.e., FC4-STD or FC6-STD)".
Using the "Experiment Creation GUI" (https://www.emulab.net/clientui.php3) to define the one node experiment, selecting the "Node Properties" only shows one standard OS, FC4-STD. Should the "Experiment Creation GUI" include FC6-STD?
comment:3 Changed 12 years ago by
1. Create an Experiment with an existing image - Completed
Manually defined an NS file and started an experiment. NS file content:
set ns [new Simulator] source tb_compat.tcl set node0 [$ns node] tb-set-node-os $node0 FC6-STD $ns rtproto Static $ns run
2. Login to node and customize - Completed
3. Create a new Image Descriptor and snapshot - Completed
Submitted a new Image Descriptor named "LNFC6", according to interface, this should take 10 or more minutes and an email should be sent when completed.
4. Wait for the email saying the image creation is done - NO EMAIL WAS RECEIVED
Waited for email up to 60 minutes, none received, checked the list of available OS and found my image listed.
5. Verify new customized image - Completed
Created a new experiment with the newly created LNFC6 to verify it. Used the following NS file:
set ns [new Simulator] source tb_compat.tcl set node0 [$ns node] tb-set-node-os $node0 LNFC6 $ns rtproto Static $ns run
Was able to use image and verify that my modifications were preserved.
6. Make image available - Not Completed.
To make the image available to other experimenters via the AM API the image creator must send a request to the site administrator, who will then forward the request to instageni-ops@flux.utah.edu.
Two issues mentioned in http://groups.geni.net/instageni/ticket/20#comment:4 remain.
- The tutorial custom image instructions did not give any indication that the image could be shared with others. How will the experimenter know? Should be mentioned in the tutorial.
- How will the site administrators know that they need to forward the request to instageni-ops?
comment:4 Changed 12 years ago by
ARGH, executed experiment at emulab rather than "https://boss.utah.geniracks.net".
Re-executing the procedure again at the InstaGENI rack but ran into problems when creating the experiment using the images suggested from the knowlege base (FC4-STD, FC6-STD). Each of the FC4-STD, FC6-STD images result in "Invalid osid" when an experiment is run: {{{{
* /usr/testbed/lib/ns2ir/parse.tcl:
[tb-set-node-os] Invalid osid FC6-STD.
* ERROR: parse-ns: Parsing failed (error code 256)! * ERROR: batchexp: NS Parse failed! Cleaning up and exiting with status 1 ... Removing experiment directories ...
}}}
Links (ex. new image descriptor form) and information (available starting images) in the "Custom Os Images" instructions are specific to www.emulab.net and not to boss.utah.geniracks.net.
comment:5 Changed 12 years ago by
Created initial experiment with from the list of available images (FEDORA10-STD and FEDORA15-STD). NS file used FEDORA15-STD for the initial experiment definition.
Received emails for starting the new experiment and for the successful custom image creation.
comment:6 Changed 12 years ago by
Successfully verified the new custom image "LNFEDORA15", sending email to instageni-ops@flux.utah.edu to request that this image be made available via AM API.
comment:7 Changed 12 years ago by
Reviewings the https://users.emulab.net/trac/protogeni/wiki/ImageHowTo page and have run into an error, the createimage.py fails:
$ ./createimage.py CustomFedora15 urn:publicid:IDN+utah.geniracks.net+sliver+8950 File "./createimage.py", line 40 global = 1 ^ SyntaxError: invalid syntax
Feedback on documentation:
In the "Creating a New Image" section, it would be helpful to have a link to the location of the test scripts which contain the "createimage.py" script.
I searched the PG wiki for "createimage.py and only one match was found, it was the page ImageHowTo, which is the page being reviewed. When done with testing, there should be an example added to the ProtoGENI Test Script page that describes the "createimage.py" script.
comment:8 Changed 12 years ago by
On 9/5/12 12:12 PM, Leigh Stoller wrote:
global = 1 SyntaxError?: invalid syntax
Sorry, I missed that file in the commit. Should be installed now.
Feedback on documentation:
In the "Creating a New Image" section, it would be helpful to have a link to the location of the test scripts which contain the "createimage.py" script.
Okay, will do.
the page [https://users.emulab.net/trac/protogeni/wiki/ImageHowTo ImageHowTo?], which is the page being reviewed. When done with testing, there should be an example added to the ProtoGENI Test Script page that describes the "createimage.py" script.
Okay.
Lbs
Picked up the new version of the tools, and re-ran command. Which now fails as follows:
$ ./createimage.py CustomFedora15 urn:publicid:IDN+utah.geniracks.net+sliver+8950 Got my SA credential No such slice registered here: Slice does not exist
I am using the sliver URN for the host to duplicate from the sliver manifest:
<node client_id="host1" component_id="urn:publicid:IDN+utah.geniracks.net+node+pc3" component_manager_id="urn:publicid:IDN+utah.geniracks.net+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+utah.geniracks.net+sliver+8950">
This does not work, what should I be using for a sliver urn?
comment:9 Changed 12 years ago by
On 9/5/12 1:13 PM, Leigh Stoller wrote:
The test scripts all require that a slice urn be provided if the slice is not the test script default. I will have to make some changes to the script (or you can look inside and make the obvious change).
All my tests have been with slices created using the other test scripts in that directory.
Oh, I see. You created this slice with omni or Flack using your GPO identity? In that case you have to do this from your GPO ops node since that is where your ssl certificate and slice credential are hosted.
So on *your* ops, run the createimage.py script as before, but add "-n lncustom" to the command line:
yourops> createimage.py -n lncustom ...
You will need to grab a copy of createimage.py of course, since the current version in not installed on your ops yet.
A TODO item for OMNI is to add support for this. Not sure who we ask for that though.
Lbs
On 9/5/12 1:13 PM, Leigh Stoller wrote:
The test scripts all require that a slice urn be provided if the slice is not the test script default. I will have to make some changes to the script (or you can look inside and make the obvious change).
All my tests have been with slices created using the other test scripts in that directory.
Oh, I see. You created this slice with omni or Flack using your GPO identity? In that case you have to do this from your GPO ops node since that is where your ssl certificate and slice credential are hosted.
So on *your* ops, run the createimage.py script as before, but add "-n lncustom" to the command line:
yourops> createimage.py -n lncustom ...
You will need to grab a copy of createimage.py of course, since the current version in not installed on your ops yet.
A TODO item for OMNI is to add support for this. Not sure who we ask for that though.
Lbs
If the credentials used to create the slice, impact where the createimage.py script can be run than it should be documented.
If I use my PG Utah credentials, do I have to run the createimage.py from ops.emulab.com?
comment:10 Changed 12 years ago by
- Created a new slice "IGcustom" using my PG Utah credentials.
- Customized sliver.
- On ops.utah.geniracks.net downloaded latest tools in my home directory.
- Ran createimage.py script, but it still fails:
> ./createimage.py -n IGcustom CustomFedora15 urn:publicid:IDN+utah.geniracks.net+sliver+8991 Got my SA credential Asking for slice credential for IGcustom Got the slice credential Creating the Image ... Slice does not exist: Could not create image
comment:11 follow-up: 12 Changed 12 years ago by
Forgot to mention that i also tried adding the suggested "Also add -m https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/cm", but when I did the argument was not recognized:
> ./createimage.py -n IGcustom CustomFedora15 urn:publicid:IDN+utah.geniracks.net+sliver+8991 -m https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/cm usage: ./createimage.py [option...] Options: -a file, --admincredentials=file read admin credentials from file -c file, --credentials=file read self-credentials from file [default: query from SA] -d, --debug be verbose about XML methods invoked -f file, --certificate=file read SSL certificate from file [default: ~/.ssl/encrypted.pem] -h, --help show options and usage -l uri, --sa=uri specify uri of slice authority [default: local] -m uri, --cm=uri specify uri of component manager [default: local] -n name, --slicename=name specify human-readable name of slice [default: mytestslice] -p file, --passphrase=file read passphrase from file [default: ~/.ssl/password] -r file, --read-commands=file specify additional configuration file -s file, --slicecredentials=file read slice credentials from file [default: query from SA] >
comment:12 Changed 12 years ago by
Replying to lnevers@bbn.com:
./createimage.py -n IGcustom CustomFedora15 urn:publicid:IDN+utah.geniracks.net+sliver+8991 -m https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/cm
It seem argument placement matters:
> ./createimage.py -n IGcustom -m https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/cm CustomFedora15 urn:publicid:IDN+utah.geniracks.net+sliver+8991 Got my SA credential Asking for slice credential for IGcustom Got the slice credential Creating the Image ... ['urn:publicid:IDN+utah.geniracks.net+image+emulab-net:CustomFedora15', 'https://boss.utah.geniracks.net/image_metadata.php?uuid=b95afc42-f787-11e1-8336-00009b6224df']
So, in summary here is the outline of items that made this work for me:
- Use PG credentials
- Run command on ops.utah.geniracks.net
- Specify sliver (-n slicename)
- Specify component manager (-m uri)
- Required image snapshot name is not obvious from command help.
- Requires sliver URN for the host to be duplicated is not obvious from command help.
The above should should be in the documentation.
comment:13 Changed 12 years ago by
Successfully used the image snapshot created by the createimage.py script in a request RSpec that included both:
- 'urn:publicid:IDN+utah.geniracks.net+image+emulab-net:CustomFedora15'
- 'https://boss.utah.geniracks.net/image_metadata.php?uuid=b95afc42-f787-11e1-8336-00009b6224df'
Used both disk_image types (urn & url) with PG Utah and PG GPO credentials on InstaGENI rack VMs.
RSpec node definitions used:
<node client_id="host1" exclusive="false"> <sliver_type name="emulab-openvz" /> <disk_image name="urn:publicid:IDN+utah.geniracks.net+image+emulab-net:CustomFedora15"/> <interface client_id="host1:if0" /> <interface client_id="host1:if1" /> </node> <node client_id="host2" exclusive="false"> <sliver_type name="emulab-openvz" /> <disk_image url="https://boss.utah.geniracks.net/image_metadata.php?uuid=b95afc42-f787-11e1-8336-00009b6224df"/> <interface client_id="host2:if0" /> <interface client_id="host2:if1" /> </node> <link client_id="host1-and-host2-0"> <interface_ref client_id="host1:if0"/> <interface_ref client_id="host2:if0"/> </link>
comment:14 Changed 12 years ago by
Testing is completed for VM custom images, the following is a summary of documentation items that are requested for the "Creating a New Image" section:
- Document that credentials must be from aggregate's authority. (Unlike AM API). As an example describe that PG credentials are used for InstaGENI Utah snapshot.
- Run command on the aggregate's ops machine. If example is provided, may show that ops.utah.geniracks.net is used for InstaGENI Utah aggregate.
- Specify slice name to overide defaults (-n slicename)
- Specify component manager (-m uri)
- Describe all options that are required, "custom image name" and "sliver URN" for the host to be duplicated.
An example command with all of the above would be helpful:
ops> ./createimage.py -n slicename -m https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/cm CustomImageName urn:publicid:IDN+utah.geniracks.net+sliver+8991
comment:15 Changed 12 years ago by
I re-executed the procedures to create a snapshot from a dedicated node (raw pc). Followed the same procedure, but used only raw pcs:
- Created a sliver with one raw pc, no image specified, default was used.
- Customized PC by installing a bunch of software packages. (sudo yum install iperf yum-utils sysstat iostat mpstat iptraf ntop vnstat -y)
- Creates a snapshot successfully:
> ./createimage.py -n rawcust -m https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/cm CustomF15rawpc urn:publicid:IDN+utah.geniracks.net+sliver+9024 Got my SA credential Asking for slice credential for rawcust Got the slice credential Creating the Image ... ['urn:publicid:IDN+utah.geniracks.net+image+emulab-net:CustomF15rawpc', 'https://boss.utah.geniracks.net/image_metadata.php?uuid=847c50f1-f796-11e1-8336-00009b6224df']
- Created sliver to verify that the URN and URL could be used to request the customized raw-pc image, but sliver created with the URN and URL for the customized image above do not have any of the packages that were installed as part of the customization in step 2.
Am I doing something wrong? I assume I can follow the same procedure, as long as I use raw-pc images to create snapshots for raw-pcs.
comment:16 Changed 12 years ago by
On 9/5/12 5:27 PM, Leigh Stoller wrote:
The logs show this:
<disk_image
name="https://boss.utah.geniracks.net/image_metadata.php?uuid=847c50f1-f796-11e1-8336-00009b6224df"/>
which is incorrect; when using a url it has to be specified with a url tag:
<disk_image
url="https://boss.utah.geniracks.net/image_metadata.php?uuid=847c50f1-f796-11e1-8336-00009b6224df"/>
I will put in some sanity checks to catch this.
I did not see a request that used the URN format ...
Lbs
Sorry I used the wrong tag in the disk_image.
I have modified the rspec to use the "url" tag and created a sliver named "verifyraw2" using the custom image url, but I still do not see the customization in the image that is loaded on the node.
I will now re-try the sliver with the "urn" tag next.
comment:17 Changed 12 years ago by
Just create a sliver named "verifyurn" using the "urn" tag for the custom image, but still did not find the packages that should be in the custom image.
comment:18 Changed 12 years ago by
On 9/6/12 10:37 AM, Leigh Stoller wrote:
Hi. The disk_image tag goes *inside* sliver_type. Like:
<node client_id="mynode" exclusive="true">
<sliver_type name="raw-pc">
<disk_image name="urn:publicid:IDN+foo.net+image+foo-net:booboo"/>
</sliver_type>
</node>
Lbs
You are right Leigh!
I forgot to run rspeclint!!! I re-ran a verification sliver and I do get all the customizations. SO there is no issue for raw-pcs custom images.
Are aggregates ever going to reject an invalid rpsec?!? ... which I keep writing :-)
comment:19 Changed 11 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
The https://users.emulab.net/trac/protogeni/wiki/ImageHowTo describes how to create a custom image, also the custom image feature is available in flack, and I got my wish (rspeclint is run on every request). Closing this ticket.
Starting with instructions found in the Custom OS Images section of the Emulab Tutotirial.
In Creating your Custom Image section, there is no mention of the Image versions that are supported for OpenVZ vs dedicated nodes Custom OS. I can make a custom Ubuntu image for dedicated nodes, but for VMs I need to have a fedora image, which is a restriction for OpenVZ that still applies. Right?