Installation¶
Morpheus comes packaged as a debian
or yum
based package. It can be installed on a single on/off premise linux based host or configured for high availability and horizontal scaling. Morpheus is currently only supported on Ubuntu 14.04, Ubuntu 16.04 , CentOS 7.0 or newer, and RHEL 7.0 or newer based hosts.
Note
You can view our offline installation guide at offline-installer.
Ubuntu¶
To get started installing Morpheus on Ubuntu a few preparatory items should be addressed first.
First make sure the apt repository is up to date by running
sudo apt-get update
. It might also be advisable to verify that the assigned hostname of the machine is self resolvable.Important
If the machine is unable to resolve its own hostname
nslookup hostname
some installation commands will be unable to verify service health during installation and fail.Next simply download the relevant
.deb
package for installation. This package can be acquired from your account rep or via a free trial request from morpheushub.com.Tip
Use the
wget
command to directly download the package to your appliance server. i.e.wget https://downloads.gomorpheus.com/path/to/package.deb
THIS IS NOT THE PACKAGE URL. The package URL can be acquired from your account rep or via a free trial request from morpheushub.comNext we must install the package onto the machine and configure the morpheus services:
sudo dpkg -i morpheus-appliance_x.x.x-1.amd64.deb sudo morpheus-ctl reconfigure
Once the installation is complete the web interface will automatically start up. By default it will be resolvable at
https://your_machine_name
and in many cases this may not be resolvable from your browser. The url can be changed by editing/etc/morpheus/morpheus.rb
and changing the value ofappliance_url
. After this has been changed simply run:sudo morpheus-ctl reconfigure sudo morpheus-ctl stop morpheus-ui sudo morpheus-ctl start morpheus-ui
Note
The morpheus-ui can take 2-3 minutes to startup before it becomes available.
There are additional post install settings that can be viewed in the Advanced section of the guide.
Once the browser is pointed to the appliance a first time setup wizard will be presented. Please follow the on screen instructions by creating the master account. From there you will be presented with the license settings page where a license can be applied for use (if a license is required you may request one or purchase one by contacting your sales representative).
More details on setting up infrastructure can be found throughout this guide.
Tip
If any issues occur it may be prudent to check the morpheus log for details at /var/log/morpheus/morpheus-ui/current
.
CentOS¶
To get started installing Morpheus on CentOS a few preparatory items should be addressed first.
Configure firewalld to allow access from users on port 80 or 443 (Or remove firewall if not required).
Make sure the machine is self resolvable to its own hostname.
Important
If the machine is unable to resolve its own hostname
nslookup hostname
some installation commands will be unable to verify service health during installation and fail.Next simply download the relevant
.rpm
package for installation. This package can be acquired from your account rep or via a free trial request from morpheushub.com.Tip
Use the
wget
command to directly download the package to your appliance server. i.e.wget https://downloads.gomorpheus.com/path/to/package.rpm
THIS IS NOT THE PACKAGE URL. The package URL can be acquired from your account rep or via a free trial request from morpheushub.comNext we must install the package onto the machine and configure the morpheus services:
sudo rpm -i morpheus-appliance-x.x.x-1.x86_64.rpm sudo morpheus-ctl reconfigure
Once the installation is complete the web interface will automatically start up. By default it will be resolvable at
https://your_machine_name
and in many cases this may not be resolvable from your browser. The url can be changed by editing/etc/morpheus/morpheus.rb
and changing the value ofappliance_url
. After this has been changed simply run :sudo morpheus-ctl reconfigure sudo morpheus-ctl stop morpheus-ui sudo morpheus-ctl start morpheus-ui
Note
The morpheus-ui can take 2-3 minutes to startup before it becomes available.
There are additional post install settings that can be viewed in the Advanced section of the guide.
Once the browser is pointed to the appliance a first time setup wizard will be presented. Please follow the on screen instructions by creating the master account. From there you will be presented with the license settings page where a license can be applied for use (if a license is required you may request one or purchase one by contacting your sales representative).
More details on setting up infrastructure can be found throughout this guide.
Tip
If any issues occur it may be prudent to check the morpheus log for details at /var/log/morpheus/morpheus-ui/current
.
RHEL¶
To get started installing Morpheus on RHEL 7 a few prerequisite items are required.
Configure firewalld to allow access from users on port 80 or 443 (Or remove firewall if not required).
Make sure the machine is self resolvable to its own hostname.
For RHEL, In order for the guacamole service (remote console) to properly install some additional optional repositories first need added.
- RHEL 7.x Amazon:
yum-config-manager --enable rhui-REGION-rhel-server-optional
- RHEL 7.x:
yum-config-manager --enable rhel-7-server-optional-rpms
Note
For Amazon users a redhat subscription is not required if the appropriate yum REGION repository is added instead as demonstrated above.
- RHEL 7.x Amazon:
Important
If the machine is unable to resolve its own hostname nslookup hostname
some installation commands will be unable to verify service health during installation and fail.
The RedHat Enterprise Linux 7 server needs to be registered and activated with Redhat subscription. The server optional rpms repo needs to be enabled as well.
To check if the server has been activated please run the subscription-manager version. Subscription manager will return the version plus the python dependency version.
If the server has not been registered and activated then the subscription manager version will return the below message.
sudo subscription-manager version
server type: This system is currently not registered
subscription management server: 0.9.51.24.-1
subscription-manager: 1.10.14-7.el7 python-rhsm: 1.10.12-2.el7
When a server has been registered and activated with Redhat the subscription manager will return the below message.
sudo subscription-manager version
server type: Red Hat Subscription Management
subscription management server: 0.9.51.24-1
subscription-manager: 1.10.14-7.el7 python-rhsm: 1.10.12-2.el7
If the subscription manager re-turns the message This system is currently not registered
please follow the below steps to register the server.
Tip
To register the server you will need to have sudo permissions [Member of the Wheel group] or root access to the server. You will also need your Redhat registered email address and password.
subscription-manager register
sudo subscription-manager register
Username: redhat@example.com
Password: . subscription-manager auto --attach
Note
This can take a minute to complete
sudo subscription-manager attach --auto
Installed Product Current Status: Product Name: Red Hat Enterprise Linux
Server Status: Subscribed
To check to see if the RHEL server has the Red Hat Enterprise Linux 7 Server - Optional (RPMs) repo enabled please run the following command to return the repo status.
Tip
To check the server repos you will need to have sudo permissions [Member of the Wheel group] or root access to the server.
sudo yum repolist all | grep "rhel-7-server-optional-rpms" rhel-7-server-optional-rpms/7Server/x86_64 disabled
If the repo status was returned as disabled then you will need to enable the repo using the subscription manager like below.
sudo subscription-manager repos --enable rhel-7-server-optional-rpms
Repository 'rhel-7-server-optional-rpms' is enabled for this system.
The message Repo 'rhel-7-server-optional-rpms' is enabled for this system.
will appear after enabling the repo. This will confirm that the repo has been enabled.
Next simply download the relevant .rpm
package for installation. This package can be acquired from your account rep or via a free trial request from morpheushub.com.
Tip
Use the wget
command to directly download the package to your appliance server. i.e. wget https://downloads.morpheusdata.com/path/to/package.rpm
Next we must install the package onto the machine and configure the morpheus services:
sudo rpm -i morpheus-appliance_x.x.x-1.amd64.rpm
sudo morpheus-ctl reconfigure
Once the installation is complete the web interface will automatically start up. By default it will be resolvable at https://your_machine_name
and in many cases this may not be resolvable from your browser. The url can be changed by editing /etc/morpheus/morpheus.rb
and changing the value of appliance_url
. After this has been changed simply run:
sudo morpheus-ctl reconfigure
sudo morpheus-ctl stop morpheus-ui
sudo morpheus-ctl start morpheus-ui
Note
The morpheus-ui
can take 2-3 minutes to startup before it becomes available.
There are additional post install settings that can be viewed in the Advanced section of the guide.
Once the browser is pointed to the appliance a first time setup wizard will be presented. Please follow the on screen instructions by creating the master account. From there you will be presented with the license settings page where a license can be applied for use (if a license is required you may request one or purchase one by contacting your sales representative).
More details on setting up infrastructure can be found throughout this guide.
Tip
If any issues occur it may be prudent to check the morpheus log for details at /var/log/morpheus/morpheus-ui/current
.
Additional Options¶
There are several additional configuration options during installation that may be performed. For example, Morpheus provides convenient options for uploading your own SSL certificates as well as externalizing several dependent services.
System Defaults¶
Morpheus follows several install location conventions. Below is a list of system defaults for convenient management:
- Installation Location:
/opt/morpheus
- Log Location:
/var/log/morpheus
- Morpheus-UI:
/var/log/morpheus/morpheus-ui
- MySQL:
/var/log/morpheus/mysql
- NginX:
/var/log/morpheus/nginx
- Check Server:
/var/log/morpheus/check-server
- Elastic Search:
/var/log/morpheus/elsticsearch
- RabbitMQ:
/var/log/morpheus/rabbitmq
- Redis:
/var/log/morpheus/redis
- Morpheus-UI:
- User-defined install/config:
/etc/morpheus/morpheus.rb
SSL Certificates¶
The default installation generates a self-signed SSL certificate. To implement a third-party certificate:
Copy the private key and certificate to
/etc/morpheus/ssl/your_fqdn_name.key
and/etc/morpheus/ssl/your_fqdn_name.crt
respectively.Edit the configuration file
/etc/morpheus/morpheus.rb
and add the following entries:nginx['ssl_certificate'] = 'path to the certificate file' nginx['ssl_server_key'] = 'path to the server key file'
Note
Both files should be owned by root and only readable by root, also if the server certificate is signed by an intermediate then you should include the signing chain inside the certificate file.
Next simply reconfigure the appliance and restart nginx:
sudo morpheus-ctl reconfigure sudo morpheus-ctl restart nginx
SSL Self-signed Certificate Regeneration¶
When Morpheus is deployed it generates a 10 year self-signed non-trusted SSL certificate. Below details the process to regenerate this certificate and key.
Replacing both the certificate and private key¶
- Delete the certificate and key files in
/etc/morpheus/ssl/
that end in.crt
and.key
- Run Reconfigure
morpheus-ctl reconfigure
- Restart NGINX
morpheus-ctl restart nginx
Replacing only the certificate¶
- Delete the certificate file in
/etc/morpheus/ssl/
it ends in.crt
- Run Reconfigure
morpheus-ctl reconfigure
- Restart NGINX
morpheus-ctl restart nginx
Advanced morpheus.rb Settings¶
Morpheus allows for additional advanced customizations to the morpheus.rb file located in /etc/morpheus/morpheus.rb
. Below is a list of the supported items available in the morpheus.rb file.
appliance_url 'https://morpheus.appliance-url.com' # do not add a trailing `/`.
# Appending alternate port to appliance_url is supported. ie 'https://morpheus.appliance-url.com:8443'
ui['vm_images_cdn_url'] = 'https://morpheus-images.morpheusdata.com'
ui['kerberos_config'] = nil
ui['kerberos_login_config'] = nil
ui['max_memory_mb'] = nil
ui['memory_map_threshold'] = 131072
ui['memory_trim_threshold'] = 131072
ui['memory_top_pad'] = 131072
ui['memory_map_max'] = 65536
ui['memory_alloc_arena_max'] = 2
ui['http_client_connect_timeout'] = 10000
ui['http_client_connect_timeout'] = 600000
mysql['enable'] = true
mysql['morpheus_db'] = 'morpheus'
mysql['morpheus_db_user'] = 'morpheus'
mysql['max_active'] = 100
mysql['host'] = '127.0.0.1'
mysql['port'] = 3306
mysql['tmp_dir'] = '/tmp/mysql'
mysql['mysql_url_overide'] = 'jdbc:mysql://10.30.20.10:3306,10.30.20.11:3306,10.30.20.12:3306/morpheusdb?autoReconnect=true&useUnicode=true&characterEncoding=utf8&failOverReadOnly=false&useSSL=false'
logging['svlogd_size'] = 209715200 # 200 MB in bytes
logging['svlogd_num'] = 30 # keep 30 rotated log files
logging['svlogd_timeout'] = 86400 # rotate after 24 hours in seconds
rabbitmq['enable'] = true
rabbitmq['vhost'] = 'morpheus'
rabbitmq['queue_user'] = 'queue_user'
rabbitmq['host'] = '127.0.0.1'
rabbitmq['port'] = '5672'
rabbitmq['nodename'] = 'rabbit@localhost'
rabbitmq['stomp_port'] = 61613
rabbitmq['heartbeat'] = nil
elasticsearch['enable'] = true
elasticsearch['host'] = "127.0.0.1"
elasticsearch['es_hosts'] = {'127.0.0.1' => 9200}
elasticsearch['open_files'] = 204800
elasticsearch['memory_map_threshold'] = 131072
elasticsearch['memory_trim_threshold'] = 131072
elasticsearch['memory_top_pad'] = 131072
elasticsearch['memory_map_max'] = 65536
elasticsearch['memory_alloc_arena_max'] = 2
elasticsearch['replica_count'] = 1
nginx['enable'] = true
nginx['workers'] = integer calculated from number of cpus
nginx['worker_connections'] = 10240
nginx['cache_max_size'] = '5000m'
nginx['ssl_country_name'] = "US"
nginx['ssl_state_name'] = "CA"
nginx['ssl_locality_name'] = "San Mateo"
nginx['ssl_company_name'] = "Morpheus, LLC"
nginx['ssl_organizational_unit_name'] = "DevOps"
nginx['ssl_email_address'] = "personal@email.com"
nginx['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"
nginx['ssl_protocols'] = "TLSv1 TLSv1.1 TLSv1.2"
nginx['ssl_session_cache'] = "builtin:1000 shared:SSL:10m"
nginx['ssl_session_timeout'] = "5m"
nginx['loading_pages']['max_loops'] = 60 # seconds
nginx['loading_pages']['timeout_page'] = '/timeout.html'
nginx['loading_pages']['iteration_time'] = 10000 # milliseconds
nginx['loading_pages']['loading_page_title'] = 'Morpheus Loading'
nginx['loading_pages']['loading_page_h1'] = 'Morpheus is Loading...'
nginx['loading_pages']['loading_page_h2'] = 'please wait'
nginx['loading_pages']['timout_page_title'] = 'Morpheus timeout, please try again...'
nginx['loading_pages']['timout_page_h1'] = 'Timeout waiting for Morpheus to load, click below to try again.'
nginx['loading_pages']['failure_page_title'] = 'Morpheus Server Error'
nginx['loading_pages']['failure_page_h1'] = 'Morpheus Server Error'
nginx['loading_pages']['failure_page_h2'] = 'Please contact your system administrator for assistance.'
repo['repo_host_url'] = 'https://downloads.morpheusdata.com'