← Back to team overview

openstack team mailing list archive

Re: metadata and file injection

 

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@xxxxxxxxxxxxxx> 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
====================
WilliamHerryChina@xxxxxxxxx

References