summaryrefslogtreecommitdiffstats
path: root/boot/dcae_install.sh
blob: 8ec7edbd29ca92bbcfbaf058b2291f8899d71bf3 (plain)
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/bin/bash

# Read configuration files
NEXUS_REPO=$(cat /opt/config/nexus_repo.txt)
ARTIFACTS_VERSION=$(cat /opt/config/artifacts_version.txt)
DNS_IP_ADDR=$(cat /opt/config/dns_ip_addr.txt)
CLOUD_ENV=$(cat /opt/config/cloud_env.txt)
GERRIT_BRANCH=$(cat /opt/config/gerrit_branch.txt)

BASE=$(cat /opt/config/dcae_base_environment.txt)
PUBLIC_NET_ID=$(cat /opt/config/public_net_id.txt)
ZONE=$(cat /opt/config/dcae_zone.txt)
STATE=$(cat /opt/config/dcae_state.txt)
HORIZON_URL=$(cat /opt/config/horizon_url.txt)
OPENSTACK_USER=$(cat /opt/config/openstack_user.txt)
OPENSTACK_PASSWORD=$(cat /opt/config/openstack_password.txt)
OPENSTACK_KEYNAME=$(cat /opt/config/key_name.txt)"_"$(cat /opt/config/rand_str.txt)"_dcae"
OPENSTACK_PUBKEY=$(cat /opt/config/pub_key.txt)
OPENSTACK_AUTH_METHOD=$(cat /opt/config/openstack_auth_method.txt)
KEYSTONE_URL=$(cat /opt/config/keystone_url.txt)
OPENSTACK_TENANT_ID=$(cat /opt/config/tenant_id.txt)
OPENSTACK_TENANT_NAME=OPEN-ECOMP
OPENSTACK_REGION=$(cat /opt/config/openstack_region.txt)
OPENSTACK_PRIVATE_NETWORK=$(cat /opt/config/openstack_private_network_name.txt)

NEXUS_URL_ROOT=$(cat /opt/config/nexus_repo_root.txt)
NEXUS_USER=$(cat /opt/config/nexus_username.txt)
NEXUS_PASSWORD=$(cat /opt/config/nexus_password.txt)
NEXUS_URL_SNAPSHOTS=$(cat /opt/config/nexus_url_snapshots.txt)
DOCKER_REGISTRY=$(cat /opt/config/nexus_docker_repo.txt)
DOCKER_VERSION=$(cat /opt/config/docker_version.txt)
DCAE_CODE_VERSION=$(cat /opt/config/dcae_code_version.txt)

DCAE_IP_ADDR=$(cat /opt/config/dcae_ip_addr.txt)
DCAE_COLL_IP_ADDR=$(cat /opt/config/dcae_coll_ip_addr.txt)
DCAE_DB_IP_ADDR=$(cat /opt/config/dcae_db_ip_addr.txt)
DCAE_HDP1_IP_ADDR=$(cat /opt/config/dcae_hdp1_ip_addr.txt)
DCAE_HDP2_IP_ADDR=$(cat /opt/config/dcae_hdp2_ip_addr.txt)
DCAE_HDP3_IP_ADDR=$(cat /opt/config/dcae_hdp3_ip_addr.txt)

if [[ $CLOUD_ENV != "rackspace" ]]
then
	# Add host name to /etc/host to avoid warnings in openstack images
	echo 127.0.0.1 $(hostname) >> /etc/hosts
fi

# Set private IP in /etc/network/interfaces manually in the presence of public interface
# Some VM images don't add the private interface automatically, we have to do it during the component installation
if [[ $CLOUD_ENV == "openstack_nofloat" ]]
then
	CIDR=$(cat /opt/config/oam_network_cidr.txt)
	BITMASK=$(echo $CIDR | cut -d"/" -f2)

	# Compute the netmask based on the network cidr
	if [[ $BITMASK == "8" ]]
	then
		NETMASK=255.0.0.0
	elif [[ $BITMASK == "16" ]]
	then
		NETMASK=255.255.0.0
	elif [[ $BITMASK == "24" ]]
	then
		NETMASK=255.255.255.0
	fi

	echo "auto eth1" >> /etc/network/interfaces
	echo "iface eth1 inet static" >> /etc/network/interfaces
	echo "    address $DCAE_IP_ADDR" >> /etc/network/interfaces
	echo "    netmask $NETMASK" >> /etc/network/interfaces
	ifup eth1
fi

# Download dependencies
add-apt-repository -y ppa:openjdk-r/ppa
apt-get update
apt-get install -y apt-transport-https ca-certificates wget make openjdk-8-jdk git ntp ntpdate

# Download scripts from Nexus
curl -k $NEXUS_REPO/org.openecomp.demo/boot/$ARTIFACTS_VERSION/dcae_vm_init.sh -o /opt/dcae_vm_init.sh
curl -k $NEXUS_REPO/org.openecomp.demo/boot/$ARTIFACTS_VERSION/dcae_serv.sh -o /opt/dcae_serv.sh
chmod +x /opt/dcae_vm_init.sh
chmod +x /opt/dcae_serv.sh
mv /opt/dcae_serv.sh /etc/init.d
update-rc.d dcae_serv.sh defaults

# Download and install docker-engine and docker-compose
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
apt-get install -y --allow-unauthenticated docker-engine

mkdir /opt/docker
curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
chmod +x /opt/docker/docker-compose

# DNS IP address configuration
echo "nameserver "$DNS_IP_ADDR >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u

# Clone Gerrit repository
cd /opt
git clone -b $GERRIT_BRANCH --single-branch http://gerrit.onap.org/r/dcae/demo/startup/controller.git dcae-startup-vm-controller

# Build a configuration file for the DCAE Controller.
cd /opt/dcae-startup-vm-controller
mkdir -p /opt/app/dcae-controller
cat > /opt/app/dcae-controller/config.yaml << EOF_CONFIG
BASE: $BASE
ZONE: $ZONE
DNS-IP-ADDR=$DNS_IP_ADDR
STATE: $STATE
DCAE-VERSION: $DCAE_CODE_VERSION
HORIZON-URL: $HORIZON_URL/$OPENSTACK_USER
KEYSTONE-URL: $KEYSTONE_URL
OPENSTACK-TENANT-ID: $OPENSTACK_TENANT_ID
OPENSTACK-TENANT-NAME: $OPENSTACK_TENANT_NAME
OPENSTACK-REGION: $OPENSTACK_REGION
OPENSTACK-PRIVATE-NETWORK: $OPENSTACK_PRIVATE_NETWORK
OPENSTACK-USER: $OPENSTACK_USER
OPENSTACK-PASSWORD: $OPENSTACK_PASSWORD
OPENSTACK-AUTH-METHOD: $OPENSTACK_AUTH_METHOD
OPENSTACK-KEYNAME: $OPENSTACK_KEYNAME
OPENSTACK-PUBKEY: $OPENSTACK_PUBKEY

NEXUS-URL-ROOT: $NEXUS_URL_ROOT
NEXUS-USER: $NEXUS_USER
NEXUS-PASSWORD: $NEXUS_PASSWORD
NEXUS-URL-SNAPSHOTS: $NEXUS_URL_SNAPSHOTS
NEXUS-RAWURL: $NEXUS_REPO

DOCKER-REGISTRY: $DOCKER_REGISTRY
DOCKER-VERSION: $DOCKER_VERSION

GIT-MR-REPO: http://gerrit.onap.org/r/dcae/demo/startup/message-router.git

public_net_id: $PUBLIC_NET_ID
dcae_ip_addr: $DCAE_IP_ADDR
dcae_pstg00_ip_addr: $DCAE_DB_IP_ADDR
dcae_coll00_ip_addr: $DCAE_COLL_IP_ADDR
dcae_cdap00_ip_addr: $DCAE_HDP1_IP_ADDR
dcae_cdap01_ip_addr: $DCAE_HDP2_IP_ADDR
dcae_cdap02_ip_addr: $DCAE_HDP3_IP_ADDR

EOF_CONFIG

# Add floating IP section to DCAE config file for OpenStack deployments that use floating IPs
if [[ $CLOUD_ENV == "openstack" ]]
then
	# Read floating IP mapping
	DCAE_FLOAT_IP_ADDR=$(cat /opt/config/dcae_float_ip.txt)
	DCAE_COLL_FLOAT_IP=$(cat /opt/config/dcae_coll_float_ip.txt)
	DCAE_DB_FLOAT_IP=$(cat /opt/config/dcae_db_float_ip.txt)
	DCAE_HDP1_FLOAT_IP=$(cat /opt/config/dcae_hdp1_float_ip.txt)
	DCAE_HDP2_FLOAT_IP=$(cat /opt/config/dcae_hdp2_float_ip.txt)
	DCAE_HDP3_FLOAT_IP=$(cat /opt/config/dcae_hdp3_float_ip.txt)

	cat >> /opt/app/dcae-controller/config.yaml << EOF_CONFIG

	dcae_float_ip_addr: $DCAE_FLOAT_IP_ADDR
	dcae_pstg00_float_ip_addr: $DCAE_DB_FLOAT_IP
	dcae_coll00_float_ip_addr: $DCAE_COLL_FLOAT_IP
	dcae_cdap00_float_ip_addr: $DCAE_HDP1_FLOAT_IP
	dcae_cdap01_float_ip_addr: $DCAE_HDP2_FLOAT_IP
	dcae_cdap02_float_ip_addr: $DCAE_HDP3_FLOAT_IP
EOF_CONFIG
fi

# Run docker containers
cd /opt
./dcae_vm_init.sh