vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / src / aria / examples / clearwater / scripts / host / configure.sh
1 #!/bin/bash
2 # Licensed to the Apache Software Foundation (ASF) under one or more
3 # contributor license agreements.  See the NOTICE file distributed with
4 # this work for additional information regarding copyright ownership.
5 # The ASF licenses this file to You under the Apache License, Version 2.0
6 # (the "License"); you may not use this file except in compliance with
7 # the License.  You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 set -e
18
19 HOSTNAME=$(ctx node capabilities host properties hostname)
20
21 # Change hostname
22 OLD_HOSTNAME=$(hostname)
23 if [ "$OLD_HOSTNAME" != "$HOSTNAME" ]; then
24         hostname "$HOSTNAME"
25         echo "$HOSTNAME" > /etc/hostname
26         sed --in-place --expression "s/127.0.1.1\s\+$OLD_HOSTNAME/127.0.1.1 $HOSTNAME/" /etc/hosts
27 fi
28
29 ZONE=$(ctx service get_policy_by_type [ clearwater.Configuration ] properties zone)
30 GEOGRAPHICALLY_REDUNDANT=$(ctx service get_policy_by_type [ clearwater.Configuration ] properties geographically_redundant)
31 SITE_NAME=$(ctx service get_policy_by_type [ clearwater.Configuration ] properties site_name)
32 SECRET=$(ctx service get_policy_by_type [ clearwater.Configuration ] properties secret)
33
34 SMTP_HOSTNAME=$(ctx service get_node_by_type [ clearwater.Ellis ] get_outbound_relationship_by_name [ smtp ] target_node properties address)
35 SMTP_USERNAME=$(ctx service get_node_by_type [ clearwater.Ellis ] get_outbound_relationship_by_name [ smtp ] target_node capabilities smtp properties username)
36 SMTP_PASSWORD=$(ctx service get_node_by_type [ clearwater.Ellis ] get_outbound_relationship_by_name [ smtp ] target_node capabilities smtp properties password)
37
38 MAX_LOG_DIRECTORY_SIZE=$(ctx node capabilities host properties max_log_directory_size value)
39 REDUCE_CASSANDRA_MEM_USAGE=$(ctx node capabilities host properties reduce_cassandra_mem_usage)
40
41 PRIVATE_IP=$(ctx node attributes private_address)
42 PUBLIC_IP=$(ctx node attributes public_address)
43 PUBLIC_HOSTNAME=$(hostname)
44 # TODO: comma-separated list of all private IP addresses in group
45 ETCD_CLUSTER=$PRIVATE_IP
46
47 REPO_FILE=/etc/apt/sources.list.d/clearwater.list
48 REPO_LINE='deb http://repo.cw-ngv.com/stable binary/'
49 KEY_URL=http://repo.cw-ngv.com/repo_key
50
51
52 #
53 # Repository
54 #
55
56 if [ ! -f "$REPO_FILE" ]; then
57         echo "$REPO_LINE" > "$REPO_FILE"
58         curl --location "$KEY_URL" | apt-key add -
59 fi
60
61 apt update
62
63 if ! type aptdcon > /dev/null; then
64         # This will allow us to do concurrent installs
65         apt install aptdaemon --yes
66 fi
67
68 yes | aptdcon --hide-terminal --install clearwater-management
69
70
71 #
72 # DNS
73 #
74
75 S_CSCF_HOST="$PRIVATE_IP scscf.$PUBLIC_HOSTNAME # ARIA"
76 grep --quiet --fixed-strings "$S_CSCF_HOST" /etc/hosts || echo "$S_CSCF_HOST" >> /etc/hosts
77
78
79 #
80 # Local configuration
81 #
82
83 mkdir --parents /etc/clearwater
84 CONFIG_FILE=/etc/clearwater/local_config
85 echo "# Created by ARIA on $(date -u)" > "$CONFIG_FILE"
86
87 echo >> "$CONFIG_FILE"
88 echo "# Local IP configuration" >> "$CONFIG_FILE"
89 echo "local_ip=$PRIVATE_IP" >> "$CONFIG_FILE"
90 echo "public_ip=$PUBLIC_IP" >> "$CONFIG_FILE"
91 echo "public_hostname=$PUBLIC_HOSTNAME" >> "$CONFIG_FILE"
92 echo "etcd_cluster=$ETCD_CLUSTER" >> "$CONFIG_FILE"
93
94 if [ "$MAX_LOG_DIRECTORY_SIZE" != 0 ]; then
95         echo >> "$CONFIG_FILE"
96         echo "max_log_directory_size=$MAX_LOG_DIRECTORY_SIZE" >> "$CONFIG_FILE"
97 fi
98
99 if [ "$GEOGRAPHICALLY_REDUNDANT" = True ]; then
100         echo >> "$CONFIG_FILE"
101         echo "# Geographically redundant" >> "$CONFIG_FILE"
102         echo "local_site_name=$SITE_NAME" >> "$CONFIG_FILE"
103
104         # On the first Vellum node in the second site, you should set remote_cassandra_seeds to the
105         # IP address of a Vellum node in the first site.
106         #echo "remote_cassandra_seeds=" >> "$CONFIG_FILE"
107 fi
108
109
110 #
111 # Shared configuration
112 #
113
114 if [ "$GEOGRAPHICALLY_REDUNDANT" = True ]; then
115         SPROUT_HOSTNAME=sprout.$SITE_NAME.$ZONE
116         SPROUT_REGISTRATION_STORE=vellum.$SITE_NAME.$ZONE
117         HS_HOSTNAME=hs.$SITE_NAME.$ZONE:8888
118         HS_PROVISIONING_HOSTNAME=hs.$SITE_NAME.$ZONE:8889
119         RALF_HOSTNAME=ralf.$SITE_NAME.$ZONE:10888
120         RALF_SESSION_STORE=vellum.$ZONE
121         XDMS_HOSTNAME=homer.$SITE_NAME.$ZONE:7888
122         CHRONOS_HOSTNAME=vellum.$SITE_NAME.$ZONE
123         CASSANDRA_HOSTNAME=vellum.$SITE_NAME.$ZONE
124 else
125         VELLUM_IP=$PRIVATE_IP
126         HOMESTEAD_IP=$PRIVATE_IP
127         HOMER_IP=$PRIVATE_IP
128
129         SPROUT_HOSTNAME=$PUBLIC_HOSTNAME
130         SPROUT_REGISTRATION_STORE=$VELLUM_IP
131         HS_HOSTNAME=$HOMESTEAD_IP:8888
132         HS_PROVISIONING_HOSTNAME=$HOMESTEAD_IP:8889
133         RALF_HOSTNAME=
134         RALF_SESSION_STORE=
135         XDMS_HOSTNAME=$HOMER_IP:7888
136         CHRONOS_HOSTNAME=
137         CASSANDRA_HOSTNAME=
138 fi
139
140 mkdir --parents /etc/clearwater
141 CONFIG_FILE=/etc/clearwater/shared_config
142 echo "# Created by ARIA on $(date -u)" > "$CONFIG_FILE"
143
144 echo >> "$CONFIG_FILE"
145 echo "# Deployment definitions" >> "$CONFIG_FILE"
146 echo "home_domain=$ZONE" >> "$CONFIG_FILE"
147 echo "sprout_hostname=$SPROUT_HOSTNAME" >> "$CONFIG_FILE"
148 echo "sprout_registration_store=$SPROUT_REGISTRATION_STORE" >> "$CONFIG_FILE"
149 echo "hs_hostname=$HS_HOSTNAME" >> "$CONFIG_FILE"
150 echo "hs_provisioning_hostname=$HS_PROVISIONING_HOSTNAME" >> "$CONFIG_FILE"
151 echo "ralf_hostname=$RALF_HOSTNAME" >> "$CONFIG_FILE"
152 echo "ralf_session_store=$RALF_SESSION_STORE" >> "$CONFIG_FILE"
153 echo "xdms_hostname=$XDMS_HOSTNAME" >> "$CONFIG_FILE"
154 echo "chronos_hostname=$CHRONOS_HOSTNAME" >> "$CONFIG_FILE"
155 echo "cassandra_hostname=$CASSANDRA_HOSTNAME" >> "$CONFIG_FILE"
156
157 echo >> "$CONFIG_FILE"
158 echo "# Email server configuration" >> "$CONFIG_FILE"
159 echo "smtp_smarthost=$SMTP_HOSTNAME" >> "$CONFIG_FILE"
160 echo "smtp_username=$SMTP_USERNAME" >> "$CONFIG_FILE"
161 echo "smtp_password=$SMTP_PASSWORD" >> "$CONFIG_FILE"
162 echo "email_recovery_sender=clearwater@$ZONE" >> "$CONFIG_FILE"
163
164 echo >> "$CONFIG_FILE"
165 echo "# I-CSCF/S-CSCF configuration (used by Bono to proxy to Sprout)" >> "$CONFIG_FILE"
166 echo "upstream_hostname=scscf.$HOSTNAME" >> "$CONFIG_FILE"
167
168 echo >> "$CONFIG_FILE"
169 echo "# Keys" >> "$CONFIG_FILE"
170 echo "signup_key=$SECRET" >> "$CONFIG_FILE"
171 echo "turn_workaround=$SECRET" >> "$CONFIG_FILE"
172 echo "ellis_api_key=$SECRET" >> "$CONFIG_FILE"
173 echo "ellis_cookie_key=$SECRET" >> "$CONFIG_FILE"
174
175 if [ "$REDUCE_CASSANDRA_MEM_USAGE" = True ]; then
176         echo >> "$CONFIG_FILE"
177         echo "# $REDUCE_CASSANDRA_MEM_USAGE" >> "$CONFIG_FILE"
178         echo "reduce_cassandra_mem_usage=Y" >> "$CONFIG_FILE"
179 fi
180
181 # Copy to other hosts in etcd group
182 #yes | aptdcon --hide-terminal --install clearwater-config-manager
183 #cw-upload_shared_config