OpenStack VPS For WHMCS

From ModulesGarden Wiki
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
✔ 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
✔ Execute Custom Scripts On Boot
✔ 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
✔ Change Password For Xen Virtualization
✔ Access noVNC VNC, RDP, SPICE Or Serial Console
✔ Create/Restore/Delete Backups
✔ Download Public & Private SSH Keys
✔ View List Of Scheduled Tasks
  • Configurable Options:
✔ Flavor
✔ VM Image
✔ IP Addresses
✔ Backups Files Limit
✔ Disk
✔ RAM
✔ VCPUs
✔ Region
✔ Custom Script Files
  • Required Components:
✔ Keystone
✔ Glance
✔ Nova
✔ Neutron
✔ Ceilometer (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 - Server Resource Usage Billing
✔ Integrated With Server Allocator For WHMCS - Automatic Assignment Of Specified Servers To Products
✔ Multi-Language Support
✔ Supports Cloud-Init Scripts
✔ Supports OpenStack Ocata and Earlier
✔ Supports OpenStack Gnocchi
✔ Supports PHP 5.4 Up To PHP 7
✔ Supports WHMCS Templates Five and Six
✔ Supports WHMCS V6 and V7

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 your client area and download the module.
OSV1.png
2. In the downloaded file you will find two packages that support different PHP versions.
As presented on the screen below, the first one is dedicated to PHP 7, while the second one is aimed at PHP 5.4 up to PHP 5.6.
It does not apply to open source versions.

Note: You can check current PHP version in your WHMCS. To do so proceed to 'Utilities' → 'System' → 'PHP Info'.

OSV2.png
3. Extract the downloaded file and choose the one with the right PHP version. Upload and extract the PHP file into the main WHMCS directory.

The content of PHP version files 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 a previously renamed 'license.php' file.

Enter your license key between quotation marks as presented on the following screen.
You can find your license key at your 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, IP address/hostname (which may required API version at the end of the address), username, password and admin tenant ID.

Choose 'OpenStackVPS' from a dropdown menu and press 'Save Changes' .
Note: To find your 'Tenant ID' log in to your OpenStack panel and go to the 'Indentity' → 'Projects' menu.
There identify the row which corresponds to your project. The 'Tenant ID' is located in the 'Project ID' column for the identified project.

OSV6.png
9. After you configure your server correctly, you can check connection with OpenStack server.

Simply edit previously created server and press 'Test Connection' as shown on the screen below.
During test, connection with all required endpoints will be checked. For more information about connections, go to Common Problems section.

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

Configuration of Product

12. In order to create and configure a product, go to the '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. Afterwards, choose your product group and type from 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 dropdown menus.

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

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

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

OSV15.png
18. Afterwards, set up a 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 a network without floating IP address as presented on the following screen.
Additionally, choose quantity of IP addresses assigned to product by typing it into 'Default Number Of IP Addresses' .

OSV16.png
19. At this step you can set up backups.

Mark 'Backups Routing' checkbox if you want to replace oldest backup with newest one when backups file limit is reached.
Afterwards, enter limit of backup files into 'Default Backups Files Limit' .

OSV17.png
20. Mark security group from 'Use Security Groups' and select 'Console Type' .

If you wish to use SSH keys, leave 'Inject SSH Key' marked (virtualization has to support 'Inject File' feature).
In order to use passwords for your VM, leave 'Password Management' marked (virtualization has to support '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. Finish through selecting features available at the client area.

Mark checkbox next to feature in order to enable it. Press 'Save Changes' when you are done.

OSV18.png

VPS With Predefined Resources

Our module allows you to offer OpenStack VPS to your clients in two ways, with predefined resources and 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 client can be found here.

22. Select 'Default Flavor' and 'Default VM Image' .

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

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

VPS With Configurable Resources

23. 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 afterwards 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 overwrited 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 causes a new flavor being made on your server each time a new order is made.

OSV20.png

Custom Config Scripts

24. In this area, you can write a custom script using Cloud-Init 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 use of the scripts may damage your system!
OSV44.png
On the example below, we will show an examplary 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 edition of the existing 'Configurable options for OpenStack VPS' group, and adding a new configurable option there.
For example, if you want to offer pre-installed PHP version depending on the 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
Afterwards, 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 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 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 this exact way.

Management

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

You can monitor and manage each product from your WHMCS admin area.
1. Configurable options which enables you to view current VPS resources and change VPS specifications through changing configurable options and pressing 'Change Package' .
2. Module commands enables you to manage VPS status.
3. Here you can find VPS details and refresh them through pressing '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

Ordering

Owing to configurable options, you are able to offer 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, control panel contains useful options needed for managing VPS.

Module allows your customers to easily start/stop, pause/unpause, resume, soft reboot, hard reboot and reset network of their servers through pressing specified 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 type of task, attempts to perform tasks or last returned response.

OSV26.png

Rebuild

Rebuild feature allows your clients to change server image.

Press 'Rebuild' button as shown on the following screen in order to move to the rebuild page.

OSV27.png
To reinstall your server, choose an image and confirm through clicking on 'Rebuild' button.
OSV28.png

Rescue Mode

The rescue mode provides a mechanism for 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' buton. TheVM status will then also return to 'ACTIVE'.
OSV50.png

Backups

Your customers can also create a backup of VPS. To do so, press 'Backups' button.
OSV31.png
Now, choose backup name and press 'Backup Now' button.
OSV32.png
To restore VPS from backup, simply press 'Restore' button next to it.

As you may notice on the following screen, presented earlier 'First Backup' backup was replaced with 'New Backup' .
It was caused by backup routing feature which was triggered by reaching backups file limit.

OSV33.png

noVNC Console

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

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

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

SSH Keys

Due to limitation in WHMCS product create process, OpenStack VPS For WHMCS generates SSH key pair automatically.

Public SSH key is automatically injected into VM while private key can be downloaded from the client area.
In order to download Unix private SSH key press 'Download Private Key' .
You can easily convert your private Unix key(.rsa) to private PuTTY key(.ppk) using 'PuTTYgen' .

OSV34.png
Public SSH key in other hand, can be downloaded as many times as your client will need it.

Press 'Download Public Key' as shown on the following screen to save it on your disk.

OSV35.png

Network Configuration Cases

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

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

OSV36.png
Second type of network is a network with 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 edit button next to 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 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 new option, enter it in a textbox under all other options. If you want to replace it with option you currently have, simply edit its textbox.
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 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 successfull 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'.

Common Problems

1. When you have problems with connection, check whether your SELinux or firewall does not block ports.
2. 'Connection Error: No route to host' error.

Reason: WHMCS server can not resolve OpenStack endpoint hostnames.
Solution: Log in to your OpenStack via SSH and use 'keystone endpoint-list' command to obtain list of needed endpoints.

OSV 41.png
Afterwards, check each URL from 'adminurl' column using 'ping' command at your WHMCS server.

All URLs which are not reachable have to be added to 'hosts' file on a server with your WHMCS.

3. In case of persisting connection problems, please make sure you have the following ports open:
8774, 35357, 9292, 5000, 8777, 9696, 8776
Personal tools
Namespaces

Variants
Actions
Navigation
WHMCS Modules
cPanel Modules
Magento Extensions
Magento Themes
PrestaShop Modules
Blesta Extensions
General
Social
OpenStack VPS For WHMCS