-
Language:
English
-
Language:
English
Red Hat Training
A Red Hat training course is available for Red Hat CloudForms
Installing Red Hat CloudForms on Amazon Elastic Compute Cloud (Amazon EC2)
How to install and configure Red Hat CloudForms on Amazon Elastic Compute Cloud (Amazon EC2)
Red Hat CloudForms Documentation Team
cloudforms-docs@redhat.com
Abstract
Chapter 1. Installing Red Hat CloudForms
Installing Red Hat CloudForms consists of the following steps:
- Downloading the appliance for your environment as a virtual machine image template.
- Setting up a virtual machine based on the appliance.
- Configuring the CloudForms appliance.
After you have completed all the procedures in this guide, you will have a working environment on which additional customizations and configurations can be performed.
1.1. Obtaining the Appliance
- Go to access.redhat.com and log in to the Red Hat Customer Portal using your customer account details.
- Click Downloads in the menu bar.
- Click A-Z to sort the product downloads alphabetically.
- Click Red Hat CloudForms to access the product download page.
- From the list of installers and images, click the Download Now link for CFME EC2 Virtual Appliance.
1.2. Requirements
Below are the two sets of requirements for installing Red Hat CloudForms on Amazon EC2.
1.2.1. CloudForms Requirements
- 44 GB of space on the chosen datastore.
- 12 GB RAM.
- 4 vCPUs.
1.2.2. Amazon EC2 Requirements
- An Amazon S3 bucket to store disk images.
-
A VM import service role (IAM role) named
vmimport
.
For information on creating an Amazon S3 bucket and a VM Import Service Role, see the Amazon EC2 documentation.
1.3. Uploading the Appliance to an Amazon S3 Bucket
From your local file system, you can now upload the CloudForms appliance VHD image obtained in Section 1.1, “Obtaining the Appliance” to the Amazon S3 bucket, using your choice of tool.
1.4. Configuring Amazon EC2 to Import the Appliance
These are the procedural steps as of the time of writing. For the latest information on importing a virtual machine as an image, see the Amazon EC2 documentation.
Install the AWS client on the computer you want to interact with the AWS API from.
$ pip install awscli
- Configure and download your AWS secret/access key by following the steps in the Managing Access Keys for Your AWS Account documentation.
Configure the AWS client with your access/secret key. For example:
$ aws configure AWS Access Key ID [******]: ACCESS_KEY AWS Secret Access Key [******]: SECRET_KEY Default region name [None]: Default output format [None]:
Create the
trust-policy.json
file for the vmimport role. For example:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }
Create the vmimport role using the
trust-policy.json
file that you just created.$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
NoteThis user must have permissions to create and modify IAM roles.
Create the
role-policy.json
file. Be sure to use the exact image name that you uploaded to the S3 bucket. For example:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:FullAccess" ], "Resource": [ "arn:aws:s3:::NAME_OF_IMAGE_IN_S3_BUCKET" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::NAME_OF_IMAGE_IN_S3_BUCKET/*" ] }, { "Effect": "Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*", "ec2:FullAccess" ], "Resource": "*" } ] }
Apply the vmimport role to the CloudForms appliance image you uploaded to the S3 bucket.
$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
1.5. Importing the Appliance to Amazon Elastic Compute Cloud (Amazon EC2)
To import the appliance:
Create a containers.json file:
[ { "Description": "NAME OF INSTANCE", "Format": "vhd", "UserBucket": { "S3Bucket": "BUCKET WITH UPLOADED .VHD IMAGE", "S3Key": "NAME OF .VHD IMAGE" } } ]
Use AWS-CLI tools to import the image. Run the following command:
$ aws ec2 import-image --disk-containers file://containers.json --region BUCKET_REGION
Check the progress of your imported image by running the following command:
$ aws ec2 describe-import-image-tasks --region BUCKET_REGION --import-task-ids import-ami-AMI_ID_GOT_FROM_RESPONSE
Chapter 2. Configuring Red Hat CloudForms
After installing CloudForms and running it for the first time, you must perform some basic configuration. To configure CloudForms, you must at a minimum:
- Add a disk to the infrastructure hosting your appliance.
- Configure the database.
Configure the CloudForms appliance using the internal appliance console.
2.1. Accessing the Appliance Console
- Start the appliance and open a terminal console.
-
After starting the appliance, log in with a user name of
root
and the default password ofsmartvm
. This displays the Bash prompt for theroot
user. -
Enter the
appliance_console
command. The Red Hat CloudForms appliance summary screen displays. -
Press
Enter
to manually configure settings. -
Press the number for the item you want to change, and press
Enter
. The options for your selection are displayed. - Follow the prompts to make the changes.
-
Press
Enter
to accept a setting where applicable.
The CloudForms appliance console automatically logs out after five minutes of inactivity.
2.2. Configuring a Database
CloudForms uses a database to store information about the environment. Before using CloudForms, configure the database options for it; CloudForms provides the following two options for database configuration:
- Install an internal PostgreSQL database to the appliance
- Configure the appliance to use an external PostgreSQL database
2.2.1. Configuring an Internal Database
Before installing an internal database, add a disk to the infrastructure hosting your appliance. See the documentation specific to your infrastructure for instructions for adding 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; installation will fail if the disks are not blank.
- Start the appliance and open a terminal console.
-
After starting the appliance, log in with a user name of
root
and the default password ofsmartvm
. This displays the Bash prompt for theroot
user. -
Enter the
appliance_console
command. The Red Hat CloudForms appliance summary screen displays. - Press Enter to manually configure settings.
- Select 5) Configure Database from the menu.
You are prompted to create or fetch an encryption key.
- If this is the first Red Hat CloudForms appliance, choose 1) Create key.
If this is not the first Red Hat CloudForms appliance, choose 2) Fetch key from remote machine to fetch the key from the first appliance. For worker and multi-region setups, use this option to copy key from another appliance.
NoteAll CloudForms appliances in a multi-region deployment must use the same key.
- Choose 1) Create Internal Database for the database location.
Choose a disk for the database. This can be either a disk you attached previously, or a partition on the current disk.
ImportantRed Hat recommends using a separate disk for the database.
If there is an unpartitioned disk attached to the virtual machine, the dialog will show options similar to the following:
1) /dev/vdb: 20480 2) Don't partition the disk
-
Enter 1 to choose
/dev/vdb
for the database location. This option creates a logical volume using this device and mounts the volume to the appliance in a location appropriate for storing the database. The default location is/var/opt/rh/rh-postgresql95/lib/pgsql
, which can be found in the environment variable$APPLIANCE_PG_MOUNT_POINT
. - Enter 2 to continue without partitioning the disk. A second prompt will confirm this choice. Selecting this option results in using the root filesystem for the data directory (not advised in most cases).
-
Enter 1 to choose
Enter Y or N for Should this appliance run as a standalone database server?
- Select Y to configure the appliance as a database-only appliance. As a result, the appliance is configured as a basic PostgreSQL server, without a user interface.
- Select N to configure the appliance with the full administrative user interface.
When prompted, enter a unique number to create a new region.
ImportantCreating a new region destroys any existing data on the chosen database.
- Create and confirm a password for the database.
Red Hat CloudForms then configures the internal database. This takes a few minutes. After the database is created and initialized, you can log in to CloudForms.
2.2.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, such as database zone, user interface zone, and reporting zone, where each zone provides a specific function. The appliances in these zones must be configured to use an external database.
The postgresql.conf
file used with Red Hat CloudForms 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 Red Hat CloudForms databases use a postgresql.conf
file based on the standard file used by the Red Hat CloudForms 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.
- Red Hat CloudForms 4.x requires PostgreSQL version 9.5.
-
Because the
postgresql.conf
file controls the operation of all databases managed by a single instance of PostgreSQL, do not mix Red Hat CloudForms databases with other types of databases in a single PostgreSQL instance.
- Start the appliance and open a terminal console.
-
After starting the appliance, log in with a user name of
root
and the default password ofsmartvm
. This displays the Bash prompt for theroot
user. -
Enter the
appliance_console
command. The Red Hat CloudForms appliance summary screen displays. - Press Enter to manually configure settings.
- Select 5) Configure Database from the menu.
You are prompted to create or fetch a security key.
- If this is the first Red Hat CloudForms appliance, choose 1) Create key.
If this is not the first Red Hat CloudForms appliance, choose 2) Fetch key from remote machine to fetch the key from the first appliance.
NoteAll CloudForms appliances in a multi-region deployment must use the same key.
- Choose 2) Create Region in External Database for the database location.
- Enter the database hostname or IP address when prompted.
-
Enter the database name or leave blank for the default (
vmdb_production
). -
Enter the database username or leave blank for the default (
root
). - Enter the chosen database user’s password.
- Confirm the configuration if prompted.
Red Hat CloudForms will then configure the external database.
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.
- Start the appliance and open a terminal console.
-
After starting the appliance, log in with a user name of
root
and the default password ofsmartvm
. This displays the Bash prompt for theroot
user. -
Enter the
appliance_console
command. The Red Hat CloudForms appliance summary screen displays. - Press Enter to manually configure settings.
- Select 5) Configure Database from the menu.
You are prompted to create or fetch a security key. Since this is not the first Red Hat CloudForms 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.
NoteAll CloudForms appliances in a multi-region deployment must use the same key.
- Choose 3) Join Region in External Database for the database location.
- Enter the database hostname or IP address when prompted.
-
Enter the port number or leave blank for the default (
5432
). -
Enter the database name or leave blank for the default (
vmdb_production
). -
Enter the database username or leave blank for the default (
root
). - Enter the chosen database user’s password.
- Confirm the configuration if prompted.
Once Red Hat CloudForms is installed, you can log in and perform administration tasks.
Log in to Red Hat CloudForms for the first time after installing by:
- Navigate to the URL for the login screen. (https://xx.xx.xx.xx on the virtual machine instance)
- Enter the default credentials (Username: admin | Password: smartvm) for the initial login.
- 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).
-
After starting the Red Hat CloudForms appliance, log in with a user name of
root
and the default password ofsmartvm
. This displays the Bash prompt for the root user. -
Enter the
appliance_console_cli
orappliance_console_cli --help
command to see a list of options available with the command, or simply enterappliance_console_cli --option <argument>
directly to use a specific option.
Table A.1. Database Configuration Options
Option | Description |
---|---|
--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) |
--dbdisk | database disk device path (for configuring an internal database) |
--hostname (-h) | database hostname |
--port |
database port (defaults to |
--username (-U) |
database username (defaults to |
--password (-p) | database password |
--dbname (-d) |
database name (defaults to |
Table A.2. v2_key Options
Option | Description |
---|---|
--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 |
--sshlogin |
ssh username for fetching the v2_key (defaults to |
--sshpassword | ssh password for fetching the v2_key |
Table A.3. IPA Server Options
Option | Description |
---|---|
--host (-H) | set the appliance hostname to the given name |
--ipaserver (-e) | IPA server FQDN |
--ipaprincipal (-n) |
IPA server principal (default: |
--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 theappliance_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 A.4. Certificate Options
Option | Description |
---|---|
--ca (-c) |
CA name used for certmonger (default: |
--postgres-client-cert (-g) | install certs for postgres client |
--postgres-server-cert | install certs for postgres server |
--http-cert | 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 A.5. Other Options
Option | Description |
---|---|
--logdisk (-l) | log disk path |
--tmpdisk |
initialize the given device for temp storage (volume mounted at |
--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