Code¶
Note
In v5.3.2+, provisioning/deployments
is moved to provisioning/code
.
Provisioning > Code contains the Repositories, Deployments and Code Integrations sections.
Required Role Permissions Click to Expand/Hide
Access and capabilities for the Code section is determined by the following role permissions:
- Role: Feature Access:
Infrastructure: Groups
None: Cannot access Provisioning: Code section
Read or Full: Can access Provisioning: Code section
- Role: Feature Access:
Provisioning: Code Repositories
None: Cannot access Provisioning: Code Repositories
List Files: Can browse repo folder and file names, select branch, refresh Repositories. Cannot access/view file contents.
Read or Full: Can browse repo folder and file names, select branch, refresh Repositories and access/view file contents.
- Role: Feature Access:
Provisioning: Code Deployments
None: Cannot access Provisioning: Code Deployments.
Read: Can view Code Deployments. Cannot create, delete or edit Code Deployments.
Full: Can create, delete and edit Code Deployments.
- Role: Feature Access:
Provisioning: Code Integrations
None: Cannot access Provisioning: Code Integrations.
Read: Can view Code Integrations. Cannot create, delete or edit Code Integrations.
Full: Can create, delete and edit Code Integrations
Repositories¶
The
section contains the repositories integrated with Morpheus allowing users to browse repository folders and files, view file contents from any branch, trigger a refresh, and create tasks, scripts and templates directly from the repos.Browse integrated repositories
View repo files
Switch branches
Trigger repo refreshes
Filter by Integration, Organization or Text search
Create Custom Views
Create Tasks from repo files
Create Spec Templates from repo files
Role Permissions¶
Access and capabilities for the Repositories section is determined by the following role permissions:
- Role: Feature Access:
Infrastructure: Groups
None: Cannot access Provisioning: Code section
Read or Full: Can access Provisioning: Code section
- Role: Feature Access:
Administration: Users
None: Can view repo list but cannot browse repo folder and file names, select branch, refresh repositories or access/view file contents
Read or Full: Can view repo list, browse repo folder and file names, select branch, refresh repositories. Cannot access/view file contents without Read or Full level permission on
Provisioning: Code Repositories
- Role: Feature Access:
Provisioning: Code Repositories
None: Cannot access Provisioning: Code Repositories
List Files: Can browse repo folder and file names, select branch, refresh Repositories. Cannot access/view file contents
Read or Full: Can browse repo folder and file names, select branch, refresh Repositories and access/view file contents
- Role: Feature Access:
Provisioning: Tasks
None: Cannot create Tasks from repo files in repository browser
Read or Full: Can create Tasks from repo files in repository browser
- Role: Feature Access:
Provisioning: Library
None: Cannot create Spec Templates from files in repository browser
Read or Full: Can create Spec Templates from files in repository browser
List Repositories¶
Select the
Provisioning
link in the navigation barSelect the
Code
link in the sub-navigation barUsers with sufficient permissions will see a list view of all integrated code repositories
Use the Search, Integrations or Organizations filter to filter listed repositories
Tip
Select the gear icon ⚙ in the top right of the repos list view to create and save custom list views.
Refresh Repository¶
Select the
Provisioning
link in the navigation barSelect the
Code
link in the sub-navigation barSelect name of target repository
Select ACTIONS ▿ >
Refresh
Browse Repositories¶
Select the
Provisioning
link in the navigation barSelect the
Code
link in the sub-navigation barSelect name of target repository
Users with sufficient permissions can browse repo folder and file names, select branches, and refresh repositories. Users can access/view file contents with Read or Full level permission on
Provisioning: Code Repositories
Select target folder icon to drill into the folder
View Repository File¶
Select the
Provisioning
link in the navigation barSelect the
Code
link in the sub-navigation barSelect name of target repository
Select ℹ icon to right of target file name
Note
Users can access/view file contents only with Read or Full level permission on Provisioning: Code Repositories
. File contents displayed is from last repo sync. Refresh repo to ensure current version for recent commits.
Create Task from Repository File¶
Select the
Provisioning
link in the navigation barSelect the
Code
link in the sub-navigation barSelect name of target repository
Select gear icon to right of compatible target file name
Select target task type from available actions
Complete the NEW TASK wizard to create a new Task. The TYPE, SOURCE, REPOSITORY and FILE PATH fields will be automatically configured
Note
Shell and Powershell Tasks types can be created from the code repo browser in v6.1.1. Ensure file compatibility with target Task type.
Note
Users can create tasks from Repositories only with Read or Full level permission on Library: Tasks
.
Create Spec Template from Repository File¶
Select the
Provisioning
link in the navigation barSelect the
Code
link in the sub-navigation barSelect name of target repository
Select gear icon to right of target file name
Select target spec template type from available actions
Complete the NEW SPEC TEMPLATE wizard to create a new Spec Template. The TYPE, SOURCE, REPOSITORY and FILE PATH fields will be automatically configured
Note
Terraform spec template types can be created from the code repo browser in v6.1.1. Other spec template types can be created from repo files by changing the TYPE field in the NEW SPEC TEMPLATE wizard.
Note
Users can create tasks from Repositories only with Read or Full level permission on Library: Templates
.
Deployments¶
Note
In v5.3.2+,
has been moved toThe deployments section provides very useful PaaS like capabilities when it comes to deploying applications into the newly provisioned environment. These can be uploaded directly from the UI, pulled from a build server, pulled from a public or private Git repository or even via the API and the various plugins created, such as Jenkins, and Gradle to support continuous build / integration workflows.
A deployment can be considered a set of versions that relate to a particular project or application being deployed. This allows one to keep track of a history of versions and easily reuse these deployment versions across instances that may exist in different environments. An example might be to deploy a version from a deployment to a staging instance and (once approved) also deployed into production.
Role Permissions¶
Access and capabilities for the Deployments section is determined by the following role permissions:
- Role: Feature Access:
Infrastructure: Groups
None: Cannot access Provisioning: Code section
Read or Full: Can access Provisioning: Code section
- Role: Feature Access:
Provisioning: Code Deployments
None: Cannot access Provisioning: Code Deployments.
Read: Can view Code Deployments. Cannot create, delete or edit Code Deployments.
Full: Can create, delete and edit Code Deployments.
Getting Started¶
Getting started with deployments is easy. They can vary slightly for the application stack being deployed but the simplest phase of a deployment is adding a version and adding the appropriate files to the deployment archive that are needed for the application to run. This could be a single file like a WAR file for Tomcat, or it could be hundreds of files for stacks like Ruby on Rails.
There are a few ways to create a deployment. The first is to use the
section of the application to create them. Simply add a new deployment and give it a name representing the application that is being deployed. Once a deployment is created select the deployment to view its versions (which will be empty to start). Next, it is time to add a version.When adding a version there are several options. There are 3 types represented by the UI. These include File, Fetch, and Git respectively. A File deployment allows the user to simply drag their files into the file explorer presented by the dialog. This file explorer can take single files or entire file trees (If files exist in subfolders then only the Chrome browser is supported due to browser limitations at the time of this writing). This is also the common type that is represented when files are uploaded via the CLI, or available build tool integration plugins. Once the files have completed their upload simply save the version for use.
Git¶
For performing git based deploys Morpheus supports both public and private repositories. To utilize a private git repository the add version dialog will display a public keypair that can be added to the git service for authentication purposes. Currently this keypair is shared across the account and not specifically scoped to the user so it may be advisable to connect this integration to a deployment account in git. From here either a ssh or https git url can be entered along with a git branch or tag name. Once the version is saved, this repository will be copied down into the deployment archive for use.
Fetch¶
Fetch based deployments are pretty straightforward. Simply enter a url to a file representing the deployment. This can be a single file (in which case it will just be added to the deployment archive singularly) or it can be a zip file (which will automatically be expanded into the archive). HTTP Authentication options can also be entered if the url requires some form of basic authentication scheme for access by the appliance.
Deploying to an Instance¶
Now that a version has been added to a deployment, it is easy to push that deployment out to any instance provisioned within Morpheus by navigating to the specific Instance that it needs deployed to. On the Instance detail page there is a tab called Deploy. From here simply add a deploy. The dialog will ask firstly from which deployment the deploy is from (or allow you to create a new one on the spot), and secondly which version to deploy (also with the option to add one on the fly). The next step of the wizard will display any configuration options that might be specific to the instance type being deployed to (i.e. CATALINA_OPTS for Tomcat or Java Command for java) as well as the file explorer and deployment type selections for review (or use when creating a new version on the fly). Fill in the required items then simply hit complete. The deploy will now be asynchronously sent off to all of the virtual machines or containers within the instance in a rolling restart and the deployment status will be represented.
Tip
When deploying to an instance, the custom configuration options that were entered during the previous deployment are automatically carried forward allowing one to edit them or leave them as is.
Rolling Backwards and Forwards¶
Because of the tracked history of deployments kept within Morpheus, the deploy tab of instance detail makes it easy to choose a previously run deployment and jump back to it in the event of a failed deployment. The history will automatically be updated and the configuration, as well as data from the previous deployment state of the instance will be restored.
Offloading Storage¶
Since a full history of the backup builds are kept in Morpheus, as the appliance grows it becomes necessary to change where these are stored. On a fresh install these are stored on the local appliance in /var/opt/morpheus
or wherever the master account may have changed the configuration to point to. It is also possible to adjust the deployment archive store by creating a Storage Provider tied to an S3 compatible object store, Openstack Swift object store, or any other type of mountpoint provided. This option can be adjusted in once a storage provider is created within the account.
Add Deployment¶
Select the
Provisioning
link in the navigation bar.Select the
Code
link in the sub-navigation bar.Select the
Deployments
tab.Click the + Add button.
Enter a Name for the deployment and a description (optional)
Click the Save Changes button to save.
Add Version¶
Select the
Provisioning
link in the navigation bar.Select the
Code
link in the sub-navigation bar.Select the
Deployments
tab.Click the Name of the deployment you would like to add a version to.
Click the Add Version button.
From the Add Version Wizard select the deployment type.
Input the Version of the deployment.
Depending on the type of deployment selected perform one of the following:
- Files
Drag files into the file explorer presented by the dialog. This file explorer can take single files or entire file trees.
- Fetch
Enter a url to a file representing the deployment.
- Git
The add version dialog will display a public key pair that can be added to the git service for authentication purposes. Either a ssh or https git url can be entered along with a git branch or tag name.
Click the Save Changes button to save.
Edit Deployment¶
Select the
Provisioning
link in the navigation bar.Select the
Code
link in the sub-navigation bar.Select the
Deployments
tab.Click the ✎ icon on the row of the deployment you wish to edit, or click the Name of the deployment and then the Edit button from the deployment detail page.
Modify information as needed
Click the Save Changes button to save.
Delete Deployment¶
Select the
Provisioning
link in the navigation bar.Select the
Code
link in the sub-navigation bar.Select the
Deployments
tab.Click the 🗑 icon on the row of the deployment you wish to delete, or click the Name of the deployment and then the DELETE button.
Code Integrations¶
The
section is where Code Integrations, such as Git and Github Repository Integrations, and Jenkins Build Service Integrations, can be created and managed.Role Permissions¶
Access and capabilities for the Integrations section is determined by the following role permissions:
- Role: Feature Access:
Infrastructure: Groups
None: Cannot access Provisioning: Code section
Read or Full: Can access Provisioning: Code section
- Role: Feature Access:
Provisioning: Code Integrations
None: Cannot access Provisioning: Code Integrations.
Read: Can view Code Integrations. Cannot create, delete or edit Code Integrations.
Full: Can create, delete and edit Code Integrations