Appendix A. OpenStack command-line interface cheat sheet

The following tables give a quick reference of the most used command-line commands.

Table A.1. Identity (keystone)

Description Command
List all users
$ keystone user-list
List Identity service catalog
$ keystone catalog
List all services in service catalog
$ keystone service-list
Create new user
$ keystone user-create --name NAME --tenant-id TENANT \
 --pass PASSWORD --email EMAIL --enabled BOOL
Create new tenant
$ keystone tenant-create --name NAME --description "DESCRIPTION" \
 --enabled BOOL

Table A.2. Image Service (glance)

Description Command
List images you can access
$ glance image-list
Delete specified image
$ glance image-delete IMAGE
Describe a specific image
$ glance image-show IMAGE
Update image
$ glance image-update IMAGE
Manage images
Kernel image
$ glance image-create --name "cirros-threepart-kernel" \
 --disk-format aki --container-format aki --is-public True \
 --file ~/images/cirros-0.3.1~pre4-x86_64-vmlinuz
RAM image
$ glance image-create -—name "cirros-threepart-ramdisk" \
 --disk-format ari --container-format ari --is-public True \
 --file ~/images/cirros-0.3.1~pre4-x86_64-initrd
Three-part image
$ glance image-create --name "cirros-threepart" --disk-format ami \
 --container-format ami --is-public True \
 --property kernel_id=$KID—property ramdisk_id=$RID \
 --file ~/images/cirros-0.3.1~pre4-x86_64-blank.img
Register raw image
$ glance image-create --name "cirros-qcow2" --disk-format qcow2 \
 --container-format bare --is-public True \
 --file ~/images/cirros-0.3.1~pre4-x86_64-disk.img

Table A.3. Compute (nova)

Description Command
List instances, notice status of instance
$ nova list
List images
$ nova image-list
List flavors
$ nova flavor-list
Boot an instance using flavor and image names (if names are unique)
$ nova boot --image IMAGE --nic net-id=NETWORKID \ 
--flavor FLAVOR INSTANCE_NAME
$ nova boot --image cirros-0.3.1-x86_64-uec \
-nic net-id=3d706957-7696-4aa8-973f-b80892ff9a95 \
--flavor m1.tiny MyFirstInstance
Login to instance
# ip netns
# ip netns exec NETNS_NAME ssh USER@SERVER
# ip netns exec qdhcp-6021a3b4-8587-4f9c-8064-0103885dfba2 \
 ssh cirros@10.0.0.2

Note, in CirrOS the password for user cirros is "cubswin:)" without the quotes.

Show details of instance
$ nova show NAME
$ nova show MyFirstInstance
View console log of instance
$ nova console-log MyFirstInstance
Set metadata on an instance
$ nova meta volumeTwoImage set newmeta='my meta data'
Create an instance snapshot
$ nova image-create volumeTwoImage snapshotOfVolumeImage
$ nova image-show snapshotOfVolumeImage
Pause, suspend, stop, rescue, resize, rebuild, reboot an instance
Pause
$ nova pause NAME
$ nova pause volumeTwoImage
Unpause
$ nova unpause NAME
Suspend
$ nova suspend NAME
Unsuspend
$ nova resume NAME
Stop
$ nova stop NAME
Start
$ nova start NAME
Rescue
$ nova rescue NAME
Resize
$ nova resize NAME FLAVOR
$ nova resize my-pem-server m1.small
$ nova resize-confirm my-pem-server1
Rebuild
$ nova rebuild NAME IMAGE
$ nova rebuild newtinny cirros-qcow2
Reboot
$ nova reboot NAME
$ nova reboot newtinny
Inject user data and files into an instance
$ nova boot --user-data FILE INSTANCE \
--image IMAGE --nic net-id=NETWORKID \
--flavor FLAVOR INSTANCE_NAME
$ nova boot --user-data userdata.txt --image cirros-qcow2 \
--nic net-id=3d706957-7696-4aa8-973f-b80892ff9a95 \
--flavor m1.tiny MyUserdataInstance2

To validate that the file is there, ssh into the instance, and look in /var/lib/cloud for the file.

Inject a keypair into an instance and access the instance with that keypair
Create keypair
$ nova keypair-add test > test.pem
$ chmod 600 test.pem
Boot
$ nova boot --image cirros-0.3.0-x86_64 --flavor m1.small \
--nic net-id=3d706957-7696-4aa8-973f-b80892ff9a95 \
--key_name test MyFirstServer
Use ssh to connect to the instance
# ip netns exec qdhcp-98f09f1e-64c4-4301-a897-5067ee6d544f \
 ssh -i test.pem cirros@10.0.0.4
Manage security groups
Add rules to default security group allowing ping and SSH between instances in the default security group
$ nova secgroup-add-group-rule default default icmp -1 -1
$ nova secgroup-add-group-rule default default tcp 22 22

Table A.4. Networking (neutron)

Description Command
Create network
$ neutron net-create NAME
Create a subnet
$ neutron subnet-create NETWORK_NAME CIDR
$ neutron subnet-create my-network 10.0.0.0/29
List network and subnet
$ neutron net-list
$ neutron subnet-list
Examine details of network and subnet
$ neutron net-show ID_OR_NAME_OF_NETWORK
$ neutron subnet-show ID_OR_NAME_OF_NETWORK

Table A.5. Block Storage (cinder)

Description Command
Manage volumes and volume snapshots
Create a new volume
$ cinder create SIZE_IN_GB --display-name NAME
$ cinder create 1 --display-name MyFirstVolume
Boot an instance and attach to volume
$ nova boot --image IMAGE --flavor FLAVOR /
  --nic net-id=NETWORKID INSTANCE_NAME
$ nova boot --image cirros-qcow2 --flavor m1.tiny 
--nic net-id=3d706957-7696-4aa8-973f-b80892ff9a95 MyVolumeInstance
List volumes, notice status of volume
$ cinder list
Attach volume to instance after instance is active, and volume is available
$ nova volume-attach INSTANCE_ID VOLUME_ID auto
$ nova volume-attach MyVolumeInstance /dev/vdb auto
Manage volumes after login into the instance
List storage devices
# fdisk -l
Make filesystem on volume
# mkfs.ext3 /dev/vdb
Create a mountpoint
# mkdir /myspace
Mount the volume at the mountpoint
# mount /dev/vdb /myspace
Create a file on the volume
# touch /myspace/helloworld.txt
# ls /myspace
Unmount the volume
# umount /myspace

Table A.6. Object Storage (swift)

Description Command
Display information for the account, container, or object
$ swift stat
$ swift stat ACCOUNT
$ swift stat CONTAINER
$ swift stat OBJECT
List containers
$ swift list
Create a container
$ swift post CONTAINER_NAME
Upload file to a container
$ swift upload CONTAINER_NAME FILE_NAME
$ swift upload mycontainer myfile.txt
List objects in container
$ swift list container
Download object from container
$ swift download CONTAINER_NAME FILE_NAME
Upload with chunks, for large file
$ swift upload -S SIZE CONTAINER_NAME FILE_NAME
$ swift upload -S 64 container largeFile