forked from redhat-cop/agnosticd
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
1,343 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
= generic-example config | ||
|
||
== Set up your "Secret" variables | ||
|
||
* You need to provide some credentials for deployments to work | ||
* Create a file called "env_secret_vars.yml" and put it in the | ||
./ansible/configs/CONFIGNAME/ directory. | ||
** At this point this file *has to be created* even if no vars from it are used. | ||
* You can choose to provide these values as extra vars (-e "var=value") in the | ||
command line if you prefer not to keep sensitive information in a file. | ||
|
||
.Example contents of "Secret" Vars file | ||
---- | ||
# ## Logon credentials for Red Hat Network | ||
# ## Required if using the subscription component | ||
# ## of this playbook. | ||
rhel_subscription_user: '' | ||
rhel_subscription_pass: '' | ||
# | ||
# ## LDAP Bind Password | ||
bindPassword: '' | ||
# | ||
# ## Desired admin name and password if required | ||
admin_user: "" | ||
admin_user_password: "" | ||
# | ||
# ## AWS Credentials. This is required. | ||
aws_access_key_id: "" | ||
aws_secret_access_key: "" | ||
#If using repo_method: satellite, you must set these values as well. | ||
satellite_url: https://satellite.example.com | ||
satellite_org: Sat_org_name | ||
satellite_activationkey: "rhel7basic" | ||
---- | ||
|
||
== Review the Env_Type variable file | ||
|
||
* This file link:./env_vars.yml[./env_vars.yml] contains all the variables you | ||
need to define to control the deployment of your environment. | ||
|
||
|
||
== Running Ansible Playbook | ||
|
||
You can run the playbook with the following arguments to overwrite the default variable values: | ||
[source,bash] | ||
---- | ||
REGION=ap-southeast-2 | ||
KEYNAME=ocpkey | ||
GUID=devsb5 | ||
ENVTYPE="three-tier-app" | ||
CLOUDPROVIDER=ec2 | ||
HOSTZONEID='Z3IHLWJZOU9SRT' | ||
REPO_PATH='http://admin.na.shared.opentlc.com/repos/ocp/3.6/' | ||
BASESUFFIX='.example.opentlc.com' | ||
DEPLOYER_REPO_PATH=`pwd` | ||
ansible-playbook \ | ||
-i ${DEPLOYER_REPO_PATH}/inventory/${CLOUDPROVIDER}.py ${DEPLOYER_REPO_PATH}/main.yml \ | ||
-e "ANSIBLE_REPO_PATH=${DEPLOYER_REPO_PATH}" \ | ||
-e "guid=${GUID}" \ | ||
-e "env_type=${ENVTYPE}" \ | ||
-e "key_name=${KEYNAME}" \ | ||
-e "subdomain_base_suffix=${BASESUFFIX}" \ | ||
-e "cloud_provider=${CLOUDPROVIDER}" \ | ||
-e "aws_region=${REGION}" \ | ||
-e "HostedZoneId=${HOSTZONEID}" \ | ||
-e "install_ipa_client=false" \ | ||
-e "repo_method=file" -e "own_repo_path=${REPO_PATH}" -e "repo_version=${REPO_VERSION}" \ | ||
-e "ANSIBLE_REPO_PATH=${DEPLOYER_REPO_PATH}" \ | ||
-e "software_to_deploy=none" | ||
---- | ||
|
||
=== To Delete an environment | ||
---- | ||
REGION=ap-southeast-2 | ||
KEYNAME=ocpkey | ||
GUID=devgenericdemo1 | ||
ENVTYPE="generic-demo-example" | ||
CLOUDPROVIDER=ec2 | ||
HOSTZONEID='Z3IHLWJZOU9SRT' | ||
BASESUFFIX='.example.opentlc.com' | ||
#To Destroy an Env | ||
ansible-playbook -i inventory/ ./configs/${ENVTYPE}/destroy_env.yml \ | ||
-e "guid=${GUID}" -e "env_type=${ENVTYPE}" -e "cloud_provider=${CLOUDPROVIDER}" -e "aws_region=${REGION}" \ | ||
-e "HostedZoneId=${HOSTZONEID}" -e "key_name=${KEYNAME}" -e "subdomain_base_suffix=${BASESUFFIX}" | ||
---- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
= generic-example config | ||
|
||
== Set up your "Secret" variables | ||
|
||
* You need to provide some credentials for deployments to work | ||
* Create a file called "env_secret_vars.yml" and put it in the | ||
./ansible/configs/CONFIGNAME/ directory. | ||
** At this point this file *has to be created* even if no vars from it are used. | ||
* You can choose to provide these values as extra vars (-e "var=value") in the | ||
command line if you prefer not to keep sensitive information in a file. | ||
|
||
.Example contents of "Secret" Vars file | ||
---- | ||
# ## Logon credentials for Red Hat Network | ||
# ## Required if using the subscription component | ||
# ## of this playbook. | ||
rhel_subscription_user: '' | ||
rhel_subscription_pass: '' | ||
# | ||
# ## LDAP Bind Password | ||
bindPassword: '' | ||
# | ||
# ## Desired admin name and password if required | ||
admin_user: "" | ||
admin_user_password: "" | ||
# | ||
# ## AWS Credentials. This is required. | ||
aws_access_key_id: "" | ||
aws_secret_access_key: "" | ||
#If using repo_method: satellite, you must set these values as well. | ||
satellite_url: https://satellite.example.com | ||
satellite_org: Sat_org_name | ||
satellite_activationkey: "rhel7basic" | ||
---- | ||
|
||
== Review the Env_Type variable file | ||
|
||
* This file link:./env_vars.yml[./env_vars.yml] contains all the variables you | ||
need to define to control the deployment of your environment. | ||
|
||
|
||
== Running Ansible Playbook | ||
|
||
You can run the playbook with the following arguments to overwrite the default variable values: | ||
[source,bash] | ||
---- | ||
REGION=ap-southeast-2 | ||
KEYNAME=ocpkey | ||
GUID=3tierapp | ||
ENVTYPE="three-tier-app" | ||
CLOUDPROVIDER=ec2 | ||
HOSTZONEID='Z3IHLWJZOU9SRT' | ||
REPO_PATH='https://admin.example.com/repos/ocp/3.5/' | ||
BASESUFFIX='.example.opentlc.com' | ||
DEPLOYER_REPO_PATH=`pwd` | ||
ansible-playbook \ | ||
-i ${DEPLOYER_REPO_PATH}/inventory/${CLOUDPROVIDER}.py ${DEPLOYER_REPO_PATH}/main.yml \ | ||
-e "ANSIBLE_REPO_PATH=${DEPLOYER_REPO_PATH}" \ | ||
-e "guid=${GUID}" \ | ||
-e "env_type=${ENVTYPE}" \ | ||
-e "key_name=${KEYNAME}" \ | ||
-e "subdomain_base_suffix=${BASESUFFIX}" \ | ||
-e "cloud_provider=${CLOUDPROVIDER}" \ | ||
-e "aws_region=${REGION}" \ | ||
-e "HostedZoneId=${HOSTZONEID}" \ | ||
-e "install_ipa_client=false" \ | ||
-e "repo_method=file" -e "own_repo_path=${REPO_PATH}" -e "repo_version=${REPO_VERSION}" \ | ||
-e "software_to_deploy=none" | ||
---- | ||
|
||
=== To Delete an environment | ||
---- | ||
REGION=ap-southeast-2 | ||
KEYNAME=ocpkey | ||
GUID=devgenericdemo1 | ||
ENVTYPE="three-tier-app" | ||
CLOUDPROVIDER=ec2 | ||
HOSTZONEID='Z3IHLWJZOU9SRT' | ||
BASESUFFIX='.example.opentlc.com' | ||
#To Destroy an Env | ||
ansible-playbook -i inventory/${CLOUDPROVIDER}.py ./configs/${ENVTYPE}/destroy_env.yml \ | ||
-e "guid=${GUID}" -e "env_type=${ENVTYPE}" -e "cloud_provider=${CLOUDPROVIDER}" -e "aws_region=${REGION}" \ | ||
-e "HostedZoneId=${HOSTZONEID}" -e "key_name=${KEYNAME}" -e "subdomain_base_suffix=${BASESUFFIX}" | ||
---- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
- name: Delete Infrastructure | ||
hosts: localhost | ||
connection: local | ||
gather_facts: False | ||
become: no | ||
vars_files: | ||
- "./env_vars.yml" | ||
- "./env_secret_vars.yml" | ||
|
||
tasks: | ||
- name: Destroy cloudformation template | ||
cloudformation: | ||
stack_name: "{{project_tag}}" | ||
state: "absent" | ||
region: "{{aws_region}}" | ||
disable_rollback: false | ||
template: "{{ ANSIBLE_REPO_PATH }}/workdir/ec2_cloud_template.{{ env_type }}.{{ guid }}.json" | ||
tags: | ||
Stack: "project {{env_type}}-{{ guid }}" | ||
tags: [ destroying, destroy_cf_deployment ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
## TODO: What variables can we strip out of here to build complex variables? | ||
## i.e. what can we add into group_vars as opposed to config_vars? | ||
## Example: We don't really need "subdomain_base_short". If we want to use this, | ||
## should just toss in group_vars/all. | ||
### Also, we should probably just create a variable reference in the README.md | ||
### For now, just tagging comments in line with configuration file. | ||
|
||
### Vars that can be removed: | ||
# use_satellite: true | ||
# use_subscription_manager: false | ||
# use_own_repos: false | ||
|
||
###### VARIABLES YOU SHOULD CONFIGURE FOR YOUR DEPLOYEMNT | ||
###### OR PASS as "-e" args to ansible-playbook command | ||
|
||
### Common Host settings | ||
|
||
repo_method: file # Other Options are: file, satellite and rhn | ||
|
||
|
||
# Do you want to run a full yum update | ||
update_packages: false | ||
#If using repo_method: satellite, you must set these values as well. | ||
# satellite_url: https://satellite.example.com | ||
# satellite_org: Sat_org_name | ||
# satellite_activationkey: "rhel7basic" | ||
|
||
## guid is the deployment unique identifier, it will be appended to all tags, | ||
## files and anything that identifies this environment from another "just like it" | ||
guid: defaultguid | ||
# This is where the ssh_config file will be created, this file is used to | ||
# define the communication method to all the hosts in the deployment | ||
deploy_local_ssh_config_location: "{{ANSIBLE_REPO_PATH}}/workdir" | ||
|
||
install_bastion: true | ||
install_common: true | ||
software_to_deploy: none | ||
|
||
repo_version: "3.5" | ||
|
||
### If you want a Key Pair name created and injected into the hosts, | ||
# set `set_env_authorized_key` to true and set the keyname in `env_authorized_key` | ||
# you can use the key used to create the environment or use your own self generated key | ||
# if you set "use_own_key" to false your PRIVATE key will be copied to the bastion. (This is {{key_name}}) | ||
use_own_key: true | ||
env_authorized_key: "{{guid}}key" | ||
ansible_ssh_private_key_file: ~/.ssh/{{key_name}}.pem | ||
set_env_authorized_key: true | ||
|
||
# Is this running from Red Hat Ansible Tower | ||
tower_run: false | ||
|
||
### AWS EC2 Environment settings | ||
|
||
### Route 53 Zone ID (AWS) | ||
# This is the Route53 HostedZoneId where you will create your Public DNS entries | ||
# This only needs to be defined if your CF template uses route53 | ||
HostedZoneId: Z3IHLWJZOU9SRT | ||
# The region to be used, if not specified by -e in the command line | ||
aws_region: ap-southeast-2 | ||
# The key that is used to | ||
key_name: "default_key_name" | ||
|
||
## Networking (AWS) | ||
subdomain_base_short: "{{ guid }}" | ||
subdomain_base_suffix: ".example.opentlc.com" | ||
subdomain_base: "{{subdomain_base_short}}{{subdomain_base_suffix}}" | ||
|
||
## Environment Sizing | ||
|
||
bastion_instance_type: "t2.medium" | ||
support_instance_type: "t2.medium" | ||
|
||
frontend_instance_type: "t2.small" | ||
app_instance_type: "{{frontend_instance_type}}" | ||
appdb_instance_type: "{{frontend_instance_type}}" | ||
|
||
support_instance_count: 1 | ||
|
||
frontend_instance_count: 1 | ||
app_instance_count: 2 | ||
appdb_instance_count: 1 | ||
|
||
###### VARIABLES YOU SHOULD ***NOT*** CONFIGURE FOR YOUR DEPLOYEMNT | ||
###### You can, but you usually wouldn't need to. | ||
ansible_ssh_user: ec2-user | ||
remote_user: ec2-user | ||
|
||
common_packages: | ||
- python | ||
- unzip | ||
- bash-completion | ||
- tmux | ||
- bind-utils | ||
- wget | ||
- git | ||
- vim-enhanced | ||
- at | ||
- ansible | ||
|
||
rhel_repos: | ||
- rhel-7-server-rpms | ||
- rhel-7-server-extras-rpms | ||
- epel-release-latest-7 | ||
## Currently there is no NFS created for this Environment - See ocp-workshop for clues. | ||
# ## NFS Server settings | ||
# nfs_vg: nfsvg | ||
# nfs_pvs: /dev/xvdb | ||
# nfs_export_path: /srv/nfs | ||
# | ||
# nfs_shares: | ||
# - es-storage | ||
# - user-vols | ||
# - jenkins | ||
# - nexus | ||
# - nexus2 | ||
|
||
project_tag: "{{ env_type }}-{{ guid }}" | ||
create_internal_dns_entries: true | ||
zone_internal_dns: "{{guid}}.internal." | ||
chomped_zone_internal_dns: "{{guid}}.internal" | ||
zone_public_dns: "{{subdomain_base}}." | ||
cloudapps_dns: '*.apps.{{subdomain_base}}.' | ||
frontend_public_dns: "frontendlb.{{subdomain_base}}." | ||
#tower_public_dns: "tower.{{subdomain_base}}." | ||
bastion_public_dns: "bastion.{{subdomain_base}}." | ||
bastion_public_dns_chomped: "bastion.{{subdomain_base}}" | ||
vpcid_cidr_block: "192.168.0.0/16" | ||
vpcid_name_tag: "{{subdomain_base}}" | ||
|
||
az_1_name: "{{ aws_region }}a" | ||
az_2_name: "{{ aws_region }}b" | ||
|
||
subnet_private_1_cidr_block: "192.168.2.0/24" | ||
subnet_private_1_az: "{{ az_2_name }}" | ||
subnet_private_1_name_tag: "{{subdomain_base}}-private" | ||
|
||
subnet_private_2_cidr_block: "192.168.1.0/24" | ||
subnet_private_2_az: "{{ az_1_name }}" | ||
subnet_private_2_name_tag: "{{subdomain_base}}-private" | ||
|
||
subnet_public_1_cidr_block: "192.168.10.0/24" | ||
subnet_public_1_az: "{{ az_1_name }}" | ||
subnet_public_1_name_tag: "{{subdomain_base}}-public" | ||
|
||
subnet_public_2_cidr_block: "192.168.20.0/24" | ||
subnet_public_2_az: "{{ az_2_name }}" | ||
subnet_public_2_name_tag: "{{subdomain_base}}-public" | ||
|
||
dopt_domain_name: "{{ aws_region }}.compute.internal" | ||
|
||
rtb_public_name_tag: "{{subdomain_base}}-public" | ||
rtb_private_name_tag: "{{subdomain_base}}-private" | ||
|
||
|
||
cf_template_description: "{{ env_type }}-{{ guid }} Ansible Agnostic Deployer " |
Oops, something went wrong.