Constructs a CDP Private Cloud Base cluster running on AWS IaaS.
Issue | Description | Workaround |
---|---|---|
Cluster instances unavailable after the external_setup.yml Playbook |
The cluster EC2 instances become unavailable after the external_setup.yml Playbook. During subsequent playbooks the hosts becomes unreachable and in the EC2 console the VM instances fail the reachability health check. |
Restart the EC2 instances via the console. |
To run, you need:
- Docker (or a Docker alternative)
ansible-navigator
- AWS credentials
- CDP Private Cloud Base license file
- SSH key(s) for bastion/jump host and cluster
Configuration is passed via environment variables and an user-managed configuration file.
-
Set up the following definition environment variables:
Variable Description Status SSH_PUBLIC_KEY_FILE
File path to the SSH public key that will be uploaded to the cloud provider (using the name_prefix
variable as the key label). E.g./Users/example/.ssh/demo_ops.pub
Mandatory SSH_PRIVATE_KEY_FILE
File path to the SSH private key. E.g. /Users/example/.ssh/demo_ops
Mandatory CDP_LICENSE_FILE
File path to a CDP Private Cloud Base license. E.g. /Users/example/Documents/example_cloudera_license.txt
Mandatory AWS_PROFILE
The profile label for your AWS credentials. Otherwise, use the associated AWS_*
parameters.Mandatory
Copy config-template.yml
to config.yml
and edit this user-facing configuration file to match your particular deployment.
Important
name_prefix
should be 4-7 characters and is the "primary key" for the deployment.
name_prefix: "{{ mandatory }}" # Unique identifier for the deployment
infra_region: "us-east-2"
domain: "{{ name_prefix }}.cldr.example" # The deployment subdomain
realm: "CLDR.DEPLOYMENT" # The Kerberos realm
common_password: "Example776" # For external services
admin_password: "Example776" # For Cloudera-related services
deployment_tags:
deployment: "{{ name_prefix }}"
deploy-tool: cloudera-deploy
You can run all of the following steps at once, if you wish:
ansible-navigator run \
pre_setup.yml \
external_setup.yml \
internal_setup.yml \
base_setup.yml \
summary.yml \
-e @definition.yml \
-e @config.yml
This definition-specific playbook includes tasks such as:
- Instructure provisioning
- FreeIPA DNS and KRB services provisioning
Run the following command
ansible-navigator run pre_setup.yml \
-e @definition.yml \
-e @config.yml
Once the pre-setup playbook completes confirm that:
- You can connect to each node via the inventory - see Confirm SSH Connectivity for help. You can also run
ansible-navigator run validate_dns_lookups.yml
to check connectivity and DNS. - Connect to FreeIPA UI and login with the
IPA_USER
andIPA_PASSWORD
credentials in the configuration file. See Cluster Access for details.
These playbooks configure and deploy PVC Base. They use the infrastructure provisioned.
Tasks include:
- System/host configuration
- Cloudera Manager server and agent installation and configuration
- Cluster template imports
Run the following:
# Run the 'external' system configuration
ansible-navigator run external_setup.yml \
-e @definition.yml \
-e @config.yml
# Run the 'internal' Cloudera installations and configurations
ansible-navigator run internal_setup.yml \
-e @definition.yml \
-e @config.yml
# Run the Cloudera cluster configuration and imports
ansible-navigator run base_setup.yml \
-e @definition.yml \
-e @config.yml
# Produce a deployment summary and retrieve the FreeIPA CA certificate
ansible-navigator run summary.yml \
-e @definition.yml \
-e @config.yml
Once the cluster is up, you can access all of the UIs within, including the FreeIPA sidecar, via a SSH tunnel:
ssh -D 8157 -q -C -N ec2-user@<IP address of jump host>
Use a SOCKS5 proxy switcher in your browser (an example is the SwitchyOmega browser extension).
In the SOCKS5 proxy configuration, set Protocol to SOCKS5
, Server to localhost
, and Port to 8157
. Ensure the SOCKS5 proxy is active when clicking on the CDP UI that you wish to access.
Caution
You will get a SSL warning for the self-signed certificate; this is expected given this particular definition as the local FreeIPA server has no upstream certificates. However, you can install this CA certificate to remove this notification.
In addition, you can log into the jump host via SSH and get to any of the servers within the cluster. Remember to forward your SSH key!
ssh -A -C -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ec2-user@<IP address of jump host>
Note
The above assume you are using the default AMI image set in the Terraform configuration. If not, adjust the SSH user appropriately.
Run the following:
ansible-navigator run pre_teardown.yml \
-e @definition.yml \
-e @config.yml
You can also run the direct Terraform command:
ansible-navigator exec -- terraform -chdir=tf_proxied_cluster destroy -auto-approve
Run the following:
ansible-navigator exec -- ansible -m ansible.builtin.ping -i inventory.yml all
This will check to see if the inventory file is well constructed and the hosts are available via SSH.