OpenStack VPS And Cloud For WHMCS
Article update is ongoing on this page, watch out for broken links, unclear descriptions and images!
We are sorry for the inconvenience caused.
Contents |
About OpenStack VPS & Cloud For WHMCS
OpenStack VPS & Cloud 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. |
- Admin Area Features:
✔ Create/Suspend/Unsuspend/Terminate Server |
✔ Change Package - Supports Configurable Options And Volume Resizing |
✔ Change Password |
✔ Start/Stop/Pause/Unpause/Resume/Rebuild Server |
✔ Soft/Hard Reboot Server |
✔ Reset Network |
✔ Rescue/Unrescue Server |
✔ Toggle VM Protection From WHMCS Termination And Rebuilding |
✔ View Instance Status And Details |
✔ View Interfaces Details |
✔ View Volumes Information |
✔ View List Of Scheduled Tasks |
✔ Provide Product Configurations: |
✔ Project Settings: |
✔ Choose Default VM Image/Flavor/Region |
✔ Provide Random Domain Prefix |
✔ Toggle Debug Mode |
✔ Network Settings: |
✔ Choose Fixed/Floating Networks |
✔ Define Default Number Of IP Addresses |
✔ Backup Settings: |
✔ Enable Backups Rotation |
✔ Enable Scheduled Backups |
✔ Define Backups Quantity Limit |
✔ Define Backups Minimum Time Interval |
✔ Virtual Machines Settings: |
✔ Enable Auto-generation SSH Key |
✔ Define Default Volume Size |
✔ Set Security Groups |
✔ Enable Password Management |
✔ Choose RDP/Serial/SPICE/VNC Console Type |
✔ Select Rescue Image |
✔ Toggle VM Protection After Creation |
✔ Firewall Settings: |
✔ Apply Custom Rules |
✔ Define Inbound/Outbound/Total Firewall Rules Limits |
✔ Configure Client Area Features Per Product |
✔ Execute Custom Scripts On Boot |
✔ Choose Welcome Email For VM Creation |
✔ Generate Configurable Options |
- Client Area Features:
✔ View Server Status And Details |
✔ Start/Stop/Pause/Unpause/Resume/Rebuild Server |
✔ Soft/Hard Reboot Server |
✔ Reset Network |
✔ Rescue/Unrescue Server |
✔ Change Server Protection Status |
✔ Toggle VM Protection From WHMCS Termination And Rebuilding |
✔ Change Password |
✔ Create/Restore/Delete Backups |
✔ Toggle Scheduled Backups And Define Time Interval |
✔ Access RDP, Serial, SPICE, Or VNC Console |
✔ View/Add/Delete Custom Firewall Rules: |
✔ TCP |
✔ UDP |
✔ ICMP |
✔ Other Protocols |
✔ Download Public & Private SSH Keys |
✔ View Volumes Information |
✔ View List Of Scheduled Tasks |
✔ Receive Email Notification After VM Creation |
- Configurable Options:
✔ Flavor |
✔ VM Image |
✔ IP Addresses |
✔ Volume Size |
✔ Backups Files Limit |
✔ Disk |
✔ RAM |
✔ VCPUs |
✔ Total Firewall Rules Limit |
✔ Inbound Firewall Rules Limit |
✔ Outbound Firewall Rules Limit |
✔ Region |
✔ Custom Script Files |
- Supported Providers:
✔ Bluvalt |
✔ City Cloud |
✔ CT Cloud Platform |
✔ DS Public |
✔ ELASTX OpenStack |
✔ INAP Bare Metal |
✔ INAP Cloud |
✔ Limestone Networks |
✔ Linaro Developer Cloud |
✔ Open Telekom Cloud |
✔ OVH Public Cloud |
✔ Rackspace Public Cloud |
✔ ScaleUp Cloud |
✔ STC Cloud |
✔ UOS Cloud |
✔ VEXXHOST |
✔ vScaler Public Cloud |
✔ warescale Public Cloud |
- Required Components:
✔ Keystone |
✔ Glance |
✔ Nova |
✔ Neutron |
✔ Gnocchi (Required For Billing) |
- General Info:
✔ Automated Generation Of SSH Keys - Public SSH Key Is Injected To VM Automatically |
✔ Integrated With Advanced Billing For WHMCS - 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 With WHMCS Variables |
✔ Supports OpenStack Victoria and Previous |
✔ Supports OpenStack Gnocchi |
✔ Supports Virtuozzo Hybrid Infrastructure (VHI) |
✔ Supports Limestone Networks Cloud Hosting Solutions |
✔ Supports PHP 7.2 Up To PHP 7.4 |
✔ Supports WHMCS Themes "Six" And "Twenty-One" |
✔ Supports WHMCS V8.0 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 & Cloud 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. |
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.2 and later. |
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.1, and the second one addressed to PHP 7.2 up to PHP 7.4. |
Note: You can check the current PHP version in your WHMCS. To do so, proceed to 'Utilities' → 'System' → 'PHP Info'. |
3. Extract the package and upload its content into the main WHMCS directory.
The content of the package to upload should look like this. |
4. When you install OpenStack VPS & Cloud For WHMCS for the first time you have to rename the 'license_RENAME.php' file. The file is located in 'modules/servers/OpenStackVpsCloud/license_RENAME.php' . Rename it from 'license_RENAME.php' to 'license.php' . |
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. |
6. The last step is setting up a cron job (each 5 minutes suggested). Use cron job below but switch the 'your_whmcs' with your root WHMCS path. php -q /yourWHMCS/modules/servers/OpenStackVpsCloud/cron/cron.php queue |
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' . Note: If you have WHMCS V7.8.X or later, we recommend using 'previous experience' of server configuration instead of the new wizard tool. |
8. Next, enter your server name and connection details.
Finally, press 'Save Changes' . |
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. For more information about connections, visit the Common Problems and Tips sections. |
10. It is time to create a server group. To do so, click on 'Create New Group'. |
11. Enter a name, click on your previously created server, press 'Add' and afterward 'Save Changes'. |
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' . |
13. Enter a product group name and press 'Save Changes'. |
14. When you have a product group, you can create your product. To create a product click on 'Create a New Product' . |
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 'Shared Hosting'. |
16. Now, go to the 'Module Settings' section, choose both 'OpenStack VPS Cloud' and your previously created server group from the dropdown menus. The module should automatically save and reload settings. If not, click on 'Save Changes' manually. |
17. Start from defining 'Project Settings' |
18. Afterward, set up a network. Choose 'Fixed Network' , 'Floating Network' and 'Default Number Of IP Addresses'. You can set up a network in two ways. You can find more information about the configuration here. |
19. At this step you can configure the backup settings. Mark the 'Backups Rotation ' checkbox if you want to allow replacing the oldest backup with a new one when the backup files limit has been reached. You may also let your clients define the backups tasks, they will be then created automatically according to the defined time interval. |
20. Define the virtual machine settings.
Important: It is recommended to leave 'Delete SSH Private Key' marked.
|
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. |
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. |
23. Next, select features available at the client area. You can also decide which images used to rebuild the server will be available to your customers. |
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. |
VPS With Predefined Resources
Our module allows you to offer OpenStack VPS & Cloud 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. |
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. |
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 'Create Configurable Options' as shown on the following screen. It will prepare default configurable options which can be afterward easily edited as described in this article.
Note: The second and the third options results in the creation of a new flavor on your server each time a new order is made. |
You can now decide which options should be included in configurable options. |
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. |
Edit the additionalRules.json file content located at modules/servers/OpenStackVpsCloud/app/Config/additionalRules.json directory. That is what a default content of the additionalRules.json file looks like: |
Customize the rules according to your needs by providing:
|
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.
|
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: #cloud-config debug: True ssh_pwauth: True disable_root: false chpasswd: list: | root:{$password} expire: false runcmd: - sed -i'.orig' -e's/without-password/yes/' /etc/ssh/sshd_config - service sshd restart
|
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 & Cloud product. |
Afterward, your clients can choose during the ordering process: |
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.
or
You can add many scripts in the exact way. |
From the version 1.9.0 you can also use the WHMCS variables of ordered products in your scripts. These variables can be managed in the same way as merge fields in email templates. The exemplary execution of the clout-init test script is presented below: #cloud-config runcmd: - sudo echo "account id: {$accountid}" >> /tmp/whmcs_info.txt - sudo echo "service id: {$serviceid}" >> /root/whmcs_info.txt - sudo echo "addon id: {$addonId}" >> /var/log/whmcs_info.txt - sudo echo "user id: {$userid}" >> ~/whmcs_info.txt You will save IDs of the WHMCS 'account', 'service', 'addon' and 'client' into the 'whmcs_info.txt' files in various directories on the created instance. Below you can find a complete list of supported variables that can be managed in your custom scripts: |
Variable | Variable | Variable | Variable | Variable |
---|---|---|---|---|
{$accountid} | {$configoption12} | {$server} | {$clientsdetails['password']} | {$clientsdetails['allowSingleSignOn']} |
{$serviceid} | {$configoption13} | {$serverip} | {$clientsdetails['statecode']} | {$clientsdetails['language']} |
{$addonId} | {$configoption14} | {$serverhostname} | {$clientsdetails['countryname']} | {$clientsdetails['isOptedInToMarketingEmails']} |
{$userid} | {$configoption15} | {$serverusername} | {$clientsdetails['phonecc']} | {$clientsdetails['lastlogin']} |
{$domain} | {$configoption16} | {$serverpassword} | {$clientsdetails['phonenumberformatted']} | {$clientsdetails['authmodule']} |
{$username} | {$configoption17} | {$serveraccesshash} | {$clientsdetails['telephoneNumber']} | {$clientsdetails['authdata']} |
{$password} | {$configoption18} | {$serversecure} | {$clientsdetails['billingcid']} | {$clientsdetails['datecreated']} |
{$sld} | {$configoption19} | {$serverhttpprefix} | {$clientsdetails['notes']} | {$clientsdetails['cardtype']} |
{$tld} | {$configoption20} | {$serverport} | {$clientsdetails['twofaenabled']} | {$clientsdetails['cardlastfour']} |
{$packageid} | {$configoption21} | {$clientsdetails['userid']} | {$clientsdetails['currency']} | {$clientsdetails['cardnum']} |
{$pid} | {$configoption22} | {$clientsdetails['id']} | {$clientsdetails['defaultgateway']} | {$clientsdetails['startdate']} |
{$serverid} | {$configoption23} | {$clientsdetails['uuid']} | {$clientsdetails['cctype']} | {$clientsdetails['expdate']} |
{$status} | {$configoption24} | {$clientsdetails['firstname']} | {$clientsdetails['cclastfour']} | {$clientsdetails['issuenumber']} |
{$type} | {$customfields['vmID']} | {$clientsdetails['lastname']} | {$clientsdetails['gatewayid']} | {$clientsdetails['bankname']} |
{$producttype} | {$customfields['privateFlavor']} | {$clientsdetails['fullname']} | {$clientsdetails['securityqid']} | {$clientsdetails['banktype']} |
{$moduletype} | {$configoptions['flavor']} | {$clientsdetails['companyname']} | {$clientsdetails['securityqans']} | {$clientsdetails['bankcode']} |
{$configoption1} | {$configoptions['isoImage']} | {$clientsdetails['email']} | {$clientsdetails['groupid']} | {$clientsdetails['bankacct']} |
{$configoption2} | {$configoptions['ipAddresses']} | {$clientsdetails['address1']} | {$clientsdetails['status']} | {$clientsdetails['ip']} |
{$configoption3} | {$configoptions['backupsFilesLimit']} | {$clientsdetails['address2']} | {$clientsdetails['credit']} | {$clientsdetails['host']} |
{$configoption4} | {$configoptions['disk']} | {$clientsdetails['city']} | {$clientsdetails['taxexempt']} | {$clientsdetails['pwresetkey']} |
{$configoption5} | {$configoptions['ram']} | {$clientsdetails['fullstate']} | {$clientsdetails['latefeeoveride']} | {$clientsdetails['allow_sso']} |
{$configoption6} | {$configoptions['vcpus']} | {$clientsdetails['state']} | {$clientsdetails['overideduenotices']} | {$clientsdetails['email_verified']} |
{$configoption7} | {$configoptions['totalRulesLimit']} | {$clientsdetails['postcode']} | {$clientsdetails['separateinvoices']} | {$clientsdetails['created_at']} |
{$configoption8} | {$configoptions['inboundRulesLimit']} | {$clientsdetails['countrycode']} | {$clientsdetails['disableautocc']} | {$clientsdetails['updated_at']} |
{$configoption9} | {$configoptions['outboundRulesLimit']} | {$clientsdetails['country']} | {$clientsdetails['emailoptout']} | {$clientsdetails['pwresetexpiry']} |
{$configoption10} | {$configoptions['region']} | {$clientsdetails['phonenumber']} | {$clientsdetails['marketing_emails_opt_in']} | |
{$configoption11} | {$configoptions['script_test']} | {$clientsdetails['tax_id']} | {$clientsdetails['overrideautoclose']} |
Management
OpenStack VPS & Cloud For WHMCS allows your customers to manage their servers via the client area in your WHMCS system. You can monitor and manage each product from your WHMCS admin area. |
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. |
Importing Existing Instance
In this section, you can find short instruction on how to connect one of your clients to your already existing instance in the OpenStack panel. Take the following steps to make sure that the process will be carried out properly. 1. Firstly, manually create an order for your customer in WHMCS. Choose a client and in the summary, view click on the ' Add New Order' button. Next, select a 'Product/Service' and press 'Submit Order' .
The above-mentioned information has to be consistent with the data from your OpenStack panel. Now, complete these fields as presented below. |
3. If the completed data is correct, after refreshing the page, you will see the attached instance from OpenStack. Important! Remember to manually add other missing parameters of the instance such as domains, credentials, IP Addresses, configurable options, SSH Key, billing cycle, etc. so they match the parameters of the attached instance from OpenStack. |
Client Area
Client area interface of OpenStack VPS & Cloud should look like the one on the screen below. As you can see, the control panel contains useful options needed for managing a virtual machine. The module allows your customers to easily start/stop, pause/unpause, resume, soft reboot, hard reboot, and reset network of their servers by pressing the specific button. |
Volumes
In case your OpenStack VPS & Cloud is running with the 'Use Volumes' option, the client area may look a bit different. It will now include an additional section named Volumes. |
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. |
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. |
Before you continue, please note that the rescue VM will be set up with the same network configuration as the real VM. |
When you want to disable the rescue mode, click the 'Unrescue' button. The VM status will then also return to 'ACTIVE'. |
Backups
Your customers can also create backups of their resources. To do so, press the 'Create Backup' button. In this section, you will find three different categories related to backups and their management. |
Simply, type in a custom name of your backup and press the 'Backup Now' button. Note 1: Sometimes it may take up to several dozen minutes to finish creating the backup. Please wait until the process is complete. |
Clients are also given the opportunity to create 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. |
To restore a VPS from backup, simply press the 'Restore' button next to it. If selected backups are no longer needed, you may easily delete them. |
VNC Console
One of the most interesting functionality is a VNC console where your clients can remotely manage their servers. To access it, simply click on the 'Console' button. |
VNC is a browser based VNC client. It was implemented using HTML5 Canvas and WebSockets. |
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. |
Moreover, if the 'Protect VM' option is enabled in the client area, the client will be empowered to toggle the current protection status. |
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. |
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. |
Network Configuration Cases
OpenStack VPS & Cloud For WHMCS allows you to set up two types of network. The first one is a network without a floating IP address. |
The second type of network is the network with a floating IP address. Select 'Shared Network' as 'Fixed Network' and 'Public' as 'Floating Network' . |
Configurable Options
In case that standard configuration does not meet 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. |
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. |
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. |
Please remember that names of 'Options' for configurable options such as 'Flavor' , 'Network' as well as 'Image' should NOT be modified in WHMCS. These names should remain the same as in your OpenStack panel. |
Management of Billing
When you combine OpenStack VPS & Cloud 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. |
With Advanced Billing module, you can also display your customers the current server resource usage, their cost, usage history and charts. |
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. |
2. Important: module has to use admin endpoints instead of public endpoints. In a properly configured OpenStack server, wget from WHMCS server should be able to get any data from any admin endpoint. 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 the 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'. |
4. 'Scheduled Backups' functionality is available also for VPS using volumens since 2.0.0 module version and later. |
5. How to set up a password to a VM: When crating a VM:
When resetting a VM:
|
Update Instructions
An essential guidance through the process of updating the module is offered here. When you upgrade the module from the version older than 1.8.1 to 1.8.1 or newer, please remember to update the new server's hostname to the new address format, as described in step 8. of the configuration of server guide. Keep in mind that 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 upgrade OpenStack VPS & Cloud from v1.X.X to v2.X.X correctly, please follow these steps:
yourWHMCS/includes/OpenStack yourWHMCS/modules/servers/OpenStackVPS
yourWHMCS/includes/hooks
Important! Please remember to reissue the license in the client area after uploading new files to the main WHMCS directory.
php -q /yourWHMCS/modules/servers/OpenStackVpsCloud/cron/cron.php migration:v1_v2
php -q /yourWHMCS/modules/servers/OpenStackVpsCloud/cron/cron.php queue
|
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 |
3. If you come across an error with downloading endpoints during the server configuration process, please save the incomplete configuration, refresh a page and then try to finish your server configuration again. |
4. In case you encounter any issues with the cloud-int script or it seems not to be working please follow the below steps:
cloud-init --debug init |
5. If you come across the "This flavor - flavor_name_or_id - is not available in the region region_name." error when creating a VM, you should refresh the server configuration page and update Configurable Options. If this error is still occurring, please make sure that you have the same flavor names set for all regions. |