aboutsummaryrefslogtreecommitdiffstats
path: root/deployment/src/simulators_heat_template.yaml
blob: 253fcc735fa57a9dfc71a9293ff70d23998ec4aa (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
description: Heat template that deploys PnP PNF simulators
heat_template_version: '2013-05-23'
parameters:
  flavor_name: {description: Type of instance (flavor) to be used, label: Flavor,
                type: string}
  image_name: {description: Image to be used for compute instance, label: Image name
                                                                     or ID, type: string}
  key_name: {description: Public/Private key pair name, label: Key pair name, type: string}
  public_net_id: {description: Public network that enables remote connection to VNF,
                  label: Public network name or ID, type: string}
  private_net_id: {type: string, description: Private network id, label: Private network name or ID}
  private_subnet_id: {type: string, description: Private subnet id, label: Private subnetwork name or ID}
  proxy: {type: string, description: Proxy, label: Proxy, default: ""}
  vnf_id: {type: string, label: VNF ID, description: The VNF ID is provided by ONAP}
  vf_module_id: {type: string, label: vBase module ID, description: The vBase Module ID is provided by ONAP}
resources:
  PNF_PnP_simulator:
    type: OS::Nova::Server
    properties:
      key_name: { get_param: key_name }
      image: { get_param: image_name }
      flavor: { get_param: flavor_name }
      networks:
        - port: { get_resource: PNF_PnP_simulator_port0 }
      user_data_format: RAW
      user_data:
        str_replace:
          template: |
            #!/bin/bash

            set_versions () {
                    DOCKER_VERSION=17.03
                    DOCKER_COMPOSE_VERSION=1.22.0
            }

            set_proxy () {
              HTTP_PROXY=$proxy
              HTTPS_PROXY=$proxy
              http_proxy=$proxy
              https_proxy=$proxy
              export HTTP_PROXY=$proxy
              export HTTPS_PROXY=$proxy
              export http_proxy=$proxy
              export https_proxy=$proxy
            }

            enable_root_ssh () {
                sed -i 's/PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
                sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
                service sshd restart
                echo -e "arthur\narthur" | passwd root
            }

            update_os () {
                rm -rf /var/lib/apt/lists/*
                apt-get clean
                apt-get update
            }

            set_apt_get_proxy () {
            cat > /etc/apt/apt.conf.d/proxy.conf << EOF
              Acquire {
                HTTP::proxy "$proxy";
                HTTPS::proxy "$proxy";
              }
            EOF
            }

            docker_remove () {
                dnf -y remove docker \
                              docker-client \
                              docker-client-latest \
                              docker-common \
                              docker-latest \
                              docker-latest-logrotate \
                              docker-logrotate \
                              docker-selinux \
                              docker-engine-selinux \
                              docker-engine
            }

            docker_install_and_configure () {
                curl "https://releases.rancher.com/install-docker/$DOCKER_VERSION.sh" | sh
                mkdir -p /etc/systemd/system/docker.service.d/
                cat > /etc/systemd/system/docker.service.d/docker.conf << EOF
            [Service]
            ExecStart=
            ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry=nexus3.onap.org:10003
            Environment="HTTP_PROXY=$proxy"
            Environment="HTTPS_PROXY=$proxy"
            EOF
                systemctl daemon-reload
                systemctl restart docker
                apt-mark hold docker-ce
                docker login -u docker -p docker nexus3.onap.org:10003
            }
            docker_compose_install () {
                curl -L https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
                chmod +x /usr/local/bin/docker-compose
            }
            pnf_sim_file_checkout () {
                cd /root; git clone https://gerrit.onap.org/r/integration
            }

            start_pnf_simulator () {
               docker login -u docker -p docker nexus3.onap.org:10003
               cd ~/integration/test/mocks/pnfsimulator/pnfsimulator
               docker-compose up -d
            }

            start_netconf_simulator () {
               docker login -u docker -p docker nexus3.onap.org:10003
               cd ~/integration/test/mocks/pnfsimulator/netconfsimulator
               docker-compose up -d
            }

            set_versions
            set_proxy
            enable_root_ssh
            set_apt_get_proxy
            docker_install_and_configure
            docker_compose_install
            pnf_sim_file_checkout
            start_pnf_simulator
            start_netconf_simulator
          params:
            $proxy: { get_param: proxy }
  PNF_PnP_simulator_port0:
    type: OS::Neutron::Port
    properties:
      network_id: { get_param: private_net_id }
      security_groups:
        - default
      fixed_ips:
        - subnet_id: { get_param: private_subnet_id }
  PNF_PnP_simulator_public:
    type: OS::Neutron::FloatingIP
    properties:
      floating_network_id: { get_param: public_net_id }
      port_id: { get_resource: PNF_PnP_simulator_port0 }
outputs:
  PNF_PnP_simulator_private_ip:
    description: IP address of PNF_PnP_simulator in private network
    value: { get_attr: [ PNF_PnP_simulator, first_address ] }
  PNF_PnP_simulator_public_ip:
    description: Floating IP address of PNF_PnP_simulator in public network
    value: { get_attr: [ PNF_PnP_simulator_public, floating_ip_address ] }