-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·91 lines (78 loc) · 3.54 KB
/
deploy.sh
File metadata and controls
executable file
·91 lines (78 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
# Usage:
# deploy.sh [password]
#
# password is the password for the OpenStack tenancy for this cluster
#
# If the password is not supplied, the user will be prompted for it.
# (this prevents the password being stored in your history, but still
# allows scripted execution in pipelines to work)
openshift_openstack_password="$1"
multinetwork=$(python -c "import yaml;d=yaml.load(open('environment.yaml'));print(d['parameter_defaults']['multinetwork'])" |
tr '[:upper:]' '[:lower:]')
extra_gateway=$(python -c "import yaml;d=yaml.load(open('environment.yaml'));print(d['parameter_defaults']['deploy_extra_gateway'])" |
tr '[:upper:]' '[:lower:]')
if [[ $multinetwork == true ]]; then
purpose_ident=$(python -c "import yaml;d=yaml.load(open('environment.yaml'));print(d['parameter_defaults']['net2_external_network'].replace('_','-'))" |
tr '[:upper:]' '[:lower:]')
fi
deploy_portworx_storage=$(python -c "import yaml;d=yaml.load(open('environment.yaml')); print(d['parameter_defaults']['deploy_portworx_storage'] if 'deploy_portworx_storage' in d['parameter_defaults'] else 'False')" |
tr '[:upper:]' '[:lower:]')
function validateSetup() {
if [[ -z ${OS_PROJECT_ID} ]]; then
echo -e "\nYou must source your OpenStack RC file so we can access the OpenStack API\n"
exit 1
fi
}
function getPassword() {
if [[ -z ${openshift_openstack_password} ]]; then
echo -e "Please provide a password for the OpenStack tenancy OpenShift will be deployed to..."
read -s openshift_openstack_password
echo -e "Starting deployment..."
fi
}
function getDataFromOpenstackProject() {
controlplane_ip=$(python -c "import yaml;d=yaml.load(open('environment.yaml'));print(d['parameter_defaults']['controlplane_floating_ip'])" | xargs -I % openstack floating ip show % -c floating_ip_address -f value)
dataplane_ip=$(python -c "import yaml;d=yaml.load(open('environment.yaml'));print(d['parameter_defaults']['dataplane_floating_ip'])" | xargs -I % openstack floating ip show % -c floating_ip_address -f value)
if [[ -z ${controlplane_ip} || -z ${dataplane_ip} ]]; then
echo -e "\nControlplane or Dataplane IP could not be retrieved, are the IDs in your environment file correct and are you authenticating correctly?\n"
exit 1
fi
}
function setupHeatTemplate() {
ansible-playbook ./setup-heat-templates.yaml \
--extra-vars "multinetwork=${multinetwork}" \
--extra-vars "extra_gateway=${extra_gateway}" \
--extra-vars "purpose_ident=${purpose_ident}"
}
function addPortworxStorage() {
ansible-playbook ./add-portworx.yaml \
--extra-vars "deploy_portworx_storage=${deploy_portworx_storage}" \
--extra-vars "purpose_ident=${purpose_ident}" \
--extra-vars "multinetwork=${multinetwork}"
}
function deployHeatStack() {
openstack stack create -f yaml -t openshift.yaml openshift-${OS_PROJECT_NAME} \
-e rhel_reg_creds.yaml \
-e environment.yaml \
--parameter controlplane_ip="${controlplane_ip}" \
--parameter dataplane_ip="${dataplane_ip}" \
--parameter time="$(date)" \
--parameter os_auth_url="${OS_AUTH_URL}" \
--parameter os_tenant_id="${OS_PROJECT_ID}" \
--parameter os_tenant_name="${OS_PROJECT_NAME}" \
--parameter os_region="${OS_REGION_NAME}" \
--parameter os_domain_id="Default" \
--parameter openshift_openstack_password="${openshift_openstack_password}" \
--wait
}
function showBastionIp() {
openstack stack output show openshift-${OS_PROJECT_NAME} --all
}
validateSetup
getPassword
getDataFromOpenstackProject
setupHeatTemplate
addPortworxStorage
deployHeatStack
showBastionIp