Instance management is where the real power of EC2 model comes into action. Instance management gives you more flexibility because a vanilla image can be used for multiple purposes (web server, database server, etc.) through scripting. If this were to be done on an per image basis, any changes to any information would me a re-bundling, re-uploading, and re-registering of an image. A system administrator can pretty much script to deploy any environment that is needed for the Enterprise. From application configuration to setting up scheduled backups to Walrus (via snapshots), the limitation of what can be done is limited by the imagination of the system administrator.
There are various ways to do instance management. We have documented a few. More methods - with sample recipes - will be covered in the near future. The following methods will be covered - with sample recipes for each - in this document:
Typically, this is done by editing the rc.local script. The rc.local file runs once before all >other scripts have run, but before the logon prompt appears. Certain linux distributions, such as Debian, use other ways to execute scripts on start-up. For more information, please see Creating Custom Start-Up Scripts.
Cloud-init enables control of early initialization of a cloud instance. It is standard in all certified Amazon Linux AMIs. For more information, please see Using Cloud-init For Instance Management.
Puppet is a system for automating system administration tasks. It can be used to deploy a wide array of applications and development environments. For more information, please see Using Puppet for Instance Management.
Chef is an open-source systems integration framework specialized for automating deployments for the cloud. Chef uses the Knife plugin for Eucalyptus to create, bootstrap, and manage instances. For more information, please see Using Chef for Instance Management.