| Installing VCL 2.5.1 |
| |
| VCL 2.5.1 can be installed using 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) on a single system or to |
| install each part individually on separate systems. |
| |
| Running the installation script with no arguments will step you through |
| installing all three parts of VCL. |
| |
| |
| ./vcl-install.sh |
| |
| |
| Alternatively, any combination of the three parts of VCL can be installed by |
| passing arguments to the script. 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. The following are the arguments |
| available: |
| |
| 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| MANUAL INSTALLATION INSTRUCTIONS |
| |
| The recommended method of installing VCL is to use the installation script. See |
| above for additional information. If manual installation is required, |
| instructions are listed below. |
| |
| 1. Install and Configure Database |
| |
| VCL currently supports the use of MySQL or MariaDB as the database. |
| |
| A. 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 |
| |
| B. 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'; |
| |
| 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.1/mysql/vcl.sql |
| |
| 2. Install and Configure the Web Components |
| |
| Prerequisites |
| |
| VCL database has been installed and configured |
| |
| Web Server: |
| |
| Apache HTTP Server v2.x with SSL enabled |
| PHP 5.x or 7.x |
| |
| Required Linux Packages: |
| |
| httpd - Apache HTTP Server |
| mod_ssl - SSL/TLS module for the Apache HTTP server |
| php - The PHP HTML-embedded scripting language |
| |
| Required PHP Modules: |
| |
| php |
| php-gettext |
| php-json (required if your PHP version is 5.2 or later) |
| php-ldap (if you will be using LDAP authentication) |
| php-mysql |
| php-openssl |
| php-xml |
| php-xmlrpc |
| |
| A. 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: |
| |
| 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 |
| |
| B. Install the VCL Frontend Web Code |
| |
| 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.1/web/ /var/www/html/vcl-2.5.1 |
| ln -s /var/www/html/vcl-2.5.1 /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.1 |
| |
| Copy secrets-default.php to secrets.php: |
| |
| cp secrets-default.php secrets.php |
| |
| Edit the secrets.php file: |
| |
| vi secrets.php |
| |
| Set the following variables to match your database configuration: |
| $vclhost |
| $vcldb |
| $vclusername |
| $vclpassword |
| Create random passwords for the following variables: |
| $cryptkey (generate with "openssl rand 32 | base64") |
| $pemkey |
| Save the secrets.php file |
| |
| 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 |
| |
| Review every entry under "Things in this section must be |
| modified/reviewed". Descriptions and pointers for each value are |
| included within 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: |
| |
| If you set up your site to be https://my.server.org/vcl/ open |
| https://my.server.org/vcl/testsetup.php |
| Debug any issues reported by testsetup.php |
| |
| C. Log In to the VCL Website |
| |
| Open the index.php page in your browser |
| (https://my.server.org/vcl/index.php) |
| |
| Select Local Account |
| Username: admin |
| Password: adminVc1passw0rd |
| |
| Set the admin user password (DO NOT skip this step): |
| |
| Click User Preferences |
| Enter the current password: adminVc1passw0rd |
| Enter a new password |
| Click Submit Changes |
| |
| D. Add a Management Node to the Database |
| |
| Click the Management Nodes link |
| |
| Select Edit Management Node Profiles |
| Click Submit |
| Click Add New Management Node |
| Fill in these required fields: |
| |
| Hostname - The name of the management node server. This value |
| doesn't necessarily need to be a name registered in DNS nor |
| does it need to be the value displayed by the Linux hostname |
| command. For example, if you are installing all of the VCL |
| components on the same machine you can set this value to |
| localhost. |
| IP address - the public IP address of the management node |
| SysAdmin Email Address - error emails will be sent to this address |
| Install Path - this is the parent directory under which image files |
| will be stored - only required if doing bare metal installs |
| or using VMWare with local disks |
| End Node SSH Identity Key Files - enter /etc/vcl/vcl.key unless |
| you know you are using a different SSH identity key file |
| |
| Optionally, fill in these fields: |
| |
| Address for Shadow Emails - End users are sent various emails about |
| the status of their reservations. If this field is |
| configured, copies of all of those emails will be sent to |
| this address. |
| Public NIC configuration method - this defaults to Dynamic DHCP - |
| if DHCP is not available for the public interface of your |
| nodes, you can set this to Static. Then, the IP |
| configuration on the nodes will be manually set using Public |
| Netmask, Public Gateway, Public DNS Server, and the IP |
| address set for the computer under Manage Computers |
| |
| Click Add Management Node |
| |
| A dialog will pop up informing you to add the management node to a |
| group, read it and click Close |
| |
| select the allManagementNodes group on the right |
| |
| click <-Add |
| click Close |
| |
| 3. Install & Configure the Management Node Components |
| |
| Prerequisites The following management node installation instructions assume |
| the instructions in these previous sections have been completed: |
| |
| VCL 2.5.1 Database Installation |
| VCL 2.5.1 Web Code Installation |
| |
| 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: |
| |
| Red Hat Enterprise Linux 6.x |
| Red Hat Enterprise Linux 7.x |
| CentOS 6.x |
| CentOS 7.x |
| |
| 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). |
| |
| expat-devel - Libraries and include files to develop XML applications with |
| expat |
| gcc - Various compilers (C, C++, Objective-C, Java, ...) |
| krb5-devel - Development files needed to compile Kerberos 5 programs |
| krb5-libs - The shared libraries used by Kerberos 5 |
| libxml2-devel - Libraries, includes, etc. to develop XML and HTML |
| applications |
| make - GNU make utility to maintain groups of programs |
| mysql/mariadb - Includes libraries for connecting to mysql/mariadb |
| nmap - Network exploration tool and security scanner |
| openssh - The OpenSSH implementation of SSH protocol versions 1 and 2 |
| openssl-devel - Files for development of applications which will use OpenSSL |
| perl - The Perl programming language |
| xmlsec1-openssl - OpenSSL crypto plugin for XML Security Library |
| |
| 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 B below for installation instructions): |
| |
| Crypt::CBC - implementation of the cryptographic cipher block chaining mode |
| Crypt::OpenSSL::RSA - RSA encoding and decoding, using the openSSL libraries |
| Crypt::Rijndael - Crypt::CBC compliant Rijndael encryption module |
| DBD::MySQL - MySQL driver for the Perl5 Database Interface (DBI) |
| DBI - Generic Database Interface |
| Digest::SHA1 - NIST SHA message digest algorithm |
| Exception::Class::Base - base class for exception objects |
| Frontier::Client - issue Frontier XML RPC requests to a server |
| HTTP::Headers - class encapsulating HTTP Message headers |
| IO::String - emulate file interface for in-core strings |
| JSON - JavaScript Object Notation |
| LWP::UserAgent - class implementing a web user agent |
| Mail::Mailer - Simple mail agent interface |
| Net::Jabber - Jabber perl library |
| Net::Netmask - parse, manipulate and lookup IP network blocks |
| Net::Ping::External - Cross-platform Perl interface to "ping" utilities |
| Net::SSH::Expect - a wrapper to the ssh executable that is available in |
| system's PATH |
| Object::InsideOut - Comprehensive inside-out object support |
| RPC::XML::Client - XML-RPC client class |
| Text::CSV_XS - comma-separated values manipulation routines |
| XML::Simple - API for simple XML files |
| YAML - YAML Ain't Markup Language |
| |
| A. Install the VCL Management Node Code - Perl Daemon |
| |
| Copy the managementnode directory to the location where you want it to |
| reside (typically /usr/local): |
| |
| cp -ar apache-VCL-2.5.1/managementnode /usr/local/vcl-2.5.1 |
| ln -s /usr/local/vcl-2.5.1 /usr/local/vcl |
| |
| B. 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. |
| |
| C. 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: |
| |
| FQDN - the fully qualified name of the management node, this should |
| match the name that was configured for the management node |
| in the database |
| server - the IP address or FQDN of the database server |
| LockerWrtUser - database user account with write privileges |
| wrtPass - database user password |
| xmlrpc_pass - password for xmlrpc api from vcld to the web interface |
| (can be long). This will be used later to sync the database |
| vclsystem user account |
| xmlrpc_url - URL for xmlrpc api |
| https://my.server.org/vcl/index.php?mode=xmlrpccall |
| |
| Save the vcld.conf file |
| |
| D. 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: |
| |
| UserKnownHostsFile /dev/null |
| StrictHostKeyChecking no |
| |
| 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. |
| |
| E. 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 |
| |
| F. 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 |
| |
| G. 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 |