-
From the cloned repo run
site-config-tower.yml
playbook to create job templates and workflow template.
[bastion]$ sudo -i
[bastion]# cd ansible_advance_homework
[bastion]# TOWER_GUID=<Ansible Tower Homework GUID from mail>
[bastion]# OSP_GUID=<Openstack for Ansible GUID from mail>
[bastion]# OPENTLC_LOGIN=<username-company.com>
[bastion]# OPENTLC_PASSWORD=<your openlc account password>
[bastion]# GITHUB_REPO=https://github.com/<githubhandler>/ansible_advance_homework
[bastion]# JQ_REPO_BASE=http://www.opentlc.com/download/ansible_bootcamp
[bastion]# REGION=<enter region name example us-east-1>
[bastion]# RH_MAIL_ID=<your mail id for dynamic inventory tag>
[bastion]# ansible-playbook site-config-tower.yml -e tower_GUID=${TOWER_GUID} -e osp_GUID=${OSP_GUID} -e opentlc_login=${OPENTLC_LOGIN} -e path_to_opentlc_key=/root/.ssh/mykey.pem -e param_repo_base=${JQ_REPO_BASE} -e opentlc_password=${OPENTLC_PASSWORD} -e REGION_NAME=${REGION} -e EMAIL=${RH_MAIL_ID} -e github_repo=${GITHUB_REPO}
Files or dir | Purpose |
---|---|
app-tier |
Install application server role |
db-tier |
Install postgressql server for database role |
lb-tier |
Install HA proxy role |
base-config |
Setup yum repo and base packages role |
setup-workstation |
Setup workstation, create network, ssh keypair, security group etc. role |
osp-servers |
Provision OSP Instances role |
osp-instance-delete |
Delete OSP Instances role |
osp-facts |
Genrate in-memory inventory for OSP instances role |
roles/config-tower/vars/main.yml |
Very important file to review. All the variable values are set there. Please do not make any changes in the file |
config-tower |
Role to configure ansible tower job templates and workflow |
aws_creds.yml |
Fetch GUIDkey.pem from bastion of Three tier application env and create machine credential to connect to AWS instances |
aws_provision.yml |
Use |
aws_status_check.yml |
Check aws instances are up or not |
site-3tier-app.yml |
Playbook to deploy three tier app |
site-install-isolated-node.yml |
Playbook to install isolated node |
site-config-tower.yml |
Playbook to call role |
site-osp-delete.yml |
Playbook to call role |
site-osp-instances.yml |
Playbook to call role |
site-setup-workstation.yml |
Playbook to call role |
site-smoke-osp.yml |
Playbook to test three tier app on OSP |
site-smoketest-aws.yml |
Playbook to test three tier app on AWS |
grading-script.yml |
Self grading script |
roles/config-tower/tasks/ec2_dynamic.yml |
For creating Dynamic inventory in Ansible tower. Use |
roles/config-tower/tasks/job_template.yml |
For creating job templates |
roles/config-tower/tasks/pre-config-tower.yml |
Any pre config tasks needed |
roles/config-tower/tasks/workflow_template.yml |
genrate workflow from |
roles/config-tower/tasks/post-config-tower.yml |
any post config jobs |
Following Lab environments must be provisioned on OpenTLC available under OPENTLC Automation group:
-
Ansible Advanced - OpenStack
-
Ansible Advanced - Homework
Following manual tasks should be performed after both Lab environments are provisioned by OpenTLC:
-
Copy OpenTLC private key to OSP Workstation /root/.ssh
-
Copy OpenTLC public key content to OSP Workstation /root/.ssh/authorized_keys
-
Copy OpenTLC private key to Homework Bastion /root/.ssh
-
Copy your GitHub private key to Homework Bastion /root/.ssh
ssh -i ~/.ssh/rd_opentlc_local_id_rsa workstation-aa3a.rhpds.opentlc.com
Follow these manual steps to prepare Homework project before execution:
-
Create a workspace directory (For Example: /root/homework)
-
Clone your Homework GitHub repo to Homework Bastion in workspace directory. (Note: This is the repo forked and developed by you)
-
Update /root/homework/ansible_advance_homework/ssh.cfg with correct OSP Workstation Hostname
-
Add environment variables to /root/.bashrc
export OSP_GUID=aa3a export TOWER_GUID=b996 export OPENTLC_LOGIN=rdurvas1-in.ibm.com export GITHUB_REPO=https://github.com/rajdurvasula/ansible_advance_homework export JQ_REPO_BASE=http://www.opentlc.com/download/ansible_bootcamp export REGION=us-east-1 export RH_MAIL_ID=[email protected]
-
source /root/.bashrc for future usage
Follow these manual steps to configure OSP resources
-
Execute the provided script setup_workstation.sh
-
The script executes Ansible Playbook site-setup-workstation.yml
-
-
Verify connectivity from Homework Bastion to OSP Workstation with "cloud-user" user and openstack.pem key
ssh -i ~/.ssh/openstack.pem [email protected]
-
Verify Instances Group from Tower web UI
-
Open https://tower1.{{TOWER_GUID}}.example.opentlc.com in web browser
-
Navigate to Instances Group
-
Locate osp Instance Group
-
Click INSTANCES link under osp entry to find Workstation hostname
-
Follow these steps to configure Ansible Tower
-
Execute the provided script config_tower.sh
-
The script executes Ansible Playbook site-config-tower.yml
-
NOTE: This script depends on Environment Variables that were set in Homework Bastion "/root/.bashrc"
-
At the prompt, provide your Red Hat OpenTLC password
-
Follow these steps to provision QA environment on OSP instance
-
Execute Ansible Playbook site-osp-instances.yml
ansible-playbook site-osp-instances.yml
-
Execute Ansible Playbook site-3tier-app.yml
ansible-playbook site-3tier-app.yml
-
Get the "frontend" server IP address
openstack server list
# Result:
+--------------------------------------+----------+--------+--------------------------------------+------------+
| ID | Name | Status | Networks | Image Name |
+--------------------------------------+----------+--------+--------------------------------------+------------+
| 7cd0a20f-f0e2-4c44-81b2-0b05075b2c5f | app1 | ACTIVE | int_network=20.20.20.7, 10.10.10.8 | rhel-guest |
| bb25e846-5a1a-41ff-887e-b5c774a9ba9e | app2 | ACTIVE | int_network=20.20.20.8, 10.10.10.6 | rhel-guest |
| 2d194710-d0cd-4ba4-b0c0-d9337423c6f2 | db | ACTIVE | int_network=20.20.20.11, 10.10.10.11 | rhel-guest |
| 06146c50-f0ca-440c-a9c0-2b0b1ce94592 | frontend | ACTIVE | int_network=20.20.20.6, 10.10.10.3 | rhel-guest |
+--------------------------------------+----------+--------+--------------------------------------+------------+
-
Issue curl command on "frontend" ip address from RHOSP workstation node.
curl http://10.10.10.3
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Ansible Deployed Tomcat</title>
<meta name="description" content="Ansible Created Content">
<meta name="[email protected]" content="Ansible">
</head>
<body>
<h1>Ansible has done its job - Welcome to Tomcat on 10.10.10.8</h1>
</body>
</html>
-
Again, issue curl command on "frontend" ip address from RHOSP workstation node.
curl http://10.10.10.3
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Ansible Deployed Tomcat</title>
<meta name="description" content="Ansible Created Content">
<meta name="[email protected]" content="Ansible">
</head>
<body>
<h1>Ansible has done its job - Welcome to Tomcat on 10.10.10.6</h1>
</body>
</html>
-
Execute Ansible Playbook site-smoke-osp.yml
ansible-playbook site-smoke-osp.yml
-
Execute ansible playbook site-osp-delete.yml
ansible-playbook site-osp-delete.yml