Morpheus CLI

Installing on Linux

The Morpheus CLI is a ruby based CLI that provides a lot of functionality out of the box and is rapidly growing in coverage to be able to perform every task that can be performed in the Morpheus UI. It is also a great way to get started in exploring the Morpheus API and understanding some of the data model aspects.

Installation

A Prerequisite to running the CLI is to have ruby 2.2.0+ installed (2.3.0 recommended). To install Ruby please follow these instructions:

Ruby Installation

Once the ruby runtime is installed simply use rubygems to install the CLI

gem install morpheus-cli

Once the gem is installed all cli commands can be run on the shell via morpheus.

Installing on Windows

The morpheus cli is capable of running on many platforms due to its ruby runtime. This includes windows based platforms. To get started, we must first ensure ruby is running on the windows machine in question. To do this please visit Ruby Installation and download at least Ruby version 2.2.0 (2.3.3 recommended).

Note

When installing ruby on windows, make sure the options are selected for adding the ruby binaries to your PATH.

Now that ruby is installed, simply open a PowerShell window and run

gem install morpheus-cli --no-ri --no-rdoc

A list of installed dependencies should start sliding by the screen. Once this has completed the CLI setup is complete. Now all that must be done is configuring the cli to point to an appliance for use.

morpheus remote add myapp https://applianceUrl
morpheus remote use myapp
morpheus login

Credentials are used to acquire an access token which is then stored in the users home directory in a folder called .morpheus. Now all commands provided by the CLI are available for use just as if running in a *nix based environment.

Setup

The first thing that needs to be done after installing the cli is pointing the cli to the appliance. The CLI can be pointed at many appliances and uses the RESTful OAUTH public developer apis to perform tasks. To set this up simply add a remote appliance with the morpheus remote add command.

morpheus remote add myappliance https://applianceUrl
morpheus remote use myappliance
morpheus login

There are several commands available when dealing with configuration of remote appliances. To see what commands are available just type

morpheus remote

Getting Started

To get started with the morpheus CLI its helpful to use morpheus shell. The shell provides a handy shell with history and some autocomplete features for learning to use it. All commands mentioned prefixed with morpheus can be omitted since we are in shell mode.

To confirm that we are hooked into the appliance properly lets check our authentication information:

morpheus> whoami
Current User
==================

ID: 1
Account: Labs (Master Account)
First Name: Demo
Last Name: Environment
Username: david
Email: david@morpheusdata.com
Role: System Admin

Remote Appliance
==================

Name: demo
Url: https://demo.morpheusdata.com
Build Version: 2.10.0

Fantastic! We are now ready to start our adventure in the Morpheus CLI. If this command fails please be sure to verify the appliance url entered previously is correct, and also verify the provided credentials are correctly entered.

While the CLI is relatively young there are a ton of features provided with it that can make it very convenient for working with morpheus. There are several base commands with subcommands within for example. Lets look at what happens when we simply type morpheus on the command line:

Usage: morpheus [command] [options]

Commands:
    remote
    login
    logout
    whoami
    groups
    clouds
    hosts
    load-balancers
    shell
    tasks
    workflows
    deployments
    instances
    apps
    app-templates
    deploy
    license
    instance-types
    security-groups
    security-group-rules
    accounts
    users
    roles
    key-pairs
    virtual-images
    library
    version

As you can see the cli is split into sections. Each of. these sections has subcommands available for performing certain actions. For example lets look at morpheus instances

morpheus> instances
Usage: morpheus instances [list,add,remove,stop,start,restart,backup,run-workflow,stop-service,start-service,restart-service,resize,upgrade,clone,envs,setenv,delenv] [name]

These commands typically make it easier to figure out what command subsets are available and the CLI documentation can provide helpful information in more depth on each command option.

Provisioning

To get started provisioning instances from the CLI a few prerequisite commands must be setup in the CLI. First we must decide what Group we want to provision into. We can first get a list of available groups to use by running morpheus groups list

morpheus> groups list

Morpheus Groups
==================


=  Automation - denver
=> Demo - Multi
=  Morpheus AWS - US-West
=  Morpheus Azure - US West
=  Morpheus Google - Auto
=  morpheus-approvals -
=  NIck-Demo - Chicago
=  San Mateo Hyper-V - San Mateo, CA
=  San Mateo Nutanix - San Mateo, CA
=  San Mateo Openstack - San Mateo, CA
=  San Mateo Servers - San Mateo, CA
=  San Mateo UCS - San Mateo, CA
=  San Mateo Vmware - San Mateo, CA
=  San Mateo Xen - San Mateo, CA
=  snow-approvals -
=  SoftLayer - Dallas-9

In the above example the currently active group is Demo as can be seen by the => symbol to the left of the group name. To switch groups simply run:

morpheus groups use "San Mateo Xen"

This now becomes the active group we would like to provision into. Another thing to know before provisioning is we do have to also specify the cloud we want to provision into . This does require the cloud be in the group that is currently active. To see a list of clouds in the relevant group simply run:

morpheus clouds list -g [groupName]

This will scope the clouds command to list only clouds in the group specified.

Morpheus makes it very easy to get started provisioning via the CLI. It provides a list of instance-types that can be provisioned via the instance-types list command. Lets get started by provisioning an ubuntu virtual machine.

morpheus> instances add

Usage: morpheus instances add TYPE NAME
  -g, --group GROUP                Group
  -c, --cloud CLOUD                Cloud
  -O, --option OPTION              Option
  -N, --no-prompt                  Skip prompts. Use default values for all optional fields.
  -j, --json                       JSON Output
  -d, --dry-run                    Dry Run, print json without making the actual request.
  -r, --remote REMOTE              Remote Appliance
  -U, --url REMOTE                 API Url
  -u, --username USERNAME          Username
  -p, --password PASSWORD          Password
  -T, --token ACCESS_TOKEN         Access Token
  -C, --nocolor                    ANSI
  -V, --debug                      Print extra output for debugging.
  -h, --help                       Prints this help
morpheus> instances add ubuntu MyInstanceName -c "San Mateo Vmware"

morpheus> instances add ubuntu -c "San Mateo Vmware" dre-test
Layout ['?' for options]: ?
* Layout [-O layout=] - Select which configuration of the instance type to be provisioned.

Options
===============
* Docker Ubuntu Container [104]
* VMware VM [105]
* Existing Ubuntu [497]


Layout ['?' for options]: VMware VM
Plan ['?' for options]: ?
* Plan [-O servicePlan=] - Choose the appropriately sized plan for this instance

Options
===============
* Memory: 512MB Storage: 10GB [10]
* Memory: 1GB Storage: 10GB [11]
* Memory: 2GB Storage: 20GB [12]
* Memory: 4GB Storage: 40GB [13]
* Memory: 8GB Storage: 80GB [14]
* Memory: 16GB Storage: 160GB [15]
* Memory: 24GB Storage: 240GB [16]
* Memory: 32GB Storage: 320GB [17]


Plan ['?' for options]: 10
Root Volume Label [root]:
Root Volume Size (GB) [10]:
Root Datastore ['?' for options]: ?
* Root Datastore [-O rootVolume.datastoreId=] - Choose a datastore.

Options
===============
* Auto - Cluster [autoCluster]
* Auto - Datastore [auto]
* cluster: labs-ds-cluster - 2.9TB Free [19]
* store: ds-130-root - 178.5GB Free [5]
* store: ds-130-vm - 699.0GB Free [6]
* store: ds-131-root - 191.3GB Free [1]
* store: ds-131-vm - 798.9GB Free [9]
* store: ds-132-root - 191.2GB Free [4]
* store: ds-132-vm - 799.4GB Free [10]
* store: ds-177-root - 399.4GB Free [3]
* store: labs-vm - 2.9TB Free [18]
* store: VeeamBackup_WIN-0JNJSO32KI4 - 5.1GB Free [8]
* store: VeeamBackup_WIN-QGARB6FA1GQ - 2.7GB Free [17]


Root Datastore ['?' for options]: Auto - Cluster
Add data volume? (yes/no): no
Network ['?' for options]: VM Network
Network Interface Type ['?' for options]: E1000
IP Address: Using DHCP
Add another network interface? (yes/no): no
Public Key (optional) ['?' for options]:
Resource Pool ['?' for options]: ?
* Resource Pool [-O config.vmwareResourcePoolId=] -

Options
===============
* Resources [resgroup-56]
* Resources / Brian [resgroup-2301]
* Resources / Brian / Macbook [resgroup-2302]
* Resources / David [resgroup-2158]
* Resources / David / Macbook [resgroup-2160]

Resource Pool ['?' for options]: resgroup-2160

As can be seen in the example above, the CLI nicely prompts the user for input on required options for provisioning this particular instance type within this particular cloud. It provides capabilities of adding multiple disks and multiple networks in this scenario. It is also posslbe to skip these prompts and provision everything via one command line syntax by using the -O optionName=value syntax:

morpheus> instances add ubuntu MyInstanceName -c "San Mateo Vmware"  -O layout=105 -O servicePlan=10 -O rootVolume.datastoreId=autoCluster

This will cause morpheus cli to skip prompting for input on these prompts. All inputs have an equivalent -O option that can be passed. To see what that option argument is simply enter ? on the input prompt to get specifics.

Now your VM should be provisioning and status can be checked by simply typing morpheus instances list.

List Arguments

Most of the list command types can be queried or paged via the cli. To do this simply look at the help information for the relevant list command

morpheus> instances list -h
Usage: morpheus [options]
-g, --group GROUP                Group Name
-m, --max MAX                    Max Results
-o, --offset OFFSET              Offset Results
-s, --search PHRASE              Search Phrase
-S, --sort ORDER                 Sort Order
-D, --desc                       Reverse Sort Order
-j, --json                       JSON Output
-r, --remote REMOTE              Remote Appliance
-U, --url REMOTE                 API Url
-u, --username USERNAME          Username
-p, --password PASSWORD          Password
-T, --token ACCESS_TOKEN         Access Token
-C, --nocolor                    ANSI
-V, --debug                      Print extra output for debugging.
-h, --help                       Prints this help

Ruby Installation

Step 1 – Installing Requirements

First of all, we need to install all required packages for ruby installation on our system using the following command.

yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel sqlite-devel

Step 2 – Install RVM

Install the latest stable version of RVM on your system using the following command. This command will automatically download all required files and install on your system.

curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L get.rvm.io | bash -s stable

Also, run below command to load the RVM environment.

source /etc/profile.d/rvm.sh
rvm reload

Step 3 – Verify Dependencies

Now use the following command to verify all dependencies are properly installed. This will install any missing dependencies on your system.

rvm requirements run
Checking requirements for centos.
Requirements installation successful.

Step 4 – Install Ruby 2.5

After completing setup of RVM environment lets install Ruby language using the following command. Change Ruby version to below command you need to install.

rvm install 2.5
[Sample Output]

Searching for binary rubies, this might take some time.
No binary rubies available for: centos/7/x86_64/ruby-2.5.1.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for centos.
Requirements installation successful.
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-2.5.1, this may take a while depending on your cpu(s)...
ruby-2.5.1 - #downloading ruby-2.5.1, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 13.3M  100 13.3M    0     0   866k      0  0:00:15  0:00:15 --:--:--  823k
ruby-2.5.1 - #extracting ruby-2.5.1 to /usr/local/rvm/src/ruby-2.5.1.....
ruby-2.5.1 - #configuring..................................................................
ruby-2.5.1 - #post-configuration..
ruby-2.5.1 - #compiling....................................................................
ruby-2.5.1 - #installing.............................
ruby-2.5.1 - #making binaries executable..
ruby-2.5.1 - #downloading rubygems-2.7.7
ruby-2.5.1 - #extracting rubygems-2.7.7.....................................................
ruby-2.5.1 - #removing old rubygems........
ruby-2.5.1 - #installing rubygems-2.7.7................................
ruby-2.5.1 - #gemset created /usr/local/rvm/gems/ruby-2.5.1@global
ruby-2.5.1 - #importing gemset /usr/local/rvm/gemsets/global.gems...................................................
ruby-2.5.1 - #generating global wrappers.......
ruby-2.5.1 - #gemset created /usr/local/rvm/gems/ruby-2.5.1
ruby-2.5.1 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list
ruby-2.5.1 - #generating default wrappers.......
ruby-2.5.1 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Install of ruby-2.5.1 - #complete
Ruby was built without documentation, to build it run: rvm docs generate-ri

Step 5 – Setup Default Ruby Version

First of all, check the currently installed ruby versions on your system. So that we can find which version is using currently by the system and which is set to default.

rvm list
ruby-2.3.5 [ x86_64 ]
   ruby-2.4.2 [ x86_64 ]
* ruby-2.4.4 [ x86_64 ]
=> ruby-2.5.1 [ x86_64 ]
# => - current
# =* - current && default
#  * - default

After that use rvm command to set up the default ruby version to be used by applications.

rvm use 2.5 --default
Using /usr/local/rvm/gems/ruby-2.5.1

Step 6 – Verify Active Ruby Version

Using following command you can check the current ruby version is used.

ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Step 7 – Install Morpheus CLI

gem install morpheus-cli