vCloud Director Installation Part 1 – Database

This is part 1 of the vCD 9.0 Installation guide.

In this section we will install the database required for vCD

There are now 3 databases supported for vCD

  • Oracle
  • Microsoft SQL Server
  • PostgreSQL

This guide will focus on setting up a vCD database with PostgreSQL on CentOS 7, but if you need to use another option, refer to the official documentation:

NOTE: Only version 9.5 of PostgreSQL is supported at the time of vCD 9.0 release:

PostgreSQL vCD Database Hardware Requirements

Configure the PostgreSQL Virtual Machine with at least the following specification

This lab will only have one vCD cell:

  • OS: CentOS 7
  • 100GB Disk
  • 16GB Memory
  • 4 vCPUs

Install a supported OS.

In this example I’m using CentOS 7 but any OS that supports PostgreSQL (and vice-versa) will work.

I like to use a minimal CentOS installation to keep things clean and free from unnecessary bugs and performance issue, you don’t need a UI so CentOS minimal works well

  • Download and boot into the latest CentOS 7 installation media located here

Install the operating system with defaults except:

  • On the Installation Summary page, select Installation Destination and then Done on the top right
  • Also on the Installation Summary page, scroll down to Network and Hostname. Enable each NIC & hit Configure to set the IP address. Also set the hostname at the bottom of the screen.

  • Ensure that both the Timezone & Keyboard language is correct
  • Hit “Begin Installation” once ready
  • Set the root password
  • Reboot when prompted


Update the OS and install required components

Connect to the VM with SSH and first update yum:

  • yum update yum

Next, update the remainder of the system:

  • yum update

  • Reboot the guest OS

Install the PostgreSQL 9.5 RPM

  • rpm -ivh

Install core packages and PostgreSQL 9.5

  • yum install net-tools postgresql95 postgresql95-server postgresql95-libs postgresql95-contrib

Change default postgreSQL password

  • passwd postgres

Make PostgreSQL start on boot

  • /usr/pgsql-9.5/bin/postgresql95-setup initdb
  • systemctl start postgresql-9.5.service
  • systemctl enable postgresql-9.5.service

Change to the postgres user

  • sudo -u postgres -i

Create the vCD user and database (Change the password as required)

  • psql
  • create user vcloud;
  • alter user vcloud password ‘VMware1!’;
  • alter role vcloud with login;
  • create database vcloud;
  • grant all privileges on database vcloud to vcloud;


Allow PostgreSQL connections through the default firewall configuration

  • Log in as root
  • firewall-cmd –zone=public –add-service=postgresql

Allow the vcloud user to login externally

  • Add the line below to pg_hba.conf (It means, allow the cloud user to login to the vcloud database from the network with encrypted password) You might need to change the username/database name/network accordingly:
  • vi /var/lib/pgsql/9.5/data/pg_hba.conf
    • host    all             all               md5

Set the postgreSQL listening port and ip

  • vi /var/lib/pgsql/9.5/data/postgres.conf
  • Add these details:
    • listen_address = ‘*’
    • port= 5432

Install NTP to keep the clock in sync:

  • yum install ntp

Configure ntp servers

“You must use a network time service such as NTP to synchronize the clocks of all vCloud Director servers, including the database server. The maximum allowable drift between the clocks of synchronized servers is 2 seconds.”

VMware generally recommends to use at least 4 NTP servers. Using VI, change the lines beginning with server to NTP servers. All components connecting to vCD should share the same NTP servers for accurate timekeeping:

  • vi /etc/ntp.conf

Start the ntpd service

  • systemctl start ntpd
  • systemctl enable ntpd

Ensure ntpd is running:

  • systemctl status ntpd

Check ntpd is syncing to correct ntp servers (If you are using a pool, they might not have the same IP/hostname as the pool)

  • ntpq -p

Ensure that the date is set correctly

  • date -R

Ensure that the DB VM hostname is in DNS as an A record and that you have a PTR set too

“All host names that you specify during installation and configuration must be resolvable by DNS using forward and reverse lookup of the fully qualified domain name or the unqualified hostname”

Verify the above with for example:

  • yum install bind-utils (to install nslookup)
  • nslookup vcloud
  • nslookup
  • nslookup

For this lab environment, I turn off selinux but leave the firewall enabled:

  • vi /etc/sysconfig/selinux

Change SELINUX=enforcing



NOTE: This is line 6 of the config file, not the last line

Now would be a good time to reboot the server

Next section: vCloud Director Installation Part 2 – vCD Base Operating System

Leave a Response

This site uses Akismet to reduce spam. Learn how your comment data is processed.