To enable the configuration drive, pass the
--config-drive=trueparameter to the nova boot command.The following example enables the configuration drive and passes user data, two files, and two key/value metadata pairs, all of which are accessible from the configuration drive:
$ nova boot --config-drive=true --image my-image-name --key-name mykey --flavor 1 --user-data ./my-user-data.txt myinstance --file /etc/network/interfaces=/home/myuser/instance-interfaces --file known_hosts=/home/myuser/.ssh/known_hosts --meta role=webservers --meta essential=false
You can also configure the Compute service to always create a configuration drive by setting the following option in the
/etc/nova/nova.conffile:force_config_drive=true
![[Note]](../common/images/admon/note.png)
Note If a user passes the
--config-drive=trueflag to the nova boot command, an administrator cannot disable the configuration drive.If your guest operating system supports accessing disk by label, you can mount the configuration drive as the
/dev/disk/by-label/device. In the following example, the configuration drive has theconfigurationDriveVolumeLabelconfig-2volume label.# mkdir -p /mnt/config # mount /dev/disk/by-label/config-2 /mnt/config
![[Note]](../common/images/admon/note.png)
Note Ensure that you use at least version 0.3.1 of CirrOS for configuration drive support.
If your guest operating system does not use
udev, the/dev/disk/by-labeldirectory is not present.You can use the blkid command to identify the block device that corresponds to the configuration drive. For example, when you boot the CirrOS image with the
m1.tinyflavor, the device is/dev/vdb:# blkid -t LABEL="config-2" -odevice
/dev/vdb
Once identified, you can mount the device:
# mkdir -p /mnt/config # mount /dev/vdb /mnt/config
In this example, the contents of the configuration drive are as follows:
ec2/2009-04-04/meta-data.json ec2/2009-04-04/user-data ec2/latest/meta-data.json ec2/latest/user-data openstack/2012-08-10/meta_data.json openstack/2012-08-10/user_data openstack/content openstack/content/0000 openstack/content/0001 openstack/latest/meta_data.json openstack/latest/user_data
The files that appear on the configuration drive depend on the arguments that you pass to the nova boot command.
The following example shows the contents of the
openstack/2012-08-10/meta_data.json and
openstack/latest/meta_data.json files.
These files are identical. The file contents are formatted for
readability.
{
"availability_zone":"nova",
"files":[
{
"content_path":"/content/0000",
"path":"/etc/network/interfaces"
},
{
"content_path":"/content/0001",
"path":"known_hosts"
}
],
"hostname":"test.novalocal",
"launch_index":0,
"name":"test",
"meta":{
"role":"webservers",
"essential":"false"
},
"public_keys":{
"mykey":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDBqUfVvCSez0/Wfpd8dLLgZXV9GtXQ7hnMN+Z0OWQUyebVEHey1CXuin0uY1cAJMhUq8j98SiW+cU0sU4J3x5l2+xi1bodDm1BtFWVeLIOQINpfV1n8fKjHB+ynPpe1F6tMDvrFGUlJs44t30BrujMXBe8Rq44cCk6wqyjATA3rQ== Generated by Nova\n"
},
"uuid":"83679162-1378-4288-a2d4-70e13ec132aa"
}
Note the effect of the --file
/etc/network/interfaces=/home/myuser/instance-interfaces
argument that was passed to the nova
boot command. The contents of this file
are contained in the
openstack/content/0000 file
on the configuration drive, and the path is specified
as /etc/network/interfaces in the
meta_data.json file.
The following example shows the contents of the
ec2/2009-04-04/meta-data.json and the
ec2/latest/meta-data.json files. These
files are identical. The file contents are formatted to improve
readability.
{
"ami-id":"ami-00000001",
"ami-launch-index":0,
"ami-manifest-path":"FIXME",
"block-device-mapping":{
"ami":"sda1",
"ephemeral0":"sda2",
"root":"/dev/sda1",
"swap":"sda3"
},
"hostname":"test.novalocal",
"instance-action":"none",
"instance-id":"i-00000001",
"instance-type":"m1.tiny",
"kernel-id":"aki-00000002",
"local-hostname":"test.novalocal",
"local-ipv4":null,
"placement":{
"availability-zone":"nova"
},
"public-hostname":"test.novalocal",
"public-ipv4":"",
"public-keys":{
"0":{
"openssh-key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDBqUfVvCSez0/Wfpd8dLLgZXV9GtXQ7hnMN+Z0OWQUyebVEHey1CXuin0uY1cAJMhUq8j98SiW+cU0sU4J3x5l2+xi1bodDm1BtFWVeLIOQINpfV1n8fKjHB+ynPpe1F6tMDvrFGUlJs44t30BrujMXBe8Rq44cCk6wqyjATA3rQ== Generated by Nova\n"
}
},
"ramdisk-id":"ari-00000003",
"reservation-id":"r-7lfps8wj",
"security-groups":[
"default"
]
}
The
openstack/2012-08-10/user_data,
openstack/latest/user_data,
ec2/2009-04-04/user-data, and
ec2/latest/user-data file are
present only if the --user-data
flag and the contents of the user data file are passed
to the nova boot command.
The default format of the configuration drive as an
ISO 9660 file system. To explicitly specify the ISO
9660 format, add the following line to the
/etc/nova/nova.conf
file:
config_drive_format=iso9660
By default, you cannot attach the configuration drive image as
a CD drive instead of as a disk drive. To attach a CD drive, add
the following line to the
/etc/nova/nova.conf file:
config_drive_cdrom=true
For legacy reasons, you can configure the
configuration drive to use VFAT format instead of ISO
9660. It is unlikely that you would require VFAT
format because ISO 9660 is widely supported across
operating systems. However, to use the VFAT format,
add the following line to the
/etc/nova/nova.conf
file:
config_drive_format=vfat
If you choose VFAT, the configuration drive is 64 MB.

