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=19.03 DOCKER_COMPOSE_VERSION=1.26.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 # Drop Nova injected hook that for forbids direct root login AUTHORIZED_KEYS=$(grep -o ssh-rsa.* /root/.ssh/authorized_keys) echo $AUTHORIZED_KEYS > /root/.ssh/authorized_keys } 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_install_and_configure () { export DEBIAN_FRONTEND=noninteractive 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/simulators/pnf-simulator } start_pnf_simulator () { cd ~/pnf-simulator/pnfsimulator # Add registry address to Onap image; by default locally built one is used sed -i 's/image: onap/image: nexus3.onap.org:10003\/onap/' docker-compose.yml docker-compose up -d } start_netconf_simulator () { cd ~/pnf-simulator/netconfsimulator # Add registry address to Onap image; by default locally built one is used sed -i 's/image: onap/image: nexus3.onap.org:10003\/onap/' docker-compose.yml 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 ] }