aboutsummaryrefslogtreecommitdiffstats
path: root/test/ete/labs/huawei/onap-oom.yaml
blob: 11767cf637312c4d176ba2e3ebf7f02529c6cffc (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
heat_template_version: 2015-10-15
description: ONAP on Kubernetes using OOM

parameters:
  public_net_id:
    type: string
    description: The ID of the Public network for floating IP address allocation

  docker_proxy:
    type: string

  apt_proxy:
    type: string

resources:
  rancher_vm:
    type: OS::Nova::Server
    properties:
      name: rancher
      image: xenial
      flavor: m1.medium
      key_name: onap_key
      networks:
      - network: { get_param: public_net_id }
      user_data_format: RAW
      user_data:
        str_replace:
          params:
            __docker_proxy__: { get_param: docker_proxy }
            __apt_proxy__: { get_param: apt_proxy }
          template: |
            #!/bin/bash -x
            echo `hostname -I` `hostname` >> /etc/hosts
            mkdir -p /etc/docker
            cat > /etc/docker/daemon.json <<EOF
            {
              "insecure-registries" : ["__docker_proxy__"]
            }
            EOF
            cat > /etc/apt/apt.conf.d/30proxy<<EOF
            Acquire::http { Proxy "http://__apt_proxy__"; };
            Acquire::https::Proxy "DIRECT";
            EOF
            apt-get -y update
            apt-get -y install docker.io
            usermod -aG docker ubuntu
            docker run --restart unless-stopped -d -p 8080:8080 rancher/server:v1.6.10

  k8s_vm:
    type: OS::Nova::Server
    properties:
      name: k8s
      image: xenial
      flavor: m1.xxlarge
      key_name: onap_key
      networks:
      - network: { get_param: public_net_id }
      user_data_format: RAW
      user_data:
        str_replace:
          params:
            __docker_proxy__: { get_param: docker_proxy }
            __apt_proxy__: { get_param: apt_proxy }
            __rancher_ip_addr__: { get_attr: [rancher_vm, first_address] }
          template: |
            #!/bin/bash -x
            mkdir -p /opt/config
            echo "__rancher_ip_addr__" > /opt/config/rancher_ip_addr.txt
            echo `hostname -I` `hostname` >> /etc/hosts
            mkdir -p /etc/docker
            cat > /etc/docker/daemon.json <<EOF
            {
              "insecure-registries" : ["__docker_proxy__"]
            }
            EOF
            cat > /etc/apt/apt.conf.d/30proxy<<EOF
            Acquire::http { Proxy "http://__apt_proxy__"; };
            Acquire::https::Proxy "DIRECT";
            EOF
            apt-get -y update
            apt-get -y install jq

            cd ~

            # install docker 1.12
            curl -s https://releases.rancher.com/install-docker/1.12.sh | sh
            usermod -aG docker ubuntu

            # install kubernetes 1.8.6
            curl -s -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.6/bin/linux/amd64/kubectl
            chmod +x ./kubectl
            sudo mv ./kubectl /usr/local/bin/kubectl
            mkdir ~/.kube

            # install helm 2.3
            wget -q http://storage.googleapis.com/kubernetes-helm/helm-v2.3.0-linux-amd64.tar.gz
            tar -zxvf helm-v2.3.0-linux-amd64.tar.gz
            sudo mv linux-amd64/helm /usr/local/bin/helm

            # Fix virtual memory allocation for onap-log:elasticsearch:
            sysctl -w vm.max_map_count=262144

            # install rancher agent
            echo export RANCHER_IP=__rancher_ip_addr__ > api-keys-rc
            source api-keys-rc

            until curl -s -o projects.json -H "Accept: application/json" http://$RANCHER_IP:8080/v2-beta/projects; do
              sleep 5
            done
            OLD_PID=$(jq -r '.data[0].id' projects.json)

            curl -s -H "Accept: application/json" -H "Content-Type: application/json" -d '{"accountId":"1a1"}' http://$RANCHER_IP:8080/v2-beta/apikeys | tee apikeys.json
            echo export RANCHER_ACCESS_KEY=`jq -r '.publicValue' apikeys.json` >> api-keys-rc
            echo export RANCHER_SECRET_KEY=`jq -r '.secretValue' apikeys.json` >> api-keys-rc
            source api-keys-rc

            curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X DELETE -H 'Content-Type: application/json' "http://$RANCHER_IP:8080/v2-beta/projects/$OLD_PID"

            until [ ! -z "$TEMPLATE_ID" ] && [ "$TEMPLATE_ID" != "null" ]; do
              sleep 5
              curl -s -H "Accept: application/json" http://$RANCHER_IP:8080/v2-beta/projectTemplates?name=Kubernetes | tee projectTemplatesKubernetes.json
              TEMPLATE_ID=$(jq -r '.data[0].id' projectTemplatesKubernetes.json)
            done

            curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" -X POST -H 'Content-Type: application/json' -d '{ "name":"oom", "projectTemplateId":"'$TEMPLATE_ID'" }' "http://$RANCHER_IP:8080/v2-beta/projects" | tee project.json
            PID=`jq -r '.id' project.json`
            echo export RANCHER_URL=http://$RANCHER_IP:8080/v1/projects/$PID >> api-keys-rc
            source api-keys-rc

            until [ $(jq -r '.state' project.json) == "active" ]; do
              sleep 1
              curl -s -H "Accept: application/json" http://$RANCHER_IP:8080/v1/projects/$PID | tee project.json
            done

            TID=$(curl -s -X POST -H "Accept: application/json" -H "Content-Type: application/json" http://$RANCHER_IP:8080/v1/projects/$PID/registrationTokens | jq -r '.id')
            touch token.json
            while [ $(jq -r .command token.json | wc -c) -lt 10 ]; do
                sleep 1
                curl -s -X GET -H "Accept: application/json" http://$RANCHER_IP:8080/v1/projects/$PID/registrationToken/$TID | tee token.json
            done
            CMD=$(jq -r .command token.json)
            eval $CMD

            # download rancher CLI
            wget -q https://github.com/rancher/cli/releases/download/v0.6.7/rancher-linux-amd64-v0.6.7.tar.xz
            unxz rancher-linux-amd64-v0.6.7.tar.xz
            tar xvf rancher-linux-amd64-v0.6.7.tar

            # Clone OOM:
            cd ~
            git clone -b amsterdam http://gerrit.onap.org/r/oom

            # Update values.yaml to point to docker-proxy instead of nexus3:
            cd ~/oom/kubernetes
            perl -p -i -e 's/nexus3.onap.org:10001/__docker_proxy__/g' `find ./ -name values.yaml`