In this chapter, you learned:
OpenStack uses cloud-init to customize an instance during deployment, for tasks such as injecting SSH public keys and configuring the host name. Cloud users can also pass user data to cloud-init to perform customization of the operating system or applications. Cloud-init accepts user data in several formats, including raw shell scripts and cloud-config formatted YAML.
Applications designed to take advantage of a cloud architecture utilize features such as load balancing, dynamic scaling, and a mixture of ephemeral and persistent storage for instances. Existing enterprise applications can be moved to the cloud without altering the architecture, however this is more costly in the long term.
Cloud applications deployed on OpenStack can be defined as a stack, using Heat templates. These templates can create any number of OpenStack resources, such as networks, routers, security groups and rules, instances, and load balancers.
Heat templates have three main sections. The parameters section allows arguments to be passed in. The resources section defines the OpenStack objects to create. Finally, the outputs section defines values that can be output after the stack has been deployed.
Users can create application credentials, allowing deployed applications to authenticate to OpenStack services.
Application stacks are managed using the various subcommands of the openstack stack command.