VCL 2.5 is the first release to include an installation script. All you need to install VCL is the script. It will download and validate the VCL software and then install it. The script can be used to install all three parts of VCL (database, web portal, and management node) or to install each part individually.
Download Install Script (vcl-install.sh)
Validate script:
wget https://www.apache.org/dist/vcl/2.5/vcl-install.sh.sha1 sha1sum -c vcl-install.sh.sha1 wget https://www.apache.org/dist/vcl/KEYS gpg --import KEYS wget https://www.apache.org/dist/vcl/2.5/vcl-install.sh.asc gpg --verify vcl-install.sh.asc
Running the installation script with no arguments will step you through installing all three parts of VCL. Alternatively, the following explains optional arguments. If installing the management node part of VCL, it will also prompt you to agree to the installation of various system level requirements needed for the code to run.
vcl-install.sh [-h|--help] [-d|--database] [-w|--web] [-m|--managementnode] [--dbhost <hostname> --dbpass <password>] [--mnhost <hostname>] [--webhost <hostname>] -d|--database - install database server components --dbpass, --mnhost, --mnip, --webhost, and --adminpass must also be specified -w|--web - install web server components --dbhost and --dbpass must also be specified -m|--managementnode - install management node (vcld) components --dbhost, --dbpass, and --adminpass must also be specified --dbhost <hostname> - hostname of database server (default=localhost) --dbpass <password> - password VCL will use for accessing database (default=random) --mnhost <hostname> - hostname of management node (default=localhost) --webhost <hostname> - hostname of web server (default=localhost) --adminpass <password> - password for VCL admin user
This section provides a list of commands for installing VCL if you prefer to manually install it.
Database Installation
Web Portal Installation
Management Node Installation
VCL currently supports the use of MySQL or MariaDB as the database.
Download and Extract the Apache VCL Source
If you have not already done so, follow the instructions on the download page to download and verify apache-VCL-2.5.tar.bz2, and put it in /root
Extract the files:
tar -jxvf apache-VCL-2.5.tar.bz2
Install MySQL Server or MariaDB Server
Install MySQL or MariaDB Server
yum install mysql-server -y
or
yum install mariadb-server -y
Configure the database daemon to start automatically:
/sbin/chkconfig --level 345 mysqld on
or
/sbin/chkconfig --level 345 mariadb on
Start the database daemon:
/sbin/service mysqld start
or
/sbin/service mariadb start
If the iptables firewall is being used and the web server and management nodes will be on different machines, port 3306 should be opened up to each of those nodes. Add the following to your iptables config and restart iptables service.
Note: Insert your web server and management node IP address in the right locations.
vi /etc/sysconfig/iptables
Add these rules:
-A INPUT -m state --state NEW -s <web server IP> -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -s <management node IP> -p tcp --dport 3306 -j ACCEPT
Restart iptables:
service iptables restart
If the firewalld firewall is being used and the web server and management nodes will be on different machines, port 3306 should be opened up to each of those nodes. Add the following rules and reload the rule set.
Note: Insert your web server and management node IP address in the right locations.
Add these rules:
firewall-cmd --zone=public --permanent --add-rich-rule="rule family="ipv4" source address="<web server IP>" service name="mysql" accept" firewall-cmd --zone=public --permanent --add-rich-rule="rule family="ipv4" source address="<management node IP>" service name="mysql" accept"
Restart iptables:
firewall-cmd --reload
Create the VCL Database
Run the MySQL command-line client:
mysql
Create a database:
CREATE DATABASE vcl;
Create a user with SELECT, INSERT, UPDATE, DELETE, and CREATE TEMPORARY TABLES privileges on the database you just created (NOTE Use your own password):
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE TEMPORARY TABLES ON vcl.* TO 'vcluser'@'localhost' IDENTIFIED BY 'vcluserpassword'; ```bash
Exit the MySQL command-line client
exit
Import the vcl.sql file into the database. The vcl.sql file is included in the mysql directory within the Apache VCL source code
mysql vcl < apache-VCL-2.5/mysql/vcl.sql
Prerequisites
Web Server:
Required Linux Packages:
Required PHP Modules:
Install the Required Linux Packages & PHP Modules
If your web server is running a Red Hat-based OS, the required components can be installed with:
For RHEL / CentOS 6 and 7
yum install httpd mod_ssl php php-mysql php-xml php-xmlrpc php-ldap -y
Configure the web server daemon (httpd) to start automatically:
/sbin/chkconfig --level 345 httpd on
Start the web server daemon
/sbin/service httpd start
If SELinux is enabled, run the following command to allow the web server to connect to the database:
/usr/sbin/setsebool -P httpd_can_network_connect=1
If the iptables firewall is being used, port 80 and 443 should be opened up in the iptables config file:
vi /etc/sysconfig/iptables
Add these rules:
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
Restart iptables
service iptables restart
If the firewalld firewall is being used, port 80 and 443 should be opened up:
Add these rules:
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent
Reload firewalld rules
firewall-cmd --reload
Install the VCL Frontend Web Code
If you have not already done so, follow the instructions on the download page to download and verify apache-VCL-2.5.tar.bz2, and put it in /root
Extract the files:
tar -jxvf apache-VCL-2.5.tar.bz2
Copy the web directory to a location under the web root of your web server and navigate to the destination .ht-inc subdirectory:
cp -ar apache-VCL-2.5/web/ /var/www/html/vcl-2.5 ln -s /var/www/html/vcl-2.5 /var/www/html/vcl cd /var/www/html/vcl/.ht-inc
If SELinux is enabled, run the following command to set the context of the web code to httpd_sys_content_t
chcon -R -t httpd_sys_content_t /var/www/html/vcl-2.5
Copy secrets-default.php to secrets.php:
cp secrets-default.php secrets.php
Edit the secrets.php file:
vi secrets.php
Run the genkeys.sh
./genkeys.sh
Copy conf-default.php to conf.php:
cp conf-default.php conf.php
Modify conf.php to match your site
vi conf.php
Set the owner of the .ht-inc/maintenance and .ht-inc/cryptkey directories to the web server user (normally ‘apache’):
chown apache maintenance
chown apache cryptkey
If SELinux is enabled, run the following command to allow the web server to write to maintenance and cryptkey
chcon -t httpd_sys_rw_content_t maintenance chcon -t httpd_sys_rw_content_t cryptkey
Open the testsetup.php page in a web browser:
Log In to the VCL Website
Open the index.php page in your browser (https://my.server.org/vcl/index.php)
Set the admin user password (DO NOT skip this step):
Add a Management Node to the Database
Install & Configure phpMyAdmin (Optional): phpMyAdmin is a free and optional tool which allows MySQL to be administered using a web browser. It makes administering the VCL database easier. This tool can be installed on the VCL web server. To install phpMyAdmin, follow the instructions on: phpMyAdmin Installation & Configuration
Prerequisites The following management node installation instructions assume the instructions in these previous sections have been completed:
Supported Operating Systems:
The VCL management node daemon (vcld) has been developed to run on an operating system based on Red Hat Enterprise Linux (RHEL). It has been tested on the following:
Required Linux Packages:
The VCL management node daemon (vcld) requires the following Linux packages and Perl modules in order to run (see step 2 below for installation instructions).
Required Perl Modules:
The VCL management node daemon (vcld) is written in Perl and has been tested on Perl 5.10 and 5.16. The following Perl modules available from CPAN are also required (see step 2 below for installation instructions):
Install the VCL Management Node Code - Perl Daemon
If you have not already done so, follow the instructions on the download page to download and verify apache-VCL-2.5.tar.bz2, and put it in /root
Extract the files:
tar -jxvf apache-VCL-2.5.tar.bz2
Copy the managementnode directory to the location where you want it to reside (typically /usr/local):
cp -ar apache-VCL-2.5/managementnode /usr/local/vcl-2.5 ln -s /usr/local/vcl-2.5 /usr/local/vcl
Install the Required Linux Packages & Perl Modules
Run the install_perl_libs.pl script located in the bin directory:
perl /usr/local/vcl/bin/install_perl_libs.pl
The last line of the install_perl_libs.pl script output should be:
COMPLETE: installed all components
Note: The script will hang or terminate if it encounters a problem. If this occurs, you will need to troubleshoot the problem by looking at the output.
The install_perl_libs.pl script included in the VCL distribution will attempt to download and install the required Linux packages and Perl modules. It uses the yum utility to install the required Linux packages. The required Perl modules are available from CPAN - The Comprehensive Perl Archive Network. The install_perl_libs.pl script attempts to download and install the required Perl modules by using the CPAN.pm module which is included with most Perl distributions.
The yum utility should exist on any modern Red Hat-based Linux distribution (Red Hat, CentOS, Fedora, etc). If yum isn't available on your management node OS, you will need to download and install the required Linux packages manually or by using another package management utility. After installing the required Linux packages, attempt to run the install_perl_libs.pl script again.
Configure vcld.conf
Create the /etc/vcl directory:
mkdir /etc/vcl
Copy the stock vcld.conf file to /etc/vcl:
cp /usr/local/vcl/etc/vcl/vcld.conf /etc/vcl
Edit /etc/vcl/vcld.conf:
vi /etc/vcl/vcld.conf
The following lines must be configured in order to start the VCL daemon (vcld) and allow it to check in to the database:
Save the vcld.conf file
Configure the SSH Client
The SSH client on the management node should be configured to prevent SSH processes spawned by the root user to the computers it controls from hanging because of missing or different entries in the known_hosts file.
Edit the ssh_config file:
vi /etc/ssh/ssh_config
Set the following parameters:
Note: If you do not want these settings applied universally on the management node the SSH configuration can also be configured to only apply these settings to certain hosts or only for the root user. Consult the SSH documentation for more information.
Install and Start the VCL Daemon (vcld) Service
Steps for systemd - use these steps if your system is using systemd
Copy the vcld service script to /usr/lib/systemd/system
cp /usr/local/vcl/etc/systemd/system/vcld.service /usr/lib/systemd/system
Create a vcld config file in /etc/sysconfig
echo "OPTIONS='-v -conf=/etc/vcl/vcld.conf'" > /etc/sysconfig/vcld
If using SELinux, set the correct user and context:
chcon -u system_u -t systemd_unit_file_t /usr/lib/systemd/system/vcld.service
Enable vcld.service
systemctl enable vcld.service
Start the vcld service:
systemctl start vcld.service
Check the vcld service by monitoring the vcld.log file:
tail -f /var/log/vcld.log
Steps for SystemV - use these steps if your system is using SystemV (scripts located in /etc/init.d)
Copy the vcld service script to /etc/init.d and name it vcld:
cp /usr/local/vcl/bin/S99vcld.linux /etc/init.d/vcld
Add the vcld service using chkconfig:
/sbin/chkconfig --add vcld
Configure the vcld service to automatically run at runtime levels 3-5:
/sbin/chkconfig --level 345 vcld on
Start the vcld service:
/sbin/service vcld start
Check the vcld service by monitoring the vcld.log file:
tail -f /var/log/vcld.log
You should see the following being added to the log file every few seconds if the management node is checking in with the database:
2017-07-13 13:23:45|25494|vcld:main(167)|lastcheckin time updated for management node 1: 2017-07-13 13:23:45
Set the vclsystem account password for xmlrpc api
Using the vcld -setup tool, set the vclsystem account. This is needed to properly use the block allocation features.
/usr/local/vcl/bin/vcld --setup
Select the options listed below to set the password. When prompted paste or type the password from xmlrpc_pass variable in the vcld.conf file and hit enter.
Select 5. Set Local VCL User Account Password Select 2. vclsystem Enter the password you set for xmlrpc_pass in /etc/vcl/vcld.conf
After setting the password for the vclsystem user, test that RPC-XML Access works correctly by selecting
2: Test RPC-XML Access
SUCCESS: RPC-XML access is configured correctly should be displayed followed by a long list of available XMLRPC functions
Install & Configure the DHCP Service
DHCP service is needed for the private network to provide address to provisioned machines.
Install dhcp if it is not already installed:
yum install dhcp -y
Configure the dhcpd service to automatically start at runlevels 3-5:
/sbin/chkconfig dhcpd on
Configure the dhcpd.conf file.
vi /etc/dhcpd.conf # -or- vi /etc/dhcp/dhcpd.conf
Configure your dhcpd.conf file according to your network configuration. The contents of the dhcpd.conf file will vary based on how your network is configured. Below is an example of a basic dhcpd.conf file:
ddns-update-style none; shared-network eth0 { subnet 10.100.0.0 netmask 255.255.255.0 { ignore unknown-clients; } }
You will add host definitions to the dhcpd.conf file after you add computers to VCL using the website. The website allows you to select a set of computers for which to generate dhcpd.conf information, which can be copied and pasted into the dhcpd.conf file.
Start the dhcpd service:
/sbin/service dhcpd start
After you have installed the VCL components, you need to do some initial administration of your new VCL install.
Add Computers
Configure Authorization (follow links appropriate to your site)