Uploaded image for project: 'OASIS Topology and Orchestration Specification for Cloud Applications (TOSCA) TC'
  1. OASIS Topology and Orchestration Specification for Cloud Applications (TOSCA) TC
  2. TOSCA-2

Review Proposal: TOSCA support for simple web application deployment use cases via YAML app manifest

    XMLWordPrintable

    Details

    • Type: Task
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Spec
    • Labels:
      None
    • Proposal:
      Hide

      I would like to propose that we adopt a simplified YAML manifest approach to defining an application's requirements, configuration, and other dependencies. A .yml file should be added to the root of the application to hold various installation details for the application. This removes the need to enter the details each time the app is pushed, and makes sure the values are the same each time.

      YAML is a human-friendly, cross language, Unicode based data serialization language designed around the common native data types of agile programming languages. YAML was specifically created to work well for common use cases such as: configuration files, log files, interprocess messaging, cross-language data sharing, object persistence, and debugging of complex data structures.

      Use Case: Deploying Bugzilla to the Cloud

      Scenario: Company XYZ wishes to deploy Bugzilla onto the cloud so that it can scale as their development team grows and be accessed securely via the INTERNET. Diane the DevOp has been tasked with installing it on Cloud Hosting Provider ABC running on CloudStack and does so. Two months later, Management decides that Cloud Hosting Provider ABC SLA agreements are not sufficient and asks Diane to switch to Cloud Hosting Provider 123 running OpenStack. Diane should be able push the same application configuration to the new provider with minimal or no changes.

      Background: Bugzilla is one of the most popular Open Source web application and is written in perl. Bugzilla is a "Defect Tracking System" or "Bug-Tracking System". Defect Tracking Systems allow individual or groups of developers to keep track of outstanding bugs in their product effectively. A large number of companies, organizations, and projects use Bugzilla ranging from NASA to The New York Times, Yahoo! and many more.

      Bugzilla-4.0.2 includes additional patches as well as experimental changes to make it PSGI compatible. Bugzilla uses PSGI and Plack, an interface between Perl web applications and web servers and a Perl module and toolkit that contains PSGI middleware, helpers and adapters to web servers. It also requires instantiating a MySQL database.

      While many Linux distributions include Bugzilla and its dependencies in their native package management systems, installing Bugzilla to the cloud with root access on any Linux-based cloud infrastructure system should be as simple as finding the Bugzilla package in the package management application and installing it using the normal command syntax. As Bugzilla also is able to run on Windows Operating Systems, theoretically a manifest should be able to also support deploying to Windows Azure cloud as well.

      Any manifest should also include information to enable the cloud's tooling to perform the proper web server configuration automatically on installation.

      Installing Bugzilla

      Bugzilla is configured by updating the myconfig.pl file before pushing the application to a server.

      The typical manual installation proceeds as follows:

      Install Perl (5.8.1 or above)
      Install a Database Engine
      Install a Webserver
      Install Bugzilla
      Install Perl modules
      Install a Mail Transfer Agent (Sendmail 8.7 or above, or an MTA that is Sendmail-compatible with at least this version)
      Configure all of the above. (see http://www.bugzilla.org/docs/4.0/en/html/installation.html for details)
      Allocate Cloud Resources: Memory, Instances, Services

      Example of Manifest approach with .yml for Deploying Bugzilla to the Cloud - as done with ActiveState's Stackato - a CloudFoundry based Platform as a Service that runs on EC2, OpenStack, vSphere, CloudStack, Xen & KVM

      Bugzilla sample:

      https://github.com/ActiveState/stackato-samples/blob/master/perl/bugzilla/stackato.yml

      Docs:

      http://docs.stackato.com/deploy.html#stackato-yml-options

      Kind Regards,

      Diane Mueller
      ActiveState
      dianem@activestate.com

      Show
      I would like to propose that we adopt a simplified YAML manifest approach to defining an application's requirements, configuration, and other dependencies. A .yml file should be added to the root of the application to hold various installation details for the application. This removes the need to enter the details each time the app is pushed, and makes sure the values are the same each time. YAML is a human-friendly, cross language, Unicode based data serialization language designed around the common native data types of agile programming languages. YAML was specifically created to work well for common use cases such as: configuration files, log files, interprocess messaging, cross-language data sharing, object persistence, and debugging of complex data structures. Use Case: Deploying Bugzilla to the Cloud Scenario: Company XYZ wishes to deploy Bugzilla onto the cloud so that it can scale as their development team grows and be accessed securely via the INTERNET. Diane the DevOp has been tasked with installing it on Cloud Hosting Provider ABC running on CloudStack and does so. Two months later, Management decides that Cloud Hosting Provider ABC SLA agreements are not sufficient and asks Diane to switch to Cloud Hosting Provider 123 running OpenStack. Diane should be able push the same application configuration to the new provider with minimal or no changes. Background: Bugzilla is one of the most popular Open Source web application and is written in perl. Bugzilla is a "Defect Tracking System" or "Bug-Tracking System". Defect Tracking Systems allow individual or groups of developers to keep track of outstanding bugs in their product effectively. A large number of companies, organizations, and projects use Bugzilla ranging from NASA to The New York Times, Yahoo! and many more. Bugzilla-4.0.2 includes additional patches as well as experimental changes to make it PSGI compatible. Bugzilla uses PSGI and Plack, an interface between Perl web applications and web servers and a Perl module and toolkit that contains PSGI middleware, helpers and adapters to web servers. It also requires instantiating a MySQL database. While many Linux distributions include Bugzilla and its dependencies in their native package management systems, installing Bugzilla to the cloud with root access on any Linux-based cloud infrastructure system should be as simple as finding the Bugzilla package in the package management application and installing it using the normal command syntax. As Bugzilla also is able to run on Windows Operating Systems, theoretically a manifest should be able to also support deploying to Windows Azure cloud as well. Any manifest should also include information to enable the cloud's tooling to perform the proper web server configuration automatically on installation. Installing Bugzilla Bugzilla is configured by updating the myconfig.pl file before pushing the application to a server. The typical manual installation proceeds as follows: Install Perl (5.8.1 or above) Install a Database Engine Install a Webserver Install Bugzilla Install Perl modules Install a Mail Transfer Agent (Sendmail 8.7 or above, or an MTA that is Sendmail-compatible with at least this version) Configure all of the above. (see http://www.bugzilla.org/docs/4.0/en/html/installation.html for details) Allocate Cloud Resources: Memory, Instances, Services Example of Manifest approach with .yml for Deploying Bugzilla to the Cloud - as done with ActiveState's Stackato - a CloudFoundry based Platform as a Service that runs on EC2, OpenStack, vSphere, CloudStack, Xen & KVM Bugzilla sample: https://github.com/ActiveState/stackato-samples/blob/master/perl/bugzilla/stackato.yml Docs: http://docs.stackato.com/deploy.html#stackato-yml-options Kind Regards, Diane Mueller ActiveState dianem@activestate.com

      Description

      Proposal: TOSCA support for simple web application deployment use cases via YAML app manifest

      Before going too deep with creating a interoperable portable framework for supporting complex application deployments on the cloud. TOSCA should ensure that the simple web applications, those using common web frameworks like spring, play, django, rails, psgi, or node.js, have basic requirements of apache or nginx as web servers, and need to deploy a mysql, redis, mongodb or other open source databases - are easily supported with whatever approach we decide to take. Many aspects of an application can be affected by cloud infrastructure that one chooses to install the application on. This process can be made easier and others more difficult depending on the level of complexity involved in specifying the the apps configuration and deployment requirements - even for the simplest of web applications.

        Attachments

          Activity

            People

            • Assignee:
              kraman Krishna Raman
              Reporter:
              dianem Diane Mueller (Inactive)
            • Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: