Using FlexDeploy VM Image

The FlexDeploy Virtual Machine provides fully configured and executable samples, enabling users to examine the features and use as reference for full implementation.

Virtual Machine Configuration

  • 1 CPU
  • 4 GB RAM
  • FlexDeploy installed on Tomcat 8.5.15
  • Oracle XE database with FlexDeploy schemas installed
  • Two Tomcat 8.5.15 servers for deploying sample applications
  • Apache JMeter for unit testing sample applications
  • Connection to GitHub repository containing sample source code

Install Oracle VirtualBox

Download and Install Oracle VirtualBox from https://www.virtualbox.org/wiki/Downloads. Next steps will explain how to use FlexDeploy OVA image file with VirtualBox.

Importing VM Appliance

The steps shown use Oracle VM VirtualBox for the Host, but there are other options. Feel free to use any host capable of importing OVA images. You may need to unzip the file you downloaded before you are able to import it.

  1. Open VirtualBox. 

  2. Click File - Import Appliance. 

  3. Select the VM image (.ova file), Click Next. File name of ova file depends on the version of FlexDeploy you have downloaded.

  4. Click Import
    1. It is here where settings can be adjusted, you can change the VM name or give it more CPU, etc
    2. If Memory is reduced below 3 GB, the VM will not work correctly 

Starting FlexDeploy VM  

  1. Once the Import process has finished, start the VM.
    1. This can be done by clicking on the VM and clicking Start on the top bar.
       
  2. Once the virtual machine has started, FlexDeploy tomcat server will also automatically start and you will see screen shown below and you can login using http://localhost:8000/flexdeploy. It takes some time for Tomcat server to start application, so give few minutes before you launch application in browser.



    FlexDeploy can be started using start_flexdeploy.sh script as well. Login using flexuser/flexdeploy1 credentials. You can do this on Virtual Box window or using Putty (localhost with port 222).

  3. After few minutes, Open your browser to http://localhost:8000/flexdeploy
  4. Once FlexDeploy has loaded, you can log in and explore. FlexDeploy User credentials are fdadmin/welcome1

    Loading


    Log in and explore

Stopping FlexDeploy VM

  1. Run stop command.
    1. Start SSH session on port 222 and login as flexuser.
    2. cd
    3. ./stop_flexdeploy.sh
  2. Power Off VM in VirtualBox Manager. 

Installation Details

Credentials

FlexDeploy Credentials

FlexDeploy UserPasswordFlexDeploy GroupDescription
fdadminwelcome1FD AdministratorsThe default FlexDeploy admin user. The FD Administrators group has all available permissions in FlexDeploy.
operatorwelcome1OperatorsThe operator user can manage projects, create or update notifications, scheduled tasks, and windows, as well as approve deployments to the Production environment.
developerwelcome1DevelopersThe developer user has permission to build projects, and deploy applications to the Development environment.
releasemanagerwelcome1Release ManagersThis user can create or update releases and pipelines, as well as creating a new snapshot for a release.

Other Credentials

Account TypeUserPassword
Tomcat Management Consoletomcattomcat
Linux VM Operating Systemflexuserflexdeploy1
Databasefd_adminwelcome1
DatabasesysFL289267Vx

Ports

You can SSH using port 222 and if you interested in running Queries using SQL Developer connect to database on port 1525. See port mapping details below.

Host Port
Purpose
Port in VM
8010DEV Tomcat Server8090
8020PROD Tomcat Server8070
8000FlexDeploy Server8000
222SSH Daemon22
1525Database Instance1521

FlexDeploy Details

PropertyValue
Root Installation Directory/u01/app/flexdeploy
Server Working Directory/u01/app/flexdeploy/working
Artifact Repository/u01/app/flexdeploy/artifacts
FlexDeploy Tomcat Installation Directory/u01/app/flexdeploy/apache-tomcat-flexdeploy
FlexDeploy Tomcat Logs directory/u01/app/flexdeploy/apache-tomcat-flexdeploy/logs

Tomcat Development Server

PropertyValue
Catalina Base/u01/app/DEV-tomcat
Catalina Home/u01/app/DEV-tomcat
Catalina Temp/u01/app/DEV-tomcat/temp

Tomcat Production Server

PropertyValue
Catalina Base/u01/app/PROD-tomcat
Catalina Home/u01/app/PROD-tomcat
Catalina Temp/u01/app/PROD-tomcat/temp

Application URLs

URL
Application
http://[host]:8000/flexdeployFlexDeploy Application
http://[host]:8010/petclinicPetClinic on DEV
http://[host]:8020/petclinicPetClinic on PROD
http://[host]:8010/jetDemoJetApp on DEV
http://[host]:8020/jetDemoJetApp on PROD

The hostname of the virtual machine is flexdeploy, however, some network configurations do not allow access using a hostname. If you are unable to connect to FlexDeploy, try using the IP address of the host machine in place of [host] in the examples above.

 Click here to show info about finding your IP address...
  • If the host machine is running Linux run this command:

    ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
  • For Windows, run this:

    ipconfig | find "IPv4 Address"
  • You should see one or more IP addresses printed off, one of these will be the address to connect to.

Please note that you will be unable to connect to the virtual machine from the host machine using an IP address or hostname, to connect from the host machine, replace [host] with localhost.

FlexDeploy Demo Details

Sample Projects

PetClinic (Spring)

  • PetClinic is a simple, and functional, Spring application. It has a few different pages that allow users to search or add data.
  • The source code is located in the Samples GitHub Repository, under spring/petclinic.
  • The application is configured to be deployed to the Development and Production Tomcat servers, which are also installed on the Virtual Machine
  • It is accessible by navigating to: 
    • http://[host]:8010/petclinic (for the Development Tomcat server)
    • http://[host]:8020/petclinic (for the Production Tomcat server)

DemoJetApp (Jet)

  • This is another simple application built with Oracle Jet.
  • The source code is located in the Samples GitHub Repository, under js/Jet/DemoJetApp.
  • The application is deployed to the Development and Production Tomcat servers, also installed on the Virtual Machine
  • It is accessible by navigating to:
    • http://[host]:8010/jet (for the Development Tomcat server)
    • http://[host]:8020/jet (for the Production Tomcat server)

Sample Topology

Environments

  • There are 3 sample environments configured in FlexDeploy:
    • Build (BLD)
    • Development (DEV)
    • Production (PRD)
  • The Build environment is used to perform builds.
  • The Development environment is where projects are deployed to for testing before they go into production.
  • The Production environment is where the finished application is deployed to be consumed by the customer.

Instances

  • There are 2 sample instances configured in FlexDeploy:
    • Build
    • Tomcat
  • The Build instance is used for building projects, so it is associated to the Build environment. This association allows us to configure Environment/Instance properties required for the plugins used in the build workflow.
  • The Build instance has plugin operations such as runMaven(Maven)saveArtifacts(File), and execute(Unix Shell), all of which are used for building projects and adding files to the Artifact Repository.
  • The Tomcat instance is used for deploying Tomcat applications. It is associated to both the Development and Production environments, as we will deploy Tomcat applications to both environments.
  • There is also an Apache JMeter instance which is used for unit testing the PetClinic application (defined under Integrations - Testing).

Endpoints

  • Endpoints are the actual servers where FlexDeploy will execute plugin operations (i.e build and deployment steps).
  • There are 3 sample endpoints:
    • DEVSERVER1
    • PRODSERVER1
    • LOCALHOST (automatically created with a new install)
  • The endpoints are associated to the intersection between an instance and an environment:
    • Build/Build → LOCALHOST
    • Tomcat/Development → DEVSERVER1
    • Tomcat/Production → PRODSERVER1
  • All 3 endpoints use localhost as the endpoint address, but are created as separate endpoints to demonstrate how endpoints would be created when the target servers are not installed on the FlexDeploy server (in a real world implementation).

Topology Overview

  • The Topology overview allows mapping Environment/Instance pairs to endpoints, and setting values for their properties.  The endpoint associations are:
    • Build/Build → LOCALHOST
    • Tomcat/Development → DEVSERVER1
    • Tomcat/Production → PRODSERVER1
    • Apache JMeter/Development → LOCALHOST
    • Apache JMeter/Production → LOCALHOST
  • Click on the green baloon for DEV/Tomcat. We will see a list of Environment/Instance properties. Note that the properties marked with * are required. 
    • At the top of the table, there is a tab named Endpoints (1). This is where an Endpoint is specified for an Environment/Instance pair.

Sample Workflows

War Build

  • This is the workflow used for building the PetClinic project. It is fairly simple, with only 3 steps:
    • The first step in the workflow is Clone Project Sources. This is an operation on the Git plugin which clones the source configured on the project (PetClinic).
    • The next step is Build War with Maven, which uses the runMaven operation on the Maven plugin to build the war file.
    • The third and final step is Save Artifacts. This operation of the File plugin simply saves the war file and the JMeter test file to the Artifact Repository.

War Deploy

  • This workflow only has one step, Deploy War to Tomcat.
  • It uses the deployWar operation of the Tomcat plugin.
  • The operation simply takes the artifact from the build (war file) and deploys it to the target Tomcat server.

Jet Build

  • This workflow is used to build an Oracle Jet project, and has four steps:
    • The first step is Clone Project Sources. This is an operation on the Git plugin that clones the source configured on the project (DemoJetApp).
    • The second step uses the execute operation of the Unix shell plugin to execute a shell script containing the ojet restore command.
    • The next step uses the same operation to execute the ojet build command.
    • The fourth and final step is  Save Artifacts. This operation of the File plugin simply saves the artifacts to the Artifact Repository.

Jet Deploy

  • This workflow is used to deploy a Jet project to a Tomcat server.
  • The workflow has an Environment/Instance property created called JET_ARTIFACT_TARGET_PATH (as the value is different by environment).
  • The first step is Copy Artifacts, which is a File plugin operation used to copy build artifacts to a location on the endpoint.
  • The second and final step is another Unix Shell execute operation, used to update the file permissions of deployed artifacts.
  • Since FlexDeploy does not have an out of the box plugin for Oracle Jet, this provides an example of how to integrate technologies using scripting.

Sample Release and Pipeline

Demo Release

  • This release is configured for both sample projects.
  • The Primary Manager on the release is the releasemanager user, and there is no secondary manager.
  • There are 3 snapshots for the release which have successfully executed the entire pipeline.

Demo Pipeline

  • This pipeline first deploys all projects to the Development environment, then executes all of the unit tests configured on the projects (only PetClinic has defined unit tests).
  • Next, a test gate will check the results of those unit tests to determine if the project can be deployed to the Production environment.
  • After the test gate checks the test results, the operator user (or fdadmin) must approve the deployment.
  • Once the deployment is approved, a scheduled task is created to deploy to the production servers at 9pm on Saturday.
  • Once the schedule is met, or the release manager skips the gate, all of the projects are deployed to the Production environment.

Security

Groups

  • There are a few sample groups created in FlexDeploy, to demonstrate the fine-grained permission model.
    • FD Administrators is a built in group for administrators with all permissions across FlexDeploy.
    • Operators is a group for the Operations team, which has permission to view all screens in FlexDeploy, as well as creating Windows, Approvals, Notifications, and updating Approval and Scheduled Tasks.
    • Developers is a group created for the Development team, with permissions to perform builds, and deploy to the Development environment.
    • Release Managers is a group with permissions to deploy to Development, as well as creating and updating Releases and Pipelines, and creating a Snapshot for a release.

Users

  • fdadmin is the built-in admin user, and is in the FD Administrators group. 
  • operator is a user in the Operators group.
  • developer is a user in the Developers group.
  • releasemanager is a user in the Release Managers group.