Click here to load reader
Upload
dmitri-babaev
View
479
Download
1
Embed Size (px)
DESCRIPTION
Cloud group, Moscow, march 2012 presentation slides
Citation preview
Deployment and Cloudsproblems and solutions
Deployment tools for the pre-cloud age
● push approach○ Fabric○ Capistrano○ MCollective○ Puppet
● pull approach○ Chef○ Puppet
● push approach is good for deployment from scratch● pull approach is good for continuous support for existing
environment
Push approach
Host
Host
Host
Deployment script
Deployment manager
SSH
Pull approach
Agent
Agent
Agent
Deployment state
Master
Differences between traditional and cloud deployment
● Traditional deployment○ Resources in form of servers is already available
with OS and remote administration tools already installed
● Cloud deployment○ Resources in form of VMs, DB schemas, NoSQL
storages should be requested during deployment process
○ Additional hardware resources can be requested and freed during environment lifetime
○ Cloud deployment usually manages larger amounts of resources (especially during load spikes)
Problems of the traditional tools in cloud environments
● No support for cloud resource provisioning as part of the deployment
● Cloud and local resources are managed by different tools
● Deployment tools do not take lesser stability of cloud environment into the account
● Additional features of cloud environments (golden images etc.) are not supported
● And is not supported by traditional deployment tool
● Pull approach is not suitable for resource provisioning
● VMs is not the only type of resource, service instances (e. g. DB schemas) are also possible types of resources
● The popular approach is to use two separate tools: one tool for deployment and another tool for resource provisioning (e.g. AWS CloudFormation and Puppet)
Resource provisioning is not a part of the deployment process
Local and cloud resources are managed differently
● Local virtualization systems and public clouds provide different API and management tools
● Local services (e.g. DBs, NoSQL storages) require explicit actions to be installed and started while cloud service instances are created via cloud API
● There is no single place to search for a resource of the particular environment
Local DC
Hybrid environment
VM DBaaSVM
VMVMDeployment
managerDeployment
state
Lesser stability of cloud environment is not taken into the
account
● Request to create several hundred of VMs is not unusual for the cloud environment
● Recoverable resource provisioning failures are not uncommon
● There is no need to redeploy hundreds of environment VMs if one is failed
Cloud oriented deployment tools
● PaaS● Juju● Pallet● Knife cloud instances
Chef knife cloud instances
● Also was known as chef bootstrap● Prepares cloud VM instance with Chef
support● Assigns a role to newly created VM● Initiates execution of recipes associated with
VM role○ Chef server is required to download recipes
knife ec2 server create -r "role[webserver]" -I ami-2d4aa444 --flavor m1.small -G www,default -x ubuntu -N server01
Pallet
● Resource provisioning is part of the deployment
● Is similar to fabric or capistrano but it allows to request cloud resources using special commands
● Deployment process is defined as the set of actions
○ Action set is defined as the closure script
Juju
● A single unit of management is service, e.g. web server or DB
● Required resources are requested automatically on the cloud during the service creation
juju bootstrapjuju deploy local:oneiric/mysqljuju deploy local:oneiric/wordpressjuju add-relation wordpress mysqljuju expose wordpress
Platform as a Service (PaaS)
● NoOPS: deployment of application and services is done by PaaS itself
● User works with PaaS API instead of the remote administration tools of OS
● High-level logic of PaaS service management is still required○ e.g. AWS CloudFormation
● PaaS examples○ Heroku○ Cloud Foundry○ Google AppEngine