Thank you Pádraig Brady, I learn a lot, but still can not get some of them
since centos has no nbd supported, I use libguestfs-mount to inject ssh-key, and I make it work you said if I can inject ssh-key, I can inject file, etc. but I don't know how I added --meta key=value to boot command, I notice that when instance boot, it said No suck file or directory, do I have to build meta.js myself? I still don't get metadata, is key=value I specified will store in there, can I see that's in metadata server? so now, I make injection function work, and seems don't know how to use them, please give me some examples, On Fri, Jun 1, 2012 at 8:16 PM, Pádraig Brady <p...@draigbrady.com> wrote: > On 06/01/2012 10:55 AM, William Herry wrote: > > I have been spend all days to search metadata and file injection related > info with Google, > > there are few doc or blog about this topic (or I am not use the proper > keyword) > > I know about this is only pieces > > > > what I know now is: > > cloud-init can inject files to instance and a lot other things, seems > only on ubuntu, > > cloud-init is available for Fedora now. > There is also a test package available for RHEL and derivatives: > http://pbrady.fedorapeople.org/cloud-init-el6/ > > > I can inject ssh key with qemu-nbd > > If you can do that, you can also inject 'metadata', > 'files' and root 'passwords'. Note only failure to > inject 'files' will result in a failure to boot the guest. > > > my question is: > > what is in metadata, how can I use matadata > > there is no injection related sub command in nova > > > > any related URL will be very appreciate > > The `nova` command interface is defined in: > > https://github.com/openstack/python-novaclient/blob/master/novaclient/v1_1/shell.py > It would be good to have a man page for the `nova` > command that you could reference. > > Anyway here is what you get when executing the > help for the 'boot' command: > > > # nova help boot > usage: nova boot [--flavor <flavor>] [--image <image>] [--meta <key=value>] > [--file <dst-path=src-path>] [--key_name <key_name>] > [--user_data <user-data>] > [--availability_zone <availability-zone>] > [--security_groups <security_groups>] > [--block_device_mapping <dev_name=mapping>] > [--hint <key=value>] > [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr>] > [--config-drive <value>] [--poll] > <name> > > Boot a new server. > > Positional arguments: > <name> Name for the new server > > Optional arguments: > --flavor <flavor> Flavor ID (see 'nova flavor-list'). > --image <image> Image ID (see 'nova image-list'). > --meta <key=value> Record arbitrary key/value metadata. May be give > multiple times. > --file <dst-path=src-path> > Store arbitrary files from <src-path> locally to > <dst- > path> on the new server. You may store up to 5 > files. > --key_name <key_name> > Key name of keypair that should be created earlier > with the command keypair-add > --user_data <user-data> > user data file to pass to be exposed by the metadata > server. > --availability_zone <availability-zone> > The availability zone for instance placement. > --security_groups <security_groups> > comma separated list of security group names. > --block_device_mapping <dev_name=mapping> > Block device mapping in the format > <dev_name=<id>:<typ > e>:<size(GB)>:<delete_on_terminate>. > --hint <key=value> Send arbitrary key/value pairs to the scheduler for > custom use. > --nic <net-id=net-uuid,v4-fixed-ip=ip-addr> > Create a NIC on the server. Specify option multiple > times to create multiple NICs. net-id: attach NIC to > network with this UUID (optional) v4-fixed-ip: IPv4 > fixed address for NIC (optional). > --config-drive <value> > Enable config drive > --poll Blocks while instance builds so progress can be > reported. > > > Here are the related APIs that are used by the command above: > > http://docs.openstack.org/api/openstack-compute/2/content/CreateServers.html > > So what happens when you present --meta options above? > That will bubble through the API to: > https://github.com/openstack/nova/blob/master/nova/virt/disk/api.py > If you look at _inject_metadata_into_fs() there, you can see > that a 'meta.js' file is written to the / directory. > Logic within the guest can then inspect that as required. > > cheers, > Pádraig. > -- William Herry ==================== williamherrych...@gmail.com
_______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp