1. Installing ManageIQ

ManageIQ can be installed and ready to configure in a few quick steps. After downloading ManageIQ as a virtual machine image template from the Red Hat Customer Portal, the following process takes you through the steps of uploading the ManageIQ appliance to Microsoft Azure.

After uploading the ManageIQ appliance, you must configure the database for ManageIQ; see Configuring a Database for ManageIQ.

1.1. Obtaining the ManageIQ Virtual Appliance

  1. In a browser, navigate to manageiq.org/download.

  2. Select Microsoft Azure from the --Choose your platform-- list.

  3. Select Stable from the --Choose a release-- list.

  4. Follow the instructions to download the appliance.

1.2. Uploading the ManageIQ Virtual Appliance to Microsoft Azure

You can upload the appliance to an Azure environment using the following two methods.

  • Using Azure PowerShell script

  • Using Azure Command-Line Interface (Azure CLI)

To upload the ManageIQ appliance file to Microsoft Azure, ensure the following requirements are met:

Azure requires that the uploaded Virtual Hard Disk (VHD) files are in a fixed format. The ManageIQ virtual appliance image .vhd file is dynamic by default. Currently, the Azure Powershell script and Azure CLI do not automatically convert the dynamic .vhd file to fixed during upload. To upload using either method, the ManageIQ virtual appliance image .vhd file must be first converted from dynamic to fixed, and properly aligned to the nearest 1 MB boundary. Once converted and properly aligned, you can then upload the appliance virtual image .vhd file using either the Azure PowerShell or Azure CLI method.

1.2.1. Converting and Aligning the ManageIQ Virtual Appliance Image

Complete the following procedure to ensure the ManageIQ dynamic .vhd file is properly aligned to the nearest 1 MB boundary, and is in a fixed-size VHD format.

  1. Convert the dynamic .vhd file you downloaded in Obtaining the ManageIQ Virtual Appliance to RAW format.

    $ qemu-img convert -f vpc -O raw <image-name.vhd> <image-name.raw>
    $ qemu-img convert -f vpc -O raw cfme-azure- cfme-azure-
  2. Copy and paste the script below into a new bash shell script file, for example, aligned-size.sh. Change rawdisk="image-name" to the image name for your file. This script will calculate the rounded file size to the nearest 1 MB boundary.

    MB=$((1024 * 1024))
    size=$(qemu-img info -f raw --output json "$rawdisk" | gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1) * $MB))
    echo "rounded size = $rounded_size"
    export rounded_size
  3. Run the shell script. The file name aligned-size.sh is used in this example.

    $ sh aligned-size.sh
    rounded size = 34361835520
  4. Resize the virtual appliance image using the rounded size.

    $ qemu-img resize -f raw <image-name.raw> <rounded_size>
    $ qemu-img resize -f raw cfme-azure- 34361835520
    Image resized.
  5. Convert the appliance image to a fixed-size .vhd file.

    $ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-name.raw> <image-name.vhd>
    qemu-img convert -f raw -o subformat=fixed,force_size -O vpc cfme-azure- cfme-azure-
  6. Get the virtual size for the .vhd file.

    $ qemu-img info --output=json -f vpc <path-to-image>
    $ qemu-img info --output=json -f vpc cfme-azure-
      "virtual-size": 34361835520,
      "filename": "cfme-azure-",
      "format": "vpc",
      "actual-size": 3158839296,
      "dirty-flag": false
  7. Divide the virtual-size value by 1024, twice. If the result is a whole number, the .vhd file is aligned properly. The example below shows that the file is properly aligned.

    34361835520 / 1024 / 1024 = 32770

qemu-img version 2.7.1 is used in this procedure. Check the qemu-img version using the command: yum info qemu-img. If the version is lower than 2.2.1, remove the option force_size from the conversion command, for example, subformat=fixed.

The ManageIQ Azure virtual appliance image is ready for uploading and provisioning in Microsoft Azure.

1.2.2. Uploading the ManageIQ Virtual Appliance Using Azure Powershell Script

Complete the following steps to upload the ManageIQ virtual appliance image you converted to a fixed-size VHD format and properly aligned per requirement using the procedure in Converting and Aligning the ManageIQ Virtual Appliance Image.

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"
    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 = ""
    $VNetSubnetAddressPrefix = ""
    $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

These are the procedural steps as of the time of writing. For more information, see 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.

1.2.3. Uploading and Provisioning the ManageIQ Virtual Appliance Using Azure Command-Line Interface

You can upload the appliance to an Azure environment using the Azure Command-Line Interface (Azure CLI) following the process below.

Install Azure CLI 2.0:

Complete the steps below to install Azure CLI 2.0 using curl. See https://docs.microsoft.com/en-us/cli/azure/install-azure-cli for other installation methods.

  1. Make sure Python is updated and install the prerequisite packages.

    $ sudo yum update
    $ sudo yum install -y gcc libffi-devel python-devel openssl-devel
  2. Install Azure CLI 2.0.

    $ curl -L https://aka.ms/InstallAzureCli | bash
  3. Export Azure environment variables.

    $ export AZURE_STORAGE_ACCOUNT=<azure-storage-account-name>
    $ export AZURE_STORAGE_KEY="<azure-storage-account-key>"
    $ export AZURE_STORAGE_ACCOUNT=xyzgroup9401
    $ export AZURE_STORAGE_KEY="zG7Dc29I7ysKik/Xiqk3tQN43CtLpObmJom+Hze6ko/ZiwXhdElknABzUbZ/zie5vW1XyTlGsgbaVf0fUijf2w=="
Upload and Provision the ManageIQ Virtual Appliance Using Azure CLI:

Complete the following steps to upload and provision the ManageIQ virtual appliance you converted to a fixed-size VHD format and properly aligned per requirement using the procedure in Converting and Aligning the ManageIQ Virtual Appliance Image.

  1. Upload the image to the storage container. It may take several minutes. Note: Enter az storage container list to get the list of storage containers.

    $ az storage blob upload --account-name <storage-account-name> --container-name <container-name> --type page --file <path-to-vhd> --name <image-name>.vhd
    $ az storage blob upload --account-name azrhelclistact --container-name azrhelclistcont --type page --file cfme-azure- --name cfme-azure-
    Finished[#############################################################]  100.0000%
  2. Get the URL for the uploaded .vhd file using the following command. You will need to use this URL in the next step.

    $ az storage blob url -c <container-name> -n <image-name>.vhd
    $ az storage blob url -c azrhelclistcont -n cfme-azure-
  3. Log in to Azure.

    $ az login
    To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code GJP8Y33XY to authenticate.
        "cloudName": "AzureCloud",
        "id": "528c646b-83jb-4527-1a04-10d294fd0cc2",
        "isDefault": true,
        "name": "Demo Azure account",
        "state": "Enabled",
        "tenantId": "7e7cfe6b-cff0-e4d8-a446-57a76c9b4958",
        "user": {
          "name": "clouduser",
          "type": "user"
  4. Create the virtual machine. Note that the following command uses --generate-ssh-keys. In this example, the private/public key pair /home/clouduser/.ssh/id_rsa and /home/clouduser/.ssh/id_rsa.pub are created.

    $ az vm create --resource-group <resource-group> --location <azure-region> --use-unmanaged-disk --name <vm-name> --storage-account <storage-account-name> --os-type linux --admin-username <administrator-name> --generate-ssh-keys --image <URL>
    az vm create --resource-group azrhelclirsgrp --location southcentralus --use-unmanaged-disk --name cfme-appliance-1 --storage-account azrhelclistact --os-type linux --admin-username clouduser --generate-ssh-keys --image https://azrhelclistact.blob.core.windows.net/azrhelclistcont/cfme-azure-
      "fqdns": "",
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Compute/virtualMachines/cfme-appliance-1",
      "location": "southcentralus",
      "macAddress": "00-0X-XX-XX-XX-XX",
      "powerState": "VM running",
      "privateIpAddress": "",
      "publicIpAddress": "",
      "resourceGroup": "azrhelclirsgrp"

    Make a note of the public IP address. You will need this to log in to the virtual machine in the next step.

  5. Start an SSH session and log in to the appliance.

    $ ssh -i <path-to-ssh-key> <admin-username@public-IP-address>
    $ ssh  -i /home/clouduser/.ssh/id_rsa clouduser@
    The authenticity of host '' can't be established.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '' (ECDSA) to the list of known hosts.
    Welcome to the Appliance Console
    For a menu, please type: appliance_console
  6. Enter sudo appliance_console at the prompt. The summary screen appears.

You have successfully provisioned a ManageIQ virtual appliance in Microsoft Azure.

The exported storage connection string does not persist after a system reboot. If any of the commands in the above steps fail, export the storage connection string again using the following commands:

  1. Get the storage account connection string.

    $ az storage account show-connection-string -n <storage-account-name> -g <resource-group>
    $ az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp
      "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
  2. Export the connection string. Copy the connection string and paste it into the following command. This connects your system to the storage account.

    $ export AZURE_STORAGE_CONNECTION_STRING="<storage-connection-string>"
    $ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="

2. Configuring ManageIQ

Although the ManageIQ appliance comes configured to be integrated immediately into your environment, you can make some changes to its configuration.

The ManageIQ appliance is intended to have minimal configuration options.

2.1. Changing Configuration Settings

The following procedure describes how to make changes to the configuration settings on the ManageIQ appliance.

  1. Start the appliance and open a terminal console.

  2. Log in to the appliance using the SSH key.

  3. Enter the appliance_console command. The ManageIQ appliance summary screen displays.

  4. Press Enter to manually configure settings.

  5. Press the number for the item you want to change, and press Enter. The options for your selection are displayed.

  6. Follow the prompts to make the changes.

  7. Press Enter to accept a setting where applicable.

The ManageIQ appliance console automatically logs out after five minutes of inactivity.

2.2. Advanced Configuration Settings

After logging in, you can use the following menu items for advanced configuration of the appliance:

  • Use Set DHCP Network Configuration to use DHCP to obtain the IP address and network configuration for your ManageIQ 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 settings you need to use for the ManageIQ appliance.

  • Use Test Network Configuration to check that name resolution is working correctly.

  • Use Set Hostname to specify a hostname for the ManageIQ appliance.

    A valid fully qualified hostname for the ManageIQ appliance is required for SmartState analysis to work correctly,

  • Use Set Timezone to configure the time zone for the ManageIQ appliance.

  • Use Set Date and Time to configure the date and time for the ManageIQ appliance.

  • Use Restore Database from Backup to restore the Virtual Management Database (VMDB) from a previous backup.

  • Use Setup Database Region to create regions for VMDB replication.

  • Use Configure Database to configure the VMDB. Use this option to configure the database for the appliance after installing and running it for the first time.

  • Use Configure Database Replication to configure a primary or standby server for VMDB replication.

  • Use Configure Database Maintenance to configure the VMDB maintenance schedule.

  • Use Configure Application Database Failover Monitor to start or stop VMDB failover monitoring.

  • 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 EVM Server Processes to stop all server processes. You may need to do this to perform maintenance.

  • Use Start EVM Server Processes to start the server. You may need to do this after performing maintenance.

  • Use Restart Appliance to restart the ManageIQ 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 ManageIQ appliance.

  • Use Quit to leave the ManageIQ appliance console.

2.3. Configuring a Worker Appliance

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 the appliance and open a terminal console.

  2. Log in to the appliance using the SSH key.

  3. Enter the appliance_console command. The ManageIQ appliance summary screen displays.

  4. Press Enter to manually configure settings.

  5. Select 5) Configure Database from the menu.

  6. You are prompted to create or fetch a security key. Since this is not the first ManageIQ appliance, choose 2) Fetch key from remote machine. For worker and multi-region setups, use this option to copy the security key from another appliance.

    All ManageIQ appliances in a multi-region deployment must use the same key.

  7. Choose 3) Join Region in External Database for the database location.

  8. Enter the database hostname or IP address when prompted.

  9. Enter the port number or leave blank for the default (5432).

  10. Enter the database name or leave blank for the default (vmdb_production).

  11. Enter the database username or leave blank for the default (root).

  12. Enter the chosen database user’s password.

  13. Confirm the configuration if prompted.

3. Logging In After Installing ManageIQ

Once ManageIQ is installed, you can log in and perform administration tasks.

Log in to ManageIQ for the first time after installing by:

  1. Navigate to the URL for the login screen. (https://xx.xx.xx.xx on the virtual machine instance)

  2. Enter the default credentials (Username: admin | Password: smartvm) for the initial login.

  3. Click Login.

3.1. Changing the Default Login Password

Change your password to ensure more private and secure access to ManageIQ.

  1. Navigate to the URL for the login screen. (https://xx.xx.xx.xx on the virtual machine instance)

  2. Click Update Password beneath the Username and Password text fields.

  3. Enter your current Username and Password in the text fields.

  4. Input a new password in the New Password field.

  5. Repeat your new password in the Verify Password field.

  6. Click Login.

Appendix A: Appendix

A.1. Appliance Console Command-Line Interface (CLI)

Currently, the appliance_console_cli feature is a subset of the full functionality of the appliance_console itself, and covers functions most likely to be scripted using the command-line interface (CLI).

  1. After starting the ManageIQ appliance, log in with a user name of root and the default password of smartvm. This displays the Bash prompt for the root user.

  2. Enter the appliance_console_cli or appliance_console_cli --help command to see a list of options available with the command, or simply enter appliance_console_cli --option <argument> directly to use a specific option.

Table 1. Database Configuration Options



--region (-r)

region number (create a new region in the database - requires database credentials passed)

--internal (-i)

internal database (create a database on the current appliance)


database disk device path (for configuring an internal database)

--hostname (-h)

database hostname


database port (defaults to 5432)

--username (-U)

database username (defaults to root)

--password (-p)

database password

--dbname (-d)

database name (defaults to vmdb_production)

Table 2. v2_key Options



--key (-k)

create a new v2_key

--fetch-key (-K)

fetch the v2_key from the given host

--force-key (-f)

create or fetch the key even if one exists


ssh username for fetching the v2_key (defaults to root)


ssh password for fetching the v2_key

Table 3. IPA Server Options



--host (-H)

set the appliance hostname to the given name

--ipaserver (-e)

IPA server FQDN

--ipaprincipal (-n)

IPA server principal (default: admin)

--ipapassword (-w)

IPA server password

--ipadomain (-o)

IPA server domain (optional). Will be based on the appliance domain name if not specified.

--iparealm (-l)

IPA server realm (optional). Will be based on the domain name of the ipaserver if not specified.

--uninstall-ipa (-u)

uninstall IPA client

  • In order to configure authentication through an IPA server, in addition to using Configure External Authentication (httpd) in the appliance_console, external authentication can be optionally configured via the appliance_console_cli (command-line interface).

  • Specifying --host will update the hostname of the appliance. If this step was already performed via the appliance_console and the necessary updates made to /etc/hosts if DNS is not properly configured, the --host option can be omitted.

Table 4. Certificate Options



--ca (-c)

CA name used for certmonger (default: ipa)

--postgres-client-cert (-g)

install certs for postgres client


install certs for postgres server


install certs for http server (to create certs/httpd* values for a unique key)

--extauth-opts (-x)

external authentication options

The certificate options augment the functionality of the certmonger tool and enable creating a certificate signing request (CSR), and specifying certmonger the directories to store the keys.

Table 5. Other Options



--logdisk (-l)

log disk path


initialize the given device for temp storage (volume mounted at /var/www/miq_tmp)

--verbose (-v)

print more debugging info

Example Usage
$ ssh root@appliance.test.company.com

To create a new database locally on the server using /dev/sdb:

# appliance_console_cli --internal --dbdisk /dev/sdb --region 0 --password smartvm

To copy the v2_key from a host some.example.com to local machine:

# appliance_console_cli --fetch-key some.example.com --sshlogin root --sshpassword smartvm

You could combine the two to join a region where db.example.com is the appliance hosting the database:

# appliance_console_cli --fetch-key db.example.com --sshlogin root --sshpassword smartvm --hostname db.example.com --password mydatabasepassword

To configure external authentication:

# appliance_console_cli --host appliance.test.company.com
                        --ipaserver ipaserver.test.company.com
                        --ipadomain test.company.com
                        --iparealm TEST.COMPANY.COM
                        --ipaprincipal admin
                        --ipapassword smartvm1

To uninstall external authentication:

# appliance_console_cli  --uninstall-ipa