create log directory before use
[yaml_builds.git] / tools / 1prom-gen.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.        #
4 #                                                                            #
5 # Licensed under the Apache License, Version 2.0 (the "License"); you may    #
6 # not use this file except in compliance with the License.                   #
7 #                                                                            #
8 # You may obtain a copy of the License at                                    #
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, WITHOUT  #
13 # 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
18
19 # re-generate prom config
20
21 set -x
22 TIMESTAMP=$(date +"%Y%m%d%H%M")
23 echo "logging to /var/log/yaml_builds/1prom-gen_$TIMESTAMP.log"
24 mkdir -p /var/log/yaml_builds
25 exec > /var/log/yaml_builds/1prom-gen_$TIMESTAMP.log
26 exec 2>&1
27
28 source $(dirname $0)/setenv.sh
29
30 PROMENADE_IMAGE=quay.io/airshipit/promenade:009f3de7ecf6afcdd2783ac7a12470394d7dfab3
31
32 if [ -z "$AIRSHIP_TREASUREMAP" ]
33 then
34   echo "Please use https://git.openstack.org/openstack/airship-treasuremap to clone airship_treasuremap. Also set AIRSHIP_TREASUREMAP to it."
35   exit -1
36 fi
37
38 if [ -z "$1" ]
39 then
40   echo "Please pass site name as command line argument"
41   exit -2
42 else
43   SITE=${SITE:-$1}
44   echo "SITE=$SITE"
45 fi
46 source $(dirname $0)/env_$SITE.sh
47
48
49 # Check that we are root
50 if [[ $(whoami) != "root" ]]
51 then
52   echo "Must be root to run $0"
53   exit -1
54 fi
55
56 if [ -z "$YAML_BUILDS" ]
57 then
58   echo "Please set YAML_BUILDS"
59   exit -3
60 else
61   export WORKSPACE=$YAML_BUILDS
62   echo "WORKSPACE=$WORKSPACE"
63   cd $YAML_BUILDS
64 fi
65
66 install_docker() {
67    # Configure proxy for Docker daemon
68    mkdir -p /etc/systemd/system/docker.service.d
69    mkdir -p /etc/docker
70
71 cat <<EOF > /etc/apt/sources.list.d/promenade-sources.list
72 deb http://apt.dockerproject.org/repo ubuntu-xenial main
73 EOF
74
75 #cat<<EOF > /etc/docker/daemon.json
76 #{
77 #  "insecure-registries": [
78 #    "artifacts-aic.atlantafoundry.com"
79 #  ],
80 #  "live-restore": true,
81 #  "storage-driver": "overlay2"
82 #}
83 #EOF
84
85 cat<<EOF > /etc/docker/daemon.json
86 {
87   "live-restore": true,
88   "storage-driver": "overlay2"
89 }
90 EOF
91
92 #Set HTTPS Proxy Variable
93 cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
94 [Service]
95 Environment="HTTP_PROXY=http://one.proxy.att.com:8888"
96 EOF
97
98 #Set HTTPS Proxy Variable
99 cat <<EOF > /etc/systemd/system/docker.service.d/https-proxy.conf
100 [Service]
101 Environment="HTTPS_PROXY=http://one.proxy.att.com:8888"
102 EOF
103
104 apt-key add - <<"ENDKEY"
105 -----BEGIN PGP PUBLIC KEY BLOCK-----
106
107 mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
108 ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
109 mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
110 TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
111 dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
112 X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
113 HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
114 NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
115 hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
116 65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
117 zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
118 tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
119 Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
120 AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
121 Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
122 1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
123 uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
124 0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
125 L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
126 YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
127 7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
128 jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
129 HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
130 MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
131 TvBR8Q==
132 =Fm3p
133 -----END PGP PUBLIC KEY BLOCK-----
134 ENDKEY
135
136    apt-get update
137    apt-get install -y docker-engine=1.13.1-0~ubuntu-xenial socat=1.7.3.1-1
138    systemctl daemon-reload
139    systemctl restart docker || true
140 }
141
142 create_directories() {
143    mkdir -p ./tars/$SITE/configs/promenade
144    mkdir -p ./tars/$SITE/configs/promenade-bundle
145 }
146
147 get_site_config(){
148    $YAML_BUILDS/tools/pegleg.sh site -p /site -a /global collect ${SITE} -s /site/tars/$SITE/configs/promenade
149 }
150
151 gen_certs() {
152    docker run --env http_proxy=$http_proxy  --env https_proxy=$https_proxy --user 0 --rm -t -w /target -v $(pwd):/target ${PROMENADE_IMAGE} promenade generate-certs -o /target/tars/$SITE/configs/promenade /target/tars/$SITE/configs/promenade/*.yaml
153 }
154
155 gen_bundle(){
156    docker run --env http_proxy=$http_proxy  --env https_proxy=$https_proxy --user 0 --rm -t -w /target -v $(pwd):/target ${PROMENADE_IMAGE} promenade build-all --validators -o /target/tars/$SITE/configs/promenade-bundle /target/tars/$SITE/configs/promenade/*.yaml
157 }
158
159 create_scripts() {
160   KEYSTONE_IMAGE=$(grep "keystone_db_sync: docker.io" $AIRSHIP_TREASUREMAP/global/v4.0/software/config/versions.yaml | uniq | awk '{print $2}')
161   SHIPYARD_IMAGE=$(grep "shipyard_db_sync" $AIRSHIP_TREASUREMAP/global/v4.0/software/config/versions.yaml | uniq | awk '{print $2}')
162
163   DRYDOCK_PASSWORD=$(grep "^data:" $YAML_BUILDS/site/$SITE/secrets/passphrases/ucp_drydock_keystone_password.yaml | awk '{print $2}')
164   SHIPYARD_PASSWORD=$(grep "^data:" $YAML_BUILDS/site/$SITE/secrets/passphrases/ucp_shipyard_keystone_password.yaml | awk '{print $2}')
165   REGION_NAME=$SITE
166
167   cp $YAML_BUILDS/tools/deploy_site.sh $YAML_BUILDS/tars/$SITE/
168   sed -i -e "s,KEYSTONE_IMAGE=,KEYSTONE_IMAGE=$KEYSTONE_IMAGE,g" $YAML_BUILDS/tars/$SITE/deploy_site.sh
169   sed -i -e "s,SHIPYARD_IMAGE=,SHIPYARD_IMAGE=$SHIPYARD_IMAGE,g" $YAML_BUILDS/tars/$SITE/deploy_site.sh
170   sed -i -e "s/DRYDOCK_PASSWORD=/DRYDOCK_PASSWORD=$DRYDOCK_PASSWORD/g" $YAML_BUILDS/tars/$SITE/deploy_site.sh
171   sed -i -e "s/SHIPYARD_PASSWORD=/SHIPYARD_PASSWORD=$SHIPYARD_PASSWORD/g" $YAML_BUILDS/tars/$SITE/deploy_site.sh
172   sed -i -e "s/REGION_NAME=/REGION_NAME=$REGION_NAME/g" $YAML_BUILDS/tars/$SITE/deploy_site.sh
173   sed -i -e "s/{{yaml.genesis.host}}/$GENESIS_HOST/g" $YAML_BUILDS/tars/$SITE/deploy_site.sh
174
175   cp $YAML_BUILDS/tools/update_iptables.sh $YAML_BUILDS/tars/$SITE/
176   sed -i -e "s,HOST_INTERFACE=,HOST_INTERFACE=$HOST_INTERFACE,g" $YAML_BUILDS/tars/$SITE/update_iptables.sh
177   sed -i -e "s,PXE_INTERFACE=,PXE_INTERFACE=$PXE_INTERFACE,g" $YAML_BUILDS/tars/$SITE/update_iptables.sh
178
179   cp $YAML_BUILDS/tools/cleanup.sh $YAML_BUILDS/tars/$SITE/
180 }
181
182 prepare_tar(){
183    rm ./tars/promenade-bundle-$SITE.tar
184    tar cvf ./tars/promenade-bundle-$SITE.tar -C ./tars/$SITE .
185 }
186
187 #install_docker
188 create_directories
189 get_site_config
190 gen_certs
191 gen_bundle
192 create_scripts
193 prepare_tar