Professional Documents
Culture Documents
Building A Sample Devops Environment On Oracle Cloud Infrastructure Ravello Service
Building A Sample Devops Environment On Oracle Cloud Infrastructure Ravello Service
DevOps Overview 3
DevOps Components 4
Pipeline 4
Automation 5
Summary 12
Learn more 13
DevOps Overview
DevOps is a software engineering practice that unifies the functions of software development and
operations. DevOps advocates for automation and monitoring at every stage of building software,
from integration, to testing, deployment, and managing infrastructure. The concept of DevOps is
founded on building a culture of collaboration between teams that have historically functioned in
relative siloes. The promised benefits of this collaboration include increased trust, faster software
releases, the ability to solve critical issues quickly, better management of unplanned work, and
alignment with business objectives.
Ø BUILD Ø DEPLOY
Ø DEPLOY
Ø UNIT TEST Ø STAGING
Ø FUNCTIONAL TEST
Ø DEVELOPMENT Ø PRODUCTION
Ø PERFORMANCE TEST
Figure 1: DevOps
DevOps Components
DevOps has many components, but the two most relevant to the subject of this paper are the
delivery pipeline and automation. The section that follows this one provides an example of how
these components are used in the DevOps process on Ravello.
Pipeline
The delivery pipeline is the process that defines the flow of work, starting with pushing new code to
source control and ending publishing that in production. The following steps outline a pipeline
process that encompasses three deployment environments:
5. The artifact that was deployed to the development environment is deployed to the test
environment, according to a defined schedule.
6. The artifact that was deployed to the system integration environment is deployed to the
production environment, according to a defined schedule.
• Automate code compilation and unit testing by using a build tool, such as Maven.
• Schedule the deployment of artifacts to each necessary environment. Most build
systems, such as Jenkins, support setting a cron schedule.
• Treat the database scripts like source code and store them in version control. Automate
the execution of the database scripts as part of the deployment process.
Ravello
Commit Trigger Job
Jenkin App Server
Master
Central Repository
(GitHub, Git)
Maven
Server
Figure 2 illustrates the following steps as an example of the DevOps process on Ravello:
1. Developers write code using their local computer or laptop with the help of Eclipse.
5. The build process copies the updated code from the Jenkins server to the Maven server.
6. The Maven server builds the code and runs the unit tests to validate the code.
7. After the build is successful, the Maven server packages the build and copies the
packaged build to the Jenkins server.
8. The Jenkins server initiates the deployment process and deploys the build in the
application server with the help of Apache Tomcat.
9. The end-user/QA/UAT team validates the latest build before pushing it to production.
By using the Ravello REST API or Python SDK, you can automate the process of building an
additional deployment environment that is a copy of the primary deployment environment. You can
publish the new deployment environment to the nearest cloud region of the end-user/QA/UAT
team to feel like a local user experience. You can also deploy the latest build and run the QA/UAT
testing. You can also use the Ravello REST API or Python SDK to automate the shutdown of the
environment that is running in the Ravello cloud after the QA/UAT team finishes their job.
ISVs find it challenging to fulfill the on-demand requirement for resources that are essentially
needed for short periods. IT managers also find it challenging to manage different versions of the
environment, like production and a developer’s version, each of which require a different
specifically configured set of servers.
Ravello, with its infinite resources, enables ISVs to start the full setup quickly, use the
environment, and shut down when done. And unlike most public clouds, Ravello offers data-
center-like capabilities such as the ability to run VMware VMs and layer 2 networking, which
enables you to fulfill the on-demand nature of resources, is easy to deploy, scales as you grow,
and reduces total cost of ownership (TCO).
By using the Ravello UI portal or just a few REST API calls, you can replicate your existing
environment running on Ravello, and then publish and run the replicated environment on any
For this exercise, we chose Jenkins, Apache Maven, and Apache Tomcat to build the DevOps
environment on Ravello. We also use Eclipse for writing the code and GitHub as a central code
repository.
• Jenkins is an open-source automation server that supports practically every tool as part
of your delivery pipelines. Jenkins can help to automate continuous integration and
continuous delivery.
• GitHub is a web-based version control system that uses Git. In addition to providing the
distributed version control and source code management functionality of Git, it also provides
access control, bug tracking, feature requests, and task management.
• Eclipse is a Java integrated development environment (IDE) that includes a CVS client,
a Git client, an XML editor, Mylyn, Maven integration, and WindowBuilder.
In this section, we create a Python script that uses the Ravello REST API to build the additional
deployment environment with the saved blueprint. The script also integrates the Ravello API to
start and stop the newly built application.
To automate launching the additional application server environment for continuous deployment,
we use customized Python scripts that use the Ravello REST API, and we use that script for post-
build actions after the successful build.
3. Create a script that creates an additional deployment environment, copies the latest build
to the new deployment environment, and starts the application. Following is a sample
script:
5. After you populate the Post Steps tab with the appropriate script, save the configuration
and run the build. This process runs the build, creates the new application server
environment, and deploys the build in the new application server environment.
Although we used the script to build just one additional app server, it can be customized to build
any number of additional application servers by using the Ravello Python script.
Summary
With the help of a Ravello blueprint, enterprise customers and ISVs can quickly build an additional
deployment environment that is the same as the primary deployment environment and publish the
new deployment environment in any cloud region. By using the Ravello REST API and integrating
it with the Jenkins server configuration, the entire process can automated.
The Oracle Cloud Infrastructure Ravello Service also helps enterprise customers and ISVs to
reduce their infrastructure cost, increase agility, increase operational efficiency, and optimize
resource use. Enterprise customers and ISVs pay only for the amount of time that they use the
DevOps environment. This also helps them fulfill their on-demand requirement of the resources.
CONNECT W ITH US
blogs.oracle.com/oracle Copyright © 2018, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only, and the
contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties
facebook.com/oracle or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a
particular purpose. We specifically disclaim any liability with respect to this document, and no contractual obligations are formed either
directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or
twitter.com/oracle mechanical, for any purpose, without our prior written permission.
oracle.com Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and
are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are
trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group. 0518