Personal tools
Namespaces

Variants
Actions

OpenStack VPS And Cloud For WHMCS

From ModulesGarden Wiki
Revision as of 12:01, 12 July 2019 by Gregor (Talk | contribs)

Jump to: navigation, search

Contents

About OpenStack VPS For WHMCS

OpenStack VPS For WHMCS is a module which allows you to automatically provision virtual servers to your customers.

The great advantage of this module is the fact that customers can order and manage virtual servers, backups and many more in your own WHMCS client area.
Additionally, it allows you to conveniently overview and manage all the customers' servers.

  • Admin Area Features:
✔ Create/Suspend/Unsuspend/Terminate Server
✔ Change Package - Supports Configurable Options And Volume Resize
✔ Change Password - Xen Virtualization Only
✔ Rescue/Unrescue Server
✔ View Server Status And Details
✔ View Interface Details
✔ View List Of Scheduled Tasks
✔ Configure Client Area Features Per Product
✔ Define Backup Quantity Limit
✔ Set Security Groups
✔ Enable Backups Routing
✔ Enable Scheduled Backups
✔ Toggle VM Protection
✔ Apply Custom Rules To Firewall And Define Their Limits
✔ Execute Custom Scripts On Boot
✔ Choose Welcome Email For VM Creation
✔ Run Extended Connection Test
  • Client Area Features:
✔ View Server Status And Details
✔ Start/Stop/Pause/Unpause/Resume/Rebuild Server
✔ Reboot Server - Soft/Hard
✔ Reset Network
✔ Rescue/Unrescue Server
✔ Toggle VM Protection From WHMCS Termination And Rebuilding
✔ Change Password For Xen Virtualization
✔ Access noVNC VNC, RDP, SPICE Or Serial Console
✔ Create/Restore/Delete Backups
✔ View/Add/Delete Custom Firewall Rules:
✔ TCP
✔ UDP
✔ ICMP
✔ Other Protocols
✔ Toggle Scheduled Backups And Define Time Interval
✔ Download Public & Private SSH Keys
✔ View List Of Scheduled Tasks
✔ View Volumes Information
✔ Receive Email Notification After VM Creation
  • Configurable Options:
✔ Flavor
✔ VM Image
✔ IP Addresses
✔ Backups Files Limit
✔ Disk
✔ RAM
✔ VCPUs
✔ Total Firewall Rules Limit
✔ Inbound Firewall Rules Limit
✔ Outband Firewall Rules Limit
✔ Region
✔ Custom Script Files
  • Required Components:
✔ Keystone
✔ Glance
✔ Nova
✔ Neutron
✔ Gnocchi (Required For Advanced Billing For WHMCS)
  • General Info:
✔ Automated Generation Of SSH Keys - Public SSH Key Is Injected To VM Automatically
✔ Integrated With Advanced Billing For WHMCS v3.2.2 And Later - Actual Server Resource Usage Billing (read more)
✔ Integrated With Server Allocator For WHMCS - Automatic Assignment Of Most Suitable Servers To Products (read more)
✔ Multi-Language Support
✔ Supports Cloud-Init Scripts
✔ Supports OpenStack Stein and Previous
✔ Supports OpenStack Gnocchi
✔ Supports PHP 5.6 Up To PHP 7.3
✔ Supports WHMCS Template Six
✔ Supports WHMCS V7.5 And Later
✔ Easy Module Upgrade To Open Source Version

Installation and Configuration

This tutorial will show you how to successfully install and configure OpenStack VPS For WHMCS.

We will guide you step by step through the whole installation and configuration process.

Installation

1. Log in to our client area and download the module.
OSV1.png
2. In the downloaded file you might find one or two packages that support different PHP versions.

In the most recent versions of the module, you will find only one package that supports PHP 7.1 and later.
If you need a package for the previous versions of PHP, please contact our support.

PHP71 73.png
Previous updates of the module may contain two packages dedicated to various PHP versions.

The first one that supports PHP 5.6 up to PHP 7.0, and the second one addressed to PHP 7.1 up to PHP 7.3.
Note: Keep in mind that PHP versions 5.6 up to 7.0 are no longer officially supported and their security issues are not fixed or released any more. Find more info here.

PHP56 73.png
Important: This situation does not affect the open source version of this module which can be applied to any PHP from version 5.6 and later.
Note: You can check the current PHP version in your WHMCS. To do so, proceed to 'Utilities' → 'System' → 'PHP Info'.
3. Once you have chosen the package with the right PHP version, extract it and upload its content into the main WHMCS directory.

The content of the chosen PHP version files to upload should look like this.

Hjghjh.png
4. When you install OpenStack VPS For WHMCS for the first time you have to rename 'license_RENAME.php' file.

File is located in 'modules/servers/OpenStackVPS/license_RENAME.php' . Rename it from 'license_RENAME.php' to 'license.php' .

OSV3.png
5. In order to configure your license key, you have to edit the previously renamed 'license.php' file.

Enter your license key between quotation marks as presented on the following screen.
You can find your license key in our client area → 'My Products' .

OSV4.png
6. The last step is setting up a cron job (each 5 minutes suggested).

Use cron job below but switch 'your_whmcs' with your root WHMCS path.

php -q /your_whmcs/modules/servers/OpenStackVPS/cron/cron.php

Configuration of Server

7. Now, we will show you how to configure a new product.

Go to the 'Setup' 'Products/Services' 'Servers' and press 'Add New Server' .

OSV5.png
8. Next, enter your server name and connection details.
  • Provide your IP address/hostname with or without the endpoint name (you can find it in the OpenStack 'Authentication URL' field).
  • Do not forget to select which API version you want to use ( 'Default', 'V2' or 'V3' ).
  • Next, specify the details of your server. Choose 'OpenStackVPS' from the Type dropdown menu and provide the 'Username', 'Password' and admin 'Tenant ID.'
    Note: To find your 'Tenant ID' , log in to your OpenStack panel and go to the 'Identity' → 'Projects' menu.
    Now you will need to identify the row which corresponds to your project. The 'Tenant ID' will be located in the 'Project ID' column of the identified project.

  • Project Name - you may declare your project name to which this server is related (leave empty if not related to the OpenStack version you are using)
  • Certificate Path - you can also provide a full certificate path to verify permissions (leave empty if not related to the OpenStack version you are using)
  • Optionally, enter your OpenStack custom Domain or leave this field as 'Default' .
  • If your OpenStack uses https or any custom port, you can additionally provide the relevant configuration in Secure and Port fields.

Finally, press 'Save Changes' .

OSV6.png
9. After you have configured your server correctly, you can check the connection with the OpenStack server.

Simply edit the previously created server and press 'Test Connection' as shown on the screen below.
During the test, connection with all related endpoints will be checked.
Additionally you can change the endpoint addresses to make sure that all services have been connected successfully or select 'Don't use' if no endpoint is applicable to your OpenStack.
Note: Any chosen endpoint address will be automatically saved after its selection so there is no need to save it manually after each change introduced.

For more information about connections, visit the Common Problems and Tips sections.

OSV7.png
10. It is time to create a server group. To do so, click on 'Create Server Group'.
OSV8.png
11. Enter a name, click on your previously created server, press 'Add' and afterward 'Save Changes'.
OSV9.png

Configuration of Product

12. In order to create and configure a product, go to 'Setup' 'Products/Services' 'Products/Services'.

Click on 'Create a New Group' .

OSV10.png
13. Enter product group name and press 'Save Changes'.
OSV11.png
14. When you have a product group, you can create your product.

To create a product click on 'Create a New Product' .

OSV12.png
15. Afterward, choose your product group and type from the dropdown menus, enter your product name and press 'Continue'.

'Product Type' should be set to 'Hosting Account'.

OSV13.png
16. Now, go to the 'Module Settings' section, choose both 'OpenStackVPS' and your previously created server group from the dropdown menus.

Module should automatically save and reload settings. If not, click on 'Save Changes' manually.

OSV14.png
17. Start from selecting a 'Default Tenant'.

'Check access' will return 'OK' if you set up permissions correctly.

OSV15.png
18. Afterward, set up network. Choose 'Fixed Network' , 'Floating Network' and 'Default Number Of IP Addresses'.

You can set up network in two ways. You can find more information about the configuration here.
We will set up the network without a floating IP address as presented on the following screen.
Additionally, choose a quantity of IP addresses assigned to a product by typing it into 'Default Number Of IP Addresses'.

OSV16.png
19. At this step you can configure the backups settings.

Mark the 'Backups Routing' checkbox if you want to allow replacing the oldest backup with a new one when the backup files limit has been reached.
Afterward, enter a number of allowed backups that can be created into the 'Default Backups Files Limit' field. Enter '-1' for unlimited.

You may also let your clients define the backups tasks, they will be then created automatically according to defined time interval.
Select 'Scheduled Backups' option and then set the minimum time interval which your clients will have to obey when defining their task schedule at 'Backups Time Interval'.
Note: The number of backups created manually and those scheduled and created automatically is counted together and their overall sum cannot be higher than the defined limit.

OSV17.png
20. Define the virtual machine settings.
  • Mark a security group from 'Use Security Groups' and select 'Console Type'.
    Apart from the selected here groups you may also apply custom rules to the VM. You can learn more about them at Custom Security Group section.
  • If you wish to use SSH keys, leave 'Inject SSH Key' marked (virtualization has to support the 'Inject File' feature).
  • In order to use passwords for your VM, leave 'Password Management' marked (virtualization has to support the 'Set Admin Pass' feature).
    Please make sure, that virtualization used by you supports mentioned actions.
    Full list of supported features can be found here.

Important: It is recommended to leave 'Delete SSH Private Key' marked.

  • The following types of console can be chosen: 'VNC', 'RDP', 'SPICE' and 'Serial'.
OSV17 1.png
21. You can also take advantage of the dedicated Volume and set it as the location of your Virtual Machine Disk,

To do so, make sure to tick the Use Volumes checkbox and enter the desired number into the Default Volume Size field.
Note that once this option is enabled, your clients will no longer have access to the Backup and Rescue functions, so you may as well leave the respective fields empty.

OSV17 2.png
22. In the next step you may define the firewall rules settings.

Enter the firewall inbound, outbound and total rules limits. When the limit is reached, the client will not be able to create a new rule until one of the existing rules has been removed.

OSV17 0.png
23. Next, select features available at the client area.

Mark the checkbox next to a feature in order to enable it.

OSV18.png
24. In addition, you can also choose whether you want to send a welcome email after the VM has been successfully created by cron.

This feature can prove useful if you want clients to receive the notification once their VM is ready rather than immediately after product activation.
If you decide on this option, we suggest that you also set the standard WHMCS configuration of the 'Welcome Email' to 'None' in the 'Details' tab of a product.
Otherwise, the customer will receive both emails - after the product has been activated and after the VM has been successfully created on OpenStack.

Press 'Save Changes' when you are done.

OSV18 2.png

VPS With Predefined Resources

Our module allows you to offer OpenStack VPS to your clients in two ways, with either predefined or configurable resources.

In this section we will show you configuration of VPS with predefined resources.
Detailed information about configuration of VPS with resources chosen by a client can be found here.

25. Select a 'Default Flavor' and 'Default VM Image' .

'Default Flavour' defined resources assigned to a VM while 'Default VM Image' allows you to choose the VM image used to create a new VM.

OSV19.png
Congratulations! You have just finished the installation and configuration of the module with predefined resources.

VPS With Configurable Resources

26. Preparing VPS with configurable options consists of pressing 'Generate default' as shown on the following screen.

It will prepare default configurable options which can be afterward easily edited as described in this article.
Important: Configurable option 'flavor|Flavor' will be overwritten by 'disc|Disc', 'ram|RAM' and 'vcpus|VCPUs'.
Therefore, you can solve this in three ways:

  • Remove 'disc|Disc' , 'ram|RAM' and 'vcpus|VCPUs' configurable option and rely completely on 'flavor|Flavor' .
  • Remove 'disc|Disc' and 'vcpus|VCPUs' , and allow 'flavor|Flavor' being overwritten by 'ram|RAM' (multiple combinations allowed here).
  • Remove 'flavor|Flavor' and rely completely on 'disc|Disc' , 'ram|RAM' and 'vcpus|VCPUs' .

Note: The second and the third options results in creation of a new flavor on your server each time a new order is made.

OSV20.png

Custom Security Group

27. Optionally, you may create a custom security group with customised rules that will be added while creating the virtual machine.

Select 'Apply Custom Rules' option at Virtual Machine Settings and enable 'Firewall' option in the client area.

OSV20 1.png
Edit the additionalRules.json file content located at modules/servers/OpenStackVPS/config/additionalRules.json directory.

That is how a default content of the additionalRules.json file looks like:

OSV20 2.png
Customize the rules according to your needs by providing:
  • direction - "egress" or "ingress"
  • ethertype - "IPv4" or "IPv6"
  • description - "your rule description" - visible in the panel only
  • remote_ip_prefix - IP address, format bound to the ethertype field, e.g.: "::/0"
  • port_range_min - value between 1 and 63535, eg: "101"
  • port_range_max - value between 1 and 63535, e.g.: "200"
    In case you enter the same value in the 'port_range_min' and 'port_range_max', then one port will be set, not a range of ports.
  • protocol - enter one of the following: "tcp", "udp", "icmp", "custom"
    Important: 'Protocol' must be provided if 'port_range' has been defined.
Now, that your file is ready, a new security group will be created in your OpenStack panel and visible in the product's Module Settings under 'Use Security Groups' on the product creation.
The rules are visible for the client in the 'Firewall' section. If you terminate the product, this group will be deleted as well.

Custom Config Scripts

28. In this area, you can write a custom script using Cloud-Init and arrange it to be executed on newly created VMs.

This way you can automate your work instead of making all kinds of specific images for specific tasks manually.

Important notes:

  • Scripts can be written in standards like Bash or YAML.
  • Initial scripts have to be supported by VPS operating system to be executed properly.
  • Scripts should be used only by advanced users. The incorrect usage of the scripts may damage your system!
OSV44.png
On the example below, we will show an exemplary script responsible for setting the password to 'newpass01' for the Ubuntu root user.

You can achieve it by writing:

chpasswd:
 list: |
 ubuntu:newpass01
 expire:False
OSV45.png
You can configure scripts in the same format, but for clients' individual choice when ordering the product.

All you need to do is add a new configurable option and assign it to the OpenStack VPS product.
Note: These scripts are executed regardless of the script specified in the module settings.
The easiest way is through the edition of existing 'Configurable options for the OpenStack VPS' group, and adding the new configurable option there.
For example, if you want to offer the pre-installed PHP version depending on a client's choice, you can add a new option named script_PHP|PHP version and then define multiple options, like on the screenshot below:

OSV46.png
Afterward, your clients can choose during the ordering process:
OSV47.png

Using this method, you can perform assorted actions on newly created machines, e.g.: modifying files, preinstalling & preconfiguring software, executing any statements that would normally be executed via the terminal.

The general rule is that configurable option names should begin with script_prefix to be recognized as containing a custom script.
Then, choices under the option have their own names which are matched with a name of existing file with the corresponding script under the yourWHMCS/modules/servers/OpenStackVPS/scripts path.
Note that files with scripts have to have exactly extension corresponding to the given entries in the configurable options.

In the example above, there are two options: php5.yml and php7.yml, therefore it makes the module read corresponding files:

  • modules/servers/OpenStackVPS/scripts/php5.yml

or

  • modules/servers/OpenStackVPS/scripts/php7.yml

You can add many scripts in the exact way.

Management

OpenStack VPS For WHMCS allows your customers to manage their OpenStack VPS via the client area in your WHMCS system.

You can monitor and manage each product from your WHMCS admin area.
1. Configurable options which enable you to view current VPS resources and change VPS specifications through changing configurable options and pressing 'Change Package' .
2. Module commands enable you to manage VPS status.
3. Here you can find VPS details and refresh them through pressing the 'Refresh Details' icon.
4. Scheduled tasks status can be found in this table.
5. In marked custom fields you can find IDs of VM and private flavor.

OSV24.png
If you decided to select the Use Volumes feature, you will see an additional section named Volumes.
OSV24 1.png

Ordering

Owing to configurable options, you are able to offer a product which your clients can tailor according to their needs.

Additionally, you are able to set up pricing for each configurable option, which make your offer even more competitive.
Important: VPS is not created immediately after ordering 'Create' . Therefore, it is wise to inform your clients about the delay.

OSV25.png

Client Area

Client area interface of OpenStack VPS should look like the one on the screen below. As you can see, the control panel contains useful options needed for managing a VPS.

Module allows your customers to easily start/stop, pause/unpause, resume, soft reboot, hard reboot and reset network of their servers through pressing the specific button.
Clients can also rebuild the server, access noVNC console, create a backup and view scheduled tasks.
At 'Tasks' your customers can view all requested tasks that was not yet completed.
Each task has additional information bounded to them, like a type of task, attempts to perform tasks or a last returned response.

OSV26.png

Volumes

In case your OpenStack VPS is running with the Use Volumes option, the client area may look a bit different. It will now include an additional section named Volumes
OSV26 1.png

Rebuild

The rebuild feature allows your clients to change a server image.

To reinstall your server, choose an image and confirm through pressing the 'Rebuild' button.

OSV28.png

Rescue Mode

The rescue mode provides a mechanism for a VM access even in case the VM's image renders the instance inaccessible - e.g. if instance's filesystem becomes corrupted.

The rescue VM will be launched to permit the user to fix their VM.

OSV48.png

Before you continue please note that the rescue VM will be set up with the same network configuration as the real VM.
Moreover, a new root password will be generated and the VM status will change to 'RESCUE'.
The new VM will also have a rescue image as the primary filesystem and the secondary filesystem would be the original VM's primary filesystem.

OSV49.png
When you want to disable the rescue mode, click the 'Unrescue' button. The VM status will then also return to 'ACTIVE'.
OSV50.png

Backups

Your customers can also create backups of their VPS. To do so, press the 'Backups' button.

In this section you will find three different categories related to backups and their management.

OSV31.png
At the very top you will find a current list of existing and available backups with details on their status, creation date and action button.

Underneath, you may create backups manually at any moment you need. Simply type in a custom name of your backup and press the 'Backup Now' button.
Note: If there has been a limit set on the number of allowed backups and you have just reached that restriction, then backup with the earlies creation date will be removed to make room for the new on.

OSV32.png
Clients are also given the opportunity to crate backups automatically by enabling the option: 'Schedule Backups'.
When enabled, provide a time interval to wait until the next backup will be created to define the tasks routine. The entered time interval must be higher or equal to the limit defined by your administrator.

Note: The number of backups created manually and those scheduled and created automatically is counted together and their overall sum cannot be higher than the defined limit.

OSV32 1.png
To restore a VPS from backup, simply press the 'Restore' button next to it.

As you may notice on the following screen, presented earlier 'First Backup' has been replaced with the created manually 'New Backup' and then 'Second Backup' with the one created automatically.
It was caused by a backup routing feature which was triggered by reaching the backups file limit.
Note that it is also easy to distinguish which backups were created manually - those with a custom name, and which automatically - default name including its exact date and hour.

OSV32 2.png

noVNC Console

One of the most interesting functionality is a noVNC console where your clients can remotely manage their server.

To access it, simply click on the 'Console' button.

OSV29.png
noVNC is a browser based VNC client. It was implemented using HTML5 Canvas and WebSockets.
OSV30.png

VM Protection

In the product configuration page you can enable the 'Protect VM After Creation' option which prevents the termination or rebuilt of VM.

The selected status of this protection will be applied to both admin area and client area.

OSV51.png
Moreover, if the 'Protect VM' option is enabled in the client area, the client will be empowered to toggle the current protection status.
OSV52.png

Firewall

The firewall management page allows your customers to view, add or delete existing rules on a security group assigned to the product.

To add a new firewall rule, use the button marked on the following screen.

OSV53.png
Next, choose the rule type (TCP, UDP, ICMP or Other Protocols), direction (inbound or outbound) and ether type (IPv4 or IPv6).
Depending on the port you choose, you will be able to add a rule for a single port only, a range of ports or all ports at once. You can also select one of the predefined ports or use a custom one.
Finally, provide a single IP address or specify the range of addresses using the CIDR format (e.g. 10.10.10.1/24).

Press 'Add' when ready.

OSV54.png

Network Configuration Cases

OpenStack VPS For WHMCS allows you to set up two types of network.

The first one is a network without a floating IP address.
To set up this type of network, choose 'Public' as 'Fixed Network' and 'Disabled' as 'Floating Network' .
On the following screen you can view an exemplary topology of such network.

OSV36.png
The second type of network is the network with a floating IP address.

Select 'Shared Network' as 'Fixed Network' and 'Public' as 'Floating Network' .

OSV37.png

Configurable Options

In case that standard configuration is not fitting your needs, you can adjust it through configurable options.

To do so, go to 'Setup' 'Products/Services' 'Configurable Option' and press the edit button next to a configurable option used by your product.
Its name is 'Configurable options for your_product_name' .

OSV38.png
Here you can view the products that this configurable option group is assigned to.

Now we will show you how to edit options. Let's say that you want to add an option to order VPS with 8GB (8192 MB) RAM.
To do so, edit 'ram|RAM' by pressing the edit button as shown on the screen below.

OSV39.png
You will see a popup window, so make sure that your browser will not block it.

To add a new option, enter it in a textbox under all other options. If you want to replace it with an option you currently have, simply edit its text box.
Next, press 'Save Changes' .

OSV40.png

Management of Billing

When you combine OpenStack VPS For WHMCS with Advanced Billing For WHMCS, you will be able to set up additional billing options.

Module allows you to charge your customers based on the server resources used by them.
Note: Advanced Billing currently supports only API prior V3 (OpenStack Ocata). A new compatibility will be added soon.

OSV42.png
With Advanced Billing module, you can also display your customers the current server resource usage, their cost, usage history and charts.
OSV43.png

Tips

1. Due to some requests may take time to be completed, we implemented 'Scheduled Tasks' .

Tasks visible at 'Scheduled Tasks' are subsequently performed by a cron job.
Full list of tasks supported by 'Scheduled Tasks' are: create, terminate, change package, remove IP address and remove backup.

2. Important: module has to use admin endpoints instead of public endpoints.

In properly configured OpenStack server, wget from WHMCS server should be able to get any data from any admin endpoint.
Sample successful requests:

wget openstack:9292
--2014-03-31 09:35:24-- http://openstack:9292/
Resolving openstack(openstack)... 192.168.1.222
Connecting to openstack(openstack)|192.168.1.222|:9292... connected.
HTTP request sent, awaiting response... 300 Multiple Choices
Length: 520 [application/json]
Saving to: `index.html'

100%[==========================================================>] 520 --.-K/s in 0s

2014-03-31 09:35:24 (118 MB/s) - `index.html' saved [520/520]


wget openstack:8777
--2014-03-31 09:41:05-- http://openstack:8777/
Resolving openstack(openstack)... 192.168.1.222
Connecting to openstack(openstack)|192.168.1.222|:8777... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authorization failed. 
3. A primary IP address is always assigned by OpenStack server when a VM is created. Therefore, if you decide to order 2 IP addresses, then 3 addresses will be assigned.
The primary one and the two additionally ordered. If you wish only one IP address to be assigned to a single product, please set the filed 'Default Number Of IP Addresses' to '0'
or leave it empty in the product's 'Module Settings'.

Update Instructions

Essential guidance through the process of updating the module is offered here.

Keep in mind there is a quick and easy option in our client area that will let you upgrade the license of your module to an open source version at any time - and at a lower price!
To take advantage of it, simply use the License Upgrade button located on the product's page and a discounted invoice will be generated automatically.

Common Problems

1. When you have problems with connection, check whether your SELinux or firewall does not block ports.
2. In case of persisting connection problems, please make sure you have the following ports open:
8774, 35357, 9292, 5000, 8777, 9696, 8776
Navigation
WHMCS Modules
WHMCS Widgets
Translations
cPanel Modules
General
FAQ
Community