Installing CloudForms on Microsoft Azure

How to Install and Configure the CloudForms Management Engine Appliance on a Microsoft Azure Cloud environment

CloudForms Documentation Team

Abstract

This guide provides installation and configuration instructions for the CloudForms Management Engine appliance. Information and procedures in this book are relevant to CloudForms Management Engine administrators.

1. Installing CloudForms

Red Hat CloudForms can be installed and ready to configure in a few quick steps. After downloading CloudForms as a virtual machine image template from the Red Hat Customer Portal, the following installation process takes you through the steps of uploading the CFME appliance to Microsoft Azure.
Important
After installing the CloudForms Management Engine (CFME) appliance, you must configure the database for CloudForms. See Section 2.3, “Configuring a Database for CloudForms Management Engine”.

1.1. Obtaining the CloudForms Management Engine Appliance

  1. Go to access.redhat.com and log in to the Red Hat Customer Portal using your customer account details.
  2. Click Downloads in the menu bar.
  3. Click A-Z to sort the product downloads alphabetically.
  4. Click Red Hat CloudFormsDownload Latest to access the product download page.
  5. From the list of installers and images, select the CFME appliance specified for Microsoft Azure download link.

1.2. Uploading the CloudForms Management Engine Appliance to Microsoft Azure

In order to upload the CloudForms Management Engine appliance file to Microsoft Azure, ensure the following requirements are met:
  • Approximately 2 GB of space for each VHD image; 40+ GB for the CFME appliance.
  • Administrator access to the Azure portal.
  • Depending on your infrastructure, allow time for the upload.
Note
These are the procedural steps as of the time of writing. For more information, consult the following Azure documentation. The steps covered in the following article are for a Windows machine, however, most of the items are common between Windows and Linux.
You can upload the appliance to an Azure environment using the following two methods. Red Hat recommends using the PowerShell (AzureRm module) method.
  • Using Azure PowerShell script
  • Using Azure Command-Line Interface (Azure CLI)

1.2.1. Uploading the CFME Appliance Using Azure Powershell Script

Note
Make sure Azure Resource Manager cmdlets are available. See To install the cmdlets section in Azure Resource Manager Cmdlets.
  1. Log in to Azure Resource Manager using the cmdlet:

    ## Customize for Your Environment
    $SubscriptionName = "my subscription"
    
    Login-AzureRmAccount
    Select-AzureRmSubscription -SubscriptionName $SubscriptionName

    When prompted, enter your user name and password for the Azure Portal.

  2. Upload the VHD file to a storage account. As shown in the example script below, you will first create a Resource Group through the Portal UI or Powershell. Additionally, create the storage container defined in "BlobDestinationContainer" in advance.

    Example Script:
    
    ## Customize for Your Environment
    $SubscriptionName = "my subscription"
    
    $ResourceGroupName = "test"
    $StorageAccountName = "test"
    
    $BlobNameSource = "cfme-test.vhd"
    $BlobSourceContainer = "templates"
    $LocalImagePath = "C:\tmp\$BlobNameSource"
    
    ##
    
    # Upload VHD to a "templates" directory. You can pass a few arguments, such as `NumberOfUploaderThreads 8`. The default number of uploader threads is `8`. See https://msdn.microsoft.com/en-us/library/mt603554.aspx
    
    Add-AzureRmVhd -ResourceGroupName $ResourceGroupName -Destination https://$StorageAccountName.blob.core.windows.net/$BlobSourceContainer/$BlobNameSource -LocalFilePath $LocalImagePath -NumberOfUploaderThreads 8
  3. Create a virtual machine. Then, define your VM and VHD name, your system/deployment name and size. Next, you will set the appropriate Storage, Network and Configuration options for your environment.

    Example Script:
    
    ## Customize for Your Environment
    
    $BlobNameDest = "cfme-test.vhd"
    $BlobDestinationContainer = "vhds"
    $VMName = "cfme-test"
    $DeploySize= "Standard_A3"
    $vmUserName = "user1"
    
    $InterfaceName = "test-nic"
    $VNetName = "test-vnet"
    $PublicIPName = "test-public-ip"
    
    $SSHKey = <your ssh public key>
    
    ##
    
    $StorageAccount = Get-AzureRmStorageAccount -ResourceGroup $ResourceGroupName -Name $StorageAccountName
    
    $SourceImageUri = "https://$StorageAccountName.blob.core.windows.net/templates/$BlobNameSource"
    $Location = $StorageAccount.Location
    $OSDiskName = $VMName
    
    # Network
    $Subnet1Name = "default"
    $VNetAddressPrefix = "10.1.0.0/16"
    $VNetSubnetAddressPrefix = "10.1.0.0/24"
    $PIp = New-AzureRmPublicIpAddress -Name $PublicIPName -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod Dynamic -Force
    $SubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $Subnet1Name -AddressPrefix $VNetSubnetAddressPrefix
    $VNet = New-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig -Force
    $Interface = New-AzureRmNetworkInterface -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PIp.Id -Force
    
    # Specify the VM Name and Size
    $VirtualMachine = New-AzureRmVMConfig -VMName $VMName -VMSize $DeploySize
    
    # Add User
    $cred = Get-Credential -UserName $VMUserName -Message "Setting user credential - use blank password"
    $VirtualMachine = Set-AzureRmVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $VMName -Credential $cred
    
    # Add NIC
    $VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
    
    # Add Disk
    $OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + $BlobDestinationContainer + "/" + $BlobNameDest
    
    $VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -Name $OSDiskName -VhdUri $OSDiskUri -CreateOption fromImage -SourceImageUri $SourceImageUri -Linux
    
    # Set SSH key
    Add-AzureRmVMSshPublicKey -VM $VirtualMachine -Path “/home/$VMUserName/.ssh/authorized_keys” -KeyData $SSHKey
    
    # Create the VM
    New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

1.2.2. Uploading the CFME Appliance Using Azure Command-Line Interface

Although it is recommended to use the PowerShell method, you can upload the appliance to an Azure environment using the CLI method. See https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-azure-resource-manager/ for steps on how to create and manage Azure resources using the Azure Command-Line Interface (Azure CLI).

2. Configuring CloudForms

Although the CloudForms Management Engine appliance comes preconfigured to be integrated immediately into your environment, you can make some changes to its configuration as needed.

2.1. Changing Configuration Settings

  1. Log in to the appliance using the SSH key.
  2. Enter the sudo appliance_console command. The CloudForms Management Engine appliance summary screen displays.
  3. Press Enter to manually configure settings.
  4. Press the number for the item you want to change, and press Enter. The options for your selection are displayed.
  5. Follow the prompts to make the changes.
  6. Press Enter to accept a setting where applicable.
Note
The CloudForms Management Engine appliance console automatically logs out after five minutes of inactivity.

2.2. Advanced Configuration Settings

You can use the following options for advanced configuration of the appliance:
  • Use Set DHCP Network Configuration to use DHCP to obtain the IP address and network configuration for your CloudForms Management Engine appliance. The appliance is initially configured as a DHCP client with bridged networking.
  • Use Set Static Network Configuration if you have a specific IP address and network setting you need to use for the CloudForms Management Engine appliance.
  • Use Test Network Configuration to check that name resolution is working correctly.
  • Use Set Hostname to specify a hostname for the CloudForms Management Engine appliance.

    Important
    A valid fully qualified hostname for the CloudForms Management Engine appliance is required for SmartState analysis to work correctly,
  • Use Set Timezone, Date, and Time to configure the time zone, date, and time for the CloudForms Management Engine appliance.
  • Use Restore Database from Backup to restore the VMDB database from a previous backup.
  • Use Setup Database Region to create regions for VMDB replication.
  • Use Configure Database to configure the VMDB database. Use this option to configure the database for the appliance after installing and running it for the first time.
  • Use Extend Temporary Storage to add temporary storage to the appliance. The appliance formats an unpartitioned disk attached to the appliance host and mounts it at /var/www/miq_tmp. The appliance uses this temporary storage directory to perform certain image download functions.
  • Use Configure External Authentication (httpd) to configure authentication through an IPA server.
  • Use Generate Custom Encryption Key to regenerate the encryption key used to encode plain text password.
  • Use Harden Appliance Using SCAP Configuration to apply Security Content Automation Protocol (SCAP) standards to the appliance. You can view these SCAP rules in the /var/www/miq/lib/appliance_console/config/scap_rules.yml file.
  • Use Stop Server Processes to stop all server processes. You may need to do this to perform maintenance.
  • Use Start Server Processes to start the server. You may need to do this after performing maintenance.
  • Use Restart Appliance to restart the CloudForms Management Engine appliance. You can either restart the appliance and clear the logs or just restart the appliance.
  • Use Shut Down Appliance to power down the appliance and exit all processes.
  • Use Summary Information to go back to the network summary screen for the CloudForms Management Engine appliance.
  • Use Quit to leave the CloudForms Management Engine appliance console.

2.3. Configuring a Database for CloudForms Management Engine

CloudForms Management Engine uses a database to store information about the cloud environment it manages. You must configure a database for the appliance before you can use it to administer your cloud infrastructure. CloudForms Management Engine provides the following two options for database configuration:
  • Configuring an internal PostgreSQL database
  • Configuring an external PostgreSQL database
Note
See CPU Sizing Assistant for a Dedicated VMDB Host in the Deployment Planning Guide for guidelines on CPU requirements.

2.3.1. Configuring an Internal Database

Important
Before installing an internal database, add a disk to the infrastructure hosting your appliance. See the storage documentation specific to your infrastructure for instructions on how to add a disk. As a storage disk usually cannot be added while a virtual machine is running, Red Hat recommends adding the disk before starting the appliance. Red Hat CloudForms only supports installing of an internal VMDB on blank disks. The installation will fail if the disks are not blank.
  1. Start the appliance and open a terminal console.
  2. Log in to the appliance using the SSH key.
  3. Enter the sudo appliance_console command. The CloudForms Management Engine appliance summary screen displays.
  4. Press Enter to manually configure settings.
  5. Select 8) Configure Database from the menu.
  6. You are prompted to create or fetch an encryption key.

    • If this is the first CFME appliance, choose 1) Create key.
    • If this is not the first CFME appliance, choose 2) Fetch key from remote machine to fetch the key from the first CFME appliance. All CFME appliances in a multi-region deployment must use the same key.
  7. Choose 1) Internal for the database location.
  8. Choose a disk for the database. For example:

    1)  /dev/vdb: 20480
    
    Choose disk:

    Enter 1 to choose /dev/vdb for the database location.

  9. When prompted, enter a unique three digit region ID to create a new region. As your deployment grows, you can add more regions in the future to manage multiple appliances.

    Important
    Creating a new region destroys any existing data on the chosen database.
  10. Confirm the configuration when prompted.
CloudForms Management Engine configures the internal database.

2.3.2. Configuring an External Database

Based on your setup, you will choose to configure the appliance to use an external PostgreSQL database. For example, we can only have one database in a single region. However, a region can be segmented into multiple zones where each zone provides specific functionality such as, Database, User Interface, Reporting among others. The appliances in these zones must be configured to use an external database. Note that the postgresql.conf file used with CloudForms Management Engine databases requires specific settings for correct operation. For example, it must correctly reclaim table space, control session timeouts, and format the PostgreSQL server log for improved system support. Due to these requirements, Red Hat recommends that external CloudForms Management Engine databases use a postgresql.conf file based on the standard file used by the CloudForms Management Engine appliance. Ensure you configure the settings in the postgresql.conf to suit your system. For example, customize the shared_buffers setting according to the amount of real storage available in the external system hosting the PostgreSQL instance. In addition, depending on the aggregate number of appliances expected to connect to the PostgreSQL instance, it may be necessary to alter the max_connections setting.
Note
  • CloudForms Management Engine 4.x requires PostgreSQL version 9.4.
  • Because the postgresql.conf file controls the operation of all databases managed by a single instance of PostgreSQL, do not mix CloudForms Management Engine databases with other types of databases in a single PostgreSQL instance.
  1. Start the appliance and open a terminal console.
  2. Log in to the appliance using the SSH key.
  3. Enter the sudo appliance_console command. The CloudForms Management Engine appliance summary screen displays.
  4. Press Enter to manually configure settings.
  5. Select 8) Configure Database from the menu.
  6. You are prompted to create or fetch a security key.

    • If this is the first CFME appliance, select the option to create a key.
    • If this is not the first CFME appliance, select the option to fetch the key from the first CFME appliance. All CFME appliances in a multi-region deployment must use the same key.
  7. Choose 2) External for the database location.
  8. Enter the database hostname or IP address when prompted.
  9. Enter the database name or leave blank for the default (vmdb_production).
  10. Enter the database username or leave blank for the default (root).
  11. Enter the chosen database user’s password.
  12. Confirm the configuration if prompted.
CloudForms Management Engine will then configure the external database.

2.4. Configuring a Worker Appliance for CloudForms Management Engine

You can use multiple appliances to facilitate horizontal scaling, as well as for dividing up work by roles. Accordingly, configure an appliance to handle work for one or many roles, with workers within the appliance carrying out the duties for which they are configured. You can configure a worker appliance through the terminal. The following steps demonstrate how to join a worker appliance to an appliance that already has a region configured with a database.
  1. Start up the appliance and open a terminal console.
  2. Log in to the appliance using the SSH key.
  3. Enter the sudo appliance_console command. The CloudForms Management Engine appliance summary screen displays.
  4. Press Enter to manually configure settings.
  5. Select 8) Configure Database from the menu.
  6. You are prompted to create or fetch a security key. Select the option to fetch the key from the first CFME appliance. All CFME appliances in a multi-region deployment must use the same key.
  7. Choose 2) External for the database location.
  8. Enter the database hostname or IP address when prompted.
  9. Enter the database name or leave blank for the default (vmdb_production).
  10. Enter the database username or leave blank for the default (root).
  11. Enter the chosen database user password.
  12. Confirm the configuration if prompted.