Category Archives: Citrix

Puppet and Windows Package Names RTFM Moment

Puppet and Windows Package Names RTFM Moment

After writing the article on how to install Citrix Provisioning Services Server 1912 CU1 using Puppet last month I promptly powered off the VM as it wasn’t needed for my lab environment at that time. Fast forward a month or so and I needed it to work out some things so I powered it on and configured the Farm etc which was all good. What I soon realised though was that the PVS Services were stopping without warning on the server and I had to hop on and start them again.

Continue reading Puppet and Windows Package Names RTFM Moment

Linux VDA – Creating the MCS master target

Linux VDA – Creating the MCS master target

  • Linux VDA – Introduction and prerequisites
  • Linux VDA – Building the base CentOS virtual machine
  • Linux VDA – Post build tasks and Linux VDA 1912 preparation
  • Linux VDA – Joining the server to Active Directory
  • Linux VDA – VDA software installation and configuration
  • Linux VDA – Creating the MCS master target
  • Sections

    Prepare the master image VM

    The official documentation lists the following steps to perform as part of preparing the VM to be a master image:

    Install the EPEL repository

    From the list of preparation steps the first one not already performed in the previous articles in this series is to enable the EPEL repository. To enable the EPEL repository perform the following steps:

    • Execute the following in a shell session:
    yum install -y epel-release

    Set up the runtime environment

    The next step before running the deploymcs.sh script is to prepare the runtime environment. To prepare the runtime environment perform the following steps:

    • Edit the file /etc/xdl/mcs/mcs.conf
    • Change the line dns1= to your DNS server IP address. In the example below I am setting it to 192.168.1.100 which is my AD DNS server:
    dns1="192.168.1.100"
    • Check the line AD_INTEGRATION= is set to winbind as used in the previous article to set up AD integration:
    AD_INTEGRATION="winbind"
    • Save and exit the file

    Execute deploymsc.sh

    The next step is to run the /opt/Citrix/VDA/sbin/deploymcs.sh script to prepare the master image ready for creating additional VDAs using Machine Creation Services.

    The script installs several packages as part of it’s execution and does not require any user input.

    Shutdown and snapshot the VM

    The last step in the process of creating the MCS master target is to shut down and snap shot the VM.

    I named my snap shot Linux-VDA-MCS-Build-01 so that it can be easily identified in the next article.

    Linux VDA – VDA software installation and configuration

    Linux VDA – VDA software installation and configuration

  • Linux VDA – Introduction and prerequisites
  • Linux VDA – Building the base CentOS virtual machine
  • Linux VDA – Post build tasks and Linux VDA 1912 preparation
  • Linux VDA – Joining the server to Active Directory
  • Linux VDA – VDA software installation and configuration
  • Linux VDA – Creating the MCS master target
  • Sections

    The first step in the installation and config for the Linux VDA software is to ensure that it’s dependencies are installed to the same or higher versions. The list of dependencies can be found in the Citrix documentation here.

    To identify which packages require installing from the dependencies list for RHEL / CentOS 7 perform the following steps:

    • Check each package in turn using rpm -qa as shown below for the postgresql-server package:
    rpm -qa postgresql-server
    • Any packages which do not return anything using rpm -qa are not installed and require installing.
    • The following list are the packages which were not installed as part of the test build
    postgresql-server >= 9.2
    postgresql-jdbc >= 9.2
    ImageMagick >= 6.7.8.9
    motif >= 2.3.4
    foomatic-filters >= 4.0.9
    gperftools-libs >= 2.4
    • To install the packages listed above using yum execute the following command:
    sudo yum install -y postgresql-server postgresql-jdbc ImageMagick motif gperftools-libs

    Configure Postgresql

    The piece is to perform the basic configuration of Postgresql by performing the following:

    • Execute the following command to initialise postgresql:
    service postgresql initdb
    • Configure the service to start automatically and then start it by executing the following:
    chkconfig postgresql on
    service postgresql start

    Install Microsoft Dot Net

    The next part of the process is to install Microsoft Dot Net on to the server by performing the following steps:

    • Add the Microsoft CentOS 7 yum repository by executing the following:
    rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    • Install the Dot Net Core Runtime packaged by executing the following:
    yum install dotnet-runtime-3.1

    Full details of installing Dot Net on to CentOS 7 can be found at https://docs.microsoft.com/en-us/dotnet/core/install/linux-centos

    Download and install the Linux VDA package

    The first step in this article of the series is to download the Linux VDA package from Citrix.  To download the package follow the steps below:

    • Log on using your Citrix Account to https://www.citrix.com/account/
    • Once logged in click on the Downloads tab, enter Linux Virtual Delivery Agent 1912 in the Search Downloads box as shown below, and press enter:

    citrix-downloads

    • From the search results click on the Linux Virtual Delivery Agent 1912 (RHEL 7.7 CentOS 7.7) link

    Centos-VDA-1912-Download

    • On the Linux Virtual Delivery Agent 1912 download page expand the Linux Virtual Delivery Agent 1912 (RHEL 7.7 CentOS 7.7) option and click on Download File.

    Centos-VDA-1912-Download-File

    • Once downloaded copy to the /tmp folder of your CentOS server
    • Logon to the CentOS server and open a terminal session as root
    • Install the VDA package using yum by executing the command below:
    yum install -y /tmp/XenDesktopVDA-19.12.0.50-1.el7_x.x86_64.rpm

    Configure the Linux VDA

    For this article I performed a prompted configuration of the VDA software on the VM.  To perform a prompted configuration of the VDA software perform the following steps:

    • Logon to the CentOS server and open a terminal session as root
    • Run the prompted configuration by executing the command below:
    ./opt/Citrix/VDA/sbin/ctxsetup.sh
    • During the prompted install I answered the following to the prompts:
      • CTX_XDL_DOTNET_RUNTIME_PATH = Accepted the default /opt/dotnet
      • CTX_XDL_SUPPORT_DDC_AS_CNAME = Accepted the default 
      • CTX_XDL_DDC_LIST = Configured as lab-sifliky01.lab.lost-it.org
      • CTX_XDL_VDA_PORT = Accepted the default 80
      • CTX_XDL_REGISTER_SERVICE = Accepted the default Y
      • CTX_XDL_ADD_FIREWALL_RULES = Accepted the default Y
      • CTX_XDL_AD_INTEGRATION = Select 1 for Winbind
      • CTX_XDL_HDX_3D_PRO = Accept the default N
      • CTX_XDL_VDI_MODE = Accept the default N
      • CTX_XDL_SITE_NAME = Accept the default None
      • CTX_XDL_LDAP_LIST = Configured as lab-lokse.lab.lost-it.org:389
      • CTX_XDL_SEARCH_BASE = Accept the default None
      • CTX_XDL_FAS_LIST = Accept the default None
      • CTX_XDL_START_SERVICE = Accept the default Y

    • The final piece I performed was to reboot the VDA

    Check the VDA Services a Running

    The final part once the VDA has rebooted is to check that the VDA services are running.by performing the following:

    • Execute the following commands:
    service ctxhdx status
    service ctxvda status

    Puppet – Deploying PVS 1912 CU1 Server Software Using Puppet

    Puppet – Deploying PVS 1912 CU1 Server Software Using Puppet

    Change Log

    • 16-11-2020 – Updated the package resource section after finding an issue with the naming used.
    • 16-11-2020 – Added the package resource section for installing the Provisioning Services 1912 CU1 Console.

    Introduction

    Citrix Provisioning Services (PVS) is software streaming technology that delivers patches, updates, and other configuration information to multiple virtual desktop endpoints through a shared desktop image. It centralizes virtual machine management while reducing the operational and storage costs of a virtualized desktop environment.

    Puppet is a Configuration Management tool that is used for deploying, configuring and managing servers. Puppet uses a Master Slave architecture in which the Master and Slave communicate through a secure encrypted channel with the help of SSL.

    This article explains how to use Puppet to perform unattended installations of both the Citrix Provisioning Services server and console.

    Test Environment

    For this article I’ll be using an already deployed Puppet Master server on CentOS which has a very basic manifest configured to Domain Join any Windows machines when the puppet agent contacts the server.

    My manifest files is named lab-setup.pp and is stored under /etc/puppetlabs/code/environment/production/manifests.

    Active Directory is also configured in the environment with DNS and a network share created to hold the PVS installation files so that they can be called as part of the Puppet manifest directives.

    The Provisioning Services Server itself is a flat install of Windows Server 2019 Standard Desktop Edition (GUI) which has already has the puppet agent installed, configured, and running on it. The server has also been joined to the Domain via puppet (see my article Creating A Domain Join Declaration For All Windows Machines for details on how to do this) and the DOT Net 4.5 Core feature applied as part of my standard OVF build for deploying servers through Bolt.

    The Issue

    Installing PVS server and the console silently is well documented in the current release product documentation below:

    https://docs.citrix.com/en-us/provisioning/current-release/install/install-wizard-silent.html

    It’s straightforward enough to perform using the basic command line switches as shown below :

    PVS_Server_x64.exe /S /v "/qn" 

    The issue I encountered was when trying to pass the options through as it would always start the gui when I ran a puppet apply. I tried as a normal install_options setting, escaping the double quotes around /qn, and replacing the single quotes with double ones, and setting them as a variable which I then passed to the options but nothing worked. In the end I came across a page on the web about using square brackets to break out the options.

    This finally worked and allowed me to deploy a new VM which joined the Domain and then installed PVS server without any interaction.

    Installing Provisioning Services Server using Puppet

    To install the Provisioning Services Server software using Puppet follow the steps below:

    • Connect to the Puppet server over SSH
    • Open the lab-setup.pp file (I use vi as I’m on CentOS)
    • The First thing to do is declare the nodes this resource will apply to:
    ######################################
    # LAB-PVS Servers Configuration
    ######################################
    
    node /^(lab-halusky01|lab-halusky02).lab.lost-it.org$/ {
    • The next piece is to add the package resource as follows:
    package {"Citrix 1912 LTSR CU1 - Provisioning Server x64":
     ensure => installed,
     subscribe => Class['domain_membership'],
     source => "\\lab-schnitzel\software\PVS-1912-CU1\Server\PVS_Server_x64.exe",
     install_options => [
       '/S /v',
       '/qn',
       ],
    }
    • The final piece is to add in a reboot as follows:
    reboot {'pvsserver_reboot':
     message => 'PVS Install has requested a reboot',
     when => pending,
    }
    • Save and exit the manifest file

    Puppet Code Explanation

    Below is a breakdown of the PVS Server install code piece by piece to show what means what and why it’s being used:

    1. node /^(lab-halusky01|lab-halusky02).lab.lost-it.org$/ { – Node declaration using pattern matching to apply to two different PVS servers
    2. package {“Citrix 1912 LTSR CU1 – Provisioning Server x64: – Updated 16-11-2020 to use the Display Name for the application as shown in Control Panel as this is what is used by the Puppet package resource to check if the software is installed.
    3. ensure => installed, – Used to check that the software is installed and if not execute the install
    4. subscribe => Class[‘domain_membership’], – Subscribes to a previous class resource to ensure that PVS Server is only installed once the server has joined the domain.
    5. source => “\lab-schnitzel\software\PVS-1912-CU1\Server\PVS_Server_x64.exe”,
    6. install_options => [ – Defines the install options to be passed to the installer. The square bracket is used to allow specifying sets of options on different lines. The important part for using this method is that puppet will put double quotes around each of the following lines and separates them with a space.
    7. ‘/S /v’, – Sets the first two options which are passed by puppet as “/S /v”
    8. ‘/qn’, – Sets the quiet no gui options which are passed by puppet as “/qn”
    9. ], – Closes the square bracket used to define the install options.
    10. } – Closes the package function.

    Installing Provisioning Services Console using Puppet

    To install the Provisioning Services Console software using Puppet follow the steps below:

    • Connect to the Puppet server over SSH
    • Open the lab-setup.pp file (I use vi as I’m on CentOS)
    • The next piece is to add the package resource as follows:
    package {"Citrix 1912 LTSR CU1 - Provisioning Console x64":
     ensure => installed,
     subscribe => Package["Citrix 1912 LTSR CU1 - Provisioning Server x64"],
     source => "\\lab-schnitzel\software\PVS-1912-CU1\Console\PVS_Console_x64.exe",
     install_options => [
       '/S /v',
       '/qn',
       ],
    }
    • Save and exit the manifest file

    Puppet Code Explanation

    Below is a breakdown of the PVS Console install code piece by piece to show what means what and why it’s being used:

    1. package {“Citrix 1912 LTSR CU1 – Provisioning Console x64: – Set to the same as the Display Name for the application as shown in Control Panel.
    2. ensure => installed, – Used to check that the software is installed and if not execute the install
    3. subscribe => Package[“Citrix 1912 LTSR CU1 – Provisioning Server x64”], – Subscribes to a previous class resource to ensure that PVS Console is only installed once the PVS Server software has been installed.
    4. source => “\lab-schnitzel\software\PVS-1912-CU1\Server\PVS_Console_x64.exe”,
    5. install_options => [ – Defines the install options to be passed to the installer. The square bracket is used to allow specifying sets of options on different lines. The important part for using this method is that puppet will put double quotes around each of the following lines and separates them with a space.
    6. ‘/S /v’, – Sets the first two options which are passed by puppet as “/S /v”
    7. ‘/qn’, – Sets the quiet no gui options which are passed by puppet as “/qn”
    8. ], – Closes the square bracket used to define the install options.
    9. } – Closes the package function.

    Final Thoughts

    I’m still learning Puppet and finding my way around the different methods and code options so this is very much a first working attempt. There are community modules out there to do it but for me, I prefer to learn by doing !

    Tested On

    This piece of puppet code has been tested installing PVS Server 1912 CU1 LTSR on the following:

    • Windows Server 2019

    Local Policy Session Printing With CVADS

    Local Policy Session Printing With CVADS

    Recently on site I came across my first requirement for a Citrix Session Printer Policy when migrating from an on-premises 7.15 Site to CVADS.

    At first I simply tried copying the policy in to the Cloud Studio but when I came to select the printer it was unable to connect. The first step was to eliminate firewall rules as usual so I got the SMB ports opened between the Cloud Connectors and the Print Servers but this didn’t resolve the issue.

    Luckily I was working with Citrix at the time and so a quick check through Slack turned up Citrix Article https://support.citrix.com/article/CTX220345 which says “Because limitation of Citrix Cloud and Connector, in certain scenarios, communication with some of the on premises components, there is a need for some customers to manage the Citrix polices locally”.

    The article itself was straightforward enough and geared towards using an Active Directory Group Policy which was duly created but still failed to apply. Closer inspection showed that because the customer uses AppSense for user personalisation they didn’t have the “user group policy loopback processing mode” enabled.

    Continue reading Local Policy Session Printing With CVADS

    Citrix Depreciate On-Premises Cloud Support

    Citrix Depreciate On-Premises Cloud Support

    With the release of the latest Current Release (CR) of Virtual Apps and Desktops (CVAD) version 2003 Citrix has announced that they have deprecated on-premises support for VDA workloads hosted on the following Clouds:

    • Amazon Web Services (AWS)
    • Microsoft Azure
    • Cloud Platform
    Continue reading Citrix Depreciate On-Premises Cloud Support

    Citrix – Making CentOS Look Like Windows 10

    Citrix – Making CentOS Look Like Windows 10

    As part of my testing with the CVAD 1912 Linux VDA I came across the B00merang desktop themes which makes a Linux desktop look like Windows 10. I decided to explore whether the theme could be applied to Citrix sessions and after to some googling, got it up and running .

    Continue reading Citrix – Making CentOS Look Like Windows 10

    Linux VDA – Joining the server to Active Directory

    Linux VDA – Joining the server to Active Directory

  • Linux VDA – Introduction and prerequisites
  • Linux VDA – Building the base CentOS virtual machine
  • Linux VDA – Post build tasks and Linux VDA 1912 preparation
  • Linux VDA – Joining the server to Active Directory
  • Linux VDA – VDA software installation and configuration
  • Linux VDA – Creating the MCS master target
  • Sections

    This article in the series will explain how to join the CentOS server to an Active Directory Domain using Samba and Winbind.  There are several other supported methods for joining the machine to an Active Directory Domain which are listed on the Citrix documentation page Install Linux Virtual Delivery Agent for RHEL/CentOS with instructions for each.

    Install the required packages and configure Winbind daemon startup

    The first step is to install the required packages for Samba and Winbind on to the server and then ensure that the winbind daemon is enabled to start at boot.

    To install the required packages and enable the winbind daemon to start at boot perform the following steps in a terminal session as root:

    • Install the packages by executing the following command:
    yum -y install samba-winbind samba-winbind-clients krb5-workstation authconfig oddjob-mkhomedir
    • Once installed configure the winbind daemon to start at boot by executing the following command:
    chkconfig winbind on

    Configure Winbind authentication

    The next step is to configure authentication using kerberos with Winbind.

    To configure authentication using kerberos with Winbind perform the following steps in a terminal session as root:

    • Execute the authconfig command below substituting domain with your NetBIOS Domain Name, REALM with your Kerberos realm name in UPPER CASE, and fqdn-of-domain-controller with the FQDN of your Domain Controller:
    authconfig --disablecache --disablesssd --disablesssdauth --enablewinbind --enablewinbindauth --disablewinbindoffline --smbsecurity=ads --smbworkgroup=domain --smbrealm=REALM --krb5realm=REALM --krb5kdc=fqdn-of-domain-controller --winbindtemplateshell=/bin/bash --enablemkhomedir --updateall

    Example: As an example my test Domain name is NWO.Local, it’s NetBIOS name is NWO, the Kerberos Realm is NWO.LOCAL, and  my Domain Controller is 2K12-Lokse.NWO.Local. Therefore I ran the command below to configure the authentication to my Domain:

    authconfig --disablecache --disablesssd --disablesssdauth --enablewinbind --enablewinbindauth --disablewinbindoffline --smbsecurity=ads --smbworkgroup=NWO --smbrealm=NWO.LOCAL --krb5realm=NWO.LOCAL --krb5kdc=2K12-Lokse.NWO.Local --winbindtemplateshell=/bin/bash --enablemkhomedir --updateall

    Note: Ignore any errors returned from the authconfig command about the winbind service failing to start. The errors can occur when authconfig tries to start the winbind service without the machine yet being joined to the domain.

    • Edit the /etc/samba/smb.conf file and add the two lines below the line #–authconfig–end-line– as shown below:
    #--authconfig--end-line--
    kerberos method = secrets and keytab
    winbind refresh tickets = true
    • Save and exit the file.

    Join the Domain

    The next step is to join the computer to Active Directory and to perform this execute the steps below in a terminal session as root:

    • Execute the net ads join command below substituting REALM for your Kerberos Realm in UPPER CASE and user with an account with privileges to add the machine to Active Directory:
    net ads join REALM -U user

    Example: As an example my test Domain name Kerberos Realm is NWO.LOCAL and  I use the administrator account to add machines to the Domain. Therefore I ran the command below to join my Domain:

    net ads join NWO.LOCAL -u administrator

    Note: If successful the machine will be listed in the Computers OU of your Domain.

    Configure PAM for Winbind

    Once the machine has been successfully joined to the Domain the next step is to configure Kerberos for PAM to allow ticket caching and home directory creation.

    To configure Kerberos for PAM perform the following steps in a terminal as the root user:

    • Edit the /etc/security/pam_winbind.conf file and add or change the following entries under the [Global] section:
    krb5_auth = yes
    krb5_ccache_type = FILE
    mkhomedir = yes
    • Save and exit the file
    • Restart the Winbind daemon by executing the following:
    service winbind restart
    • Edit the /etc/krb5.conf file change the following setting under the [libdefaults] section from KEYRING to FILE type:
    default_ccache_name = FILE:/tmp/krb5cc_%{uid}
    • Save and exit the file

    Linux VDA – Post build tasks and Linux VDA 1912 preparation

    Linux VDA – Post build tasks and Linux VDA 1912 preparation

  • Linux VDA – Introduction and prerequisites
  • Linux VDA – Building the base CentOS virtual machine
  • Linux VDA – Post build tasks and Linux VDA 1912 preparation
  • Linux VDA – Joining the server to Active Directory
  • Linux VDA – VDA software installation and configuration
  • Linux VDA – Creating the MCS master target
  • Sections

    Post install initial setup

    Once the machine has finished installing and been rebooted it will load up the GNOME GUI and guide you through the initial setup where you have to accept the license agreement, select your language,

    To perform this initial setup following installation perform the following steps:

    • In the INITIAL SETUP screen click on the LICENSE INFORMATION option
    • Click on the I accept the license agreement tickbox at the bottom of the screen
    • Click on Done to return to the INITIAL SETUP screen
    • Click on the FINISH CONFIGURATION button at the bottom right of the screen
    • GNOME will now load and present you with a Welcome screen where you can choose your language.  If not already selected, choose the language you require and then click on the blue Next button at the top right of the screen
    • Next if not already selected choose the keyboard layout you require and then click on the blue Next button at the top right of the screen
    • When prompted select the Time Zone you require and then click on the blue Next button at the top right of the screen
    • When prompted for Online Accounts click on Skip at the top right of the screen (For the purposes of this article, users will be from a company Active Directory)
    • At the About You screen configure a Full Name and a Username for a local account on the server  and then click on the blue Next button at the top right of the screen. (For the purposes of this article, this was set to localuser so that there is no confusion with Active Directory credentials later on)
    • When prompted set a password for the local account and then click on the blue Next button at the top right of the screen
    • Finally at the Ready to Go screen click on the blue Start using CentOS Linux button to complete the initial setup

    Install Citrix XenTools

    The next step in this set of instructions is to install the Citrix XenTools on to the machine as they are a prerequisite for deploying machines using Machine Creation Services (MCS) later on.

    To install Citrix XenTools perform the following steps:

    • Attached the guest-tools.iso to the virtual machine
    • Mount the CD to the /mnt directory on the machine by executing the following:
    mount /dev/cdrom /mnt
    • Change to the Linux tools directory by executing the following:
    cd /mnt/Linux
    • Run the install.sh script by executing the following:
    ./install.sh
    • The script should detect that the machine is running CentOS as shown below and when prompted enter y to proceed:
    Detected `CentOS Linux release 7.3.1611 (Core) ' (centos version 7).
    
    The following changes will be made to this Virtual Machine:
     * update arp_notify sysctl.
     * packages to be installed/upgraded:
     - xe-guest-utilities-7.11.0-1.x86_64.rpm
     - xe-guest-utilities-xenstore-7.11.0-1.x86_64.rpm
    
    Continue? [y/n]
    • The tools will now be installed and then return to the command prompt.
    • Unmount the CD by executing the following:
    umount /mnt
    • Eject the CD from the virtual machine and then reboot the machine by executing reboot at the command prompt
    • Once the machine is rebooted confirm in XenCentre that the tools are installed by selecting the VM and clicking the General tab.  As can be seen in the screenshot below, the Virtualization state is shown as Optimized (version 8.0 installed) meaning that XenTools is installed correctly.

    xentools-installed

    You can also confirm that XenTools is installed correctly by going to the Performance tab of the VM.  If the Memory Performance graph is visible then the tools are installed correctly.

    Update the installation

    The next step is to update the machine using YUM (Yellowdog Updater, Modified) so that it is running the latest package versions.  For the purposes of this article the virtual machine has been granted access to the Internet to perform the updates but this may differ in your environment.  Configuring local repositories or setting proxy settings to allow updates is beyond the scope of this article.

    To update the machine using YUM perform the following steps in a terminal session as the root account:

    • Initialize the update by executing the following:
    yum update
    • When prompted enter to y to proceed with the download of the packages and their installation.

    Note: This can take a long time to perform depending on the resources assigned to the virtual machine, network connectivity, as well as how far behind the ISO used to build the machine is

    • Once the process is completed you should see a list of installed, updated, and replaced packages followed by Complete!
    • Reboot the machine by executing reboot at the command prompt

    Configure chrony

    The next step is to ensure that the machine’s time is synchronised to avoid VDA registration errors later on.  For the purposes of this article the chrony will be configured to point at an Active Directory Domain Controller.

    To configure chrony perform the following steps in a terminal session as the root account:

    • Edit the /etc/chrony.conf file and comment out the centos servers listed using a # (hash symbol) as shown below:
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    • Add a line below these point to your Domain Controller in the format of server {your Domain Controller FQDN or IP} iburst
    • The example below is pointing chrony to the IP Address 10.100.100.100 for my Domain Controller
    server 10.100.100.100 iburst
    • Save and exit the file
    • Restart the chronyd service by executing the following:
    service chronyd restart

    Disable libvirtd virtualization toolkit

    During my initial testing I was unaware that the libvirtd toolkit is installed as default with CentOS 7 and only realised when my VDA registered in DNS with an IP Address of 192.168.122.1.

    This caused the VDA to fail registration with the DDC so for this article I disabled the libvirtd toolkit completely on the VDA as well as because you would not want a VDA to be capable of hosting virtual machines. For a full explanation see the article from The Geek Diary CentOS / RHEL 6,7 : How to disable or delete virbr0 interface

    To disable the libvirtd toolkit perform the following steps in a terminal session as the root account:

    • Disable and remove the libvirtd default network by executing the following commands:
    # virsh net-destroy default
    Network default destroyed
    
    # virsh net-autostart default --disable
    Network default unmarked as autostarted
    
    # virsh net-undefine default
    Network default has been undefined
    
    chkconfig libvirtd off
    Note: Forwarding request to 'systemctl disable libvirtd.service'.
    Removed symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service.
    Removed symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket.
    Removed symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket.

    Disable graphical interface

    The last step is to disable the graphical interface on the server so that when the server is booted it will come up to the normal non-gui logon page.

    To disable the graphical interface perform the following steps in a terminal session as the root account:

    • Execute the following command to disable the graphical interface
    systemctl set-default multi-user.target
    • Reboot the server

    Linux VDA – Building the base CentOS virtual machine

    Linux VDA – Building the base CentOS virtual machine

  • Linux VDA – Introduction and prerequisites
  • Linux VDA – Building the base CentOS virtual machine
  • Linux VDA – Post build tasks and Linux VDA 1912 preparation
  • Linux VDA – Joining the server to Active Directory
  • Linux VDA – VDA software installation and configuration
  • Linux VDA – Creating the MCS master target
  • Sections

    Virtual Machine hardware

    A new virtual machine named cntos-mcs-mstr was deployed on to the Citrix Hypervisor  using the CentOS 7 VM Template as shown below:

    1-Linux-VDA-Build-VM-Template

    The virtual machine created with 2 vCPUs, 4GB of RAM, 1 x 10GB Disk, and 1 x Network connection and booted from a CentOS 7 ISO (CentOS-7-x86_64-DVD-1611.iso).

    The initial configuration steps were performed to configure the language, date and time settings, and keyboard layout as English (UK).

    Software selection

    Once the initial creation and configuration of the virtual machine has been performed the software selections were made by performing the following steps:

    • At the INSTALLATION SUMMARY click on the SOFTWARE SELECTION option
    • Select GNOME Desktop and then from the Add-Ons for Selected Environment section on the right select the following:
      • GNOME Applications
      • Internet Applications
      • Office Suite and Productivity

    Software-Selection-Screen

    • Click on Done to return the INSTALLATION SUMMARY

    Disk partitioning

    The next step is to select how to partition the disk and for the purposes of this article Automatic partitioning was selected.

    To partition the disk perform the following steps:

    • At the INSTALLATION SUMMARY click on the INSTALLATION DESTINATION option
    • You should see the Local Disk provisioned for the machine listed and under Other Storage Options the Automatically configure partitioning option should already by selected as shown below:

    disk-partitioning-screen

    • Click on Done to return the INSTALLATION SUMMARY

    Network configuration

    The next step is to enable the Network and configure the host name for the machine and for the purposes of this article the Network card will be configured to use DHCP as MCS Clones rely on DHCP addressing being used.

    To enable the Network and configure the host name perform the following steps:

    • At the INSTALLATION SUMMARY click on the NETWORK & HOST NAME option
    • Change the Host name at the bottom of the screen to the FQDN you will be using for the virtual machine and press Apply.
    • The Current host name shown in the bottom right should now change to the FQDN you have set.  In the example below the Host name for the machine has been changed to cntos-mcs-mstr.nwo.local:

    hostname-settings

    • The Network Card Ethernet (eth0) will be listed in the screen and show as Disconnected on the right hand side.  To enable the network card Ethernet (eth0) click on the toggle selector in the top right of the screen so that it changes to ON.
    • Once connected the right hand side will show the IP Address, Subnet Mask, Default Route, and DNS settings set by DHCP as shown below:

    network-and-hostname-screen

    • Click on Done to return the INSTALLATION SUMMARY

    Performing the installation and setting the Root Password

    The last step is to Begin the Installation and as part of the process set the password for the root account.

    To begin the installation and set the root password perform the following steps:

    • At the INSTALLATION SUMMARY click on the BEGIN INSTALLATION button in the bottom right corner of the screen
    • When prompted for USER SETTINGS click on the ROOT PASSWORD option
    • Set your root password and confirm it and then click on Done to return to the installation screen.

    At the bottom of the screen it will show the packages being installed and a progress bar for the installation.

    Once the installation has completed click on the blue Reboot button at the bottom right of the screen.