...
Find below the description of the SO VM:
...
language | text |
---|
...
# MSO instantiation
mso_private_port:
...
type:
...
OS::Neutron::Port
...
properties:
network: { get_resource:
...
oam_onap
...
}
fixed_ips:
...
[{"subnet":
...
{
...
get_resource:
...
oam_onap_subnet
...
},
...
"ip_address":
...
{
...
get_param:
...
mso_ip_addr
...
}}]
...
mso_floating_ip:
...
type:
...
OS::Neutron::FloatingIP
...
properties:
floating_network_id:
...
{
...
get_param:
...
public_net_id
...
}
port_id:
...
{
...
get_resource:
...
mso_private_port
...
}
mso_vm:
...
type:
...
OS::Nova::Server
...
properties:
image: { get_param:
...
ubuntu_1604_image
...
}
flavor:
...
{
...
get_param:
...
flavor_large
...
}
name:
str_replace:
template: base-mso
params:
base: { get_param: vm_base_name
...
}
key_name:
...
{
...
get_resource:
...
vm_key
...
}
networks:
- port: { get_resource:
...
mso_private_port
...
}
user_data_format:
...
RAW
user_data:
...
str_replace:
...
params:
__nexus_repo__:
...
{
...
get_param:
...
nexus_repo
...
}
__nexus_docker_repo__:
...
{
...
get_param:
...
nexus_docker_repo
...
}
__nexus_username__:
...
{
...
get_param:
...
nexus_username
...
}
__nexus_password__:
...
{
...
get_param:
...
nexus_password
...
}
__openstack_username__:
...
{
...
get_param:
...
openstack_username
...
}
__openstack_tenant_id__:
...
{
...
get_param:
...
openstack_tenant_id
...
}
__openstack_api_key__:
...
{
...
get_param:
...
openstack_api_key
...
}
__openstack_region__:
...
{
...
get_param:
...
openstack_region
...
}
__keystone_url__:
...
{
...
get_param:
...
keystone_url
...
}
__dmaap_topic__:
...
{
...
get_param:
...
dmaap_topic
...
}
__artifacts_version__:
...
{
...
get_param:
...
artifacts_version
...
}
__dns_ip_addr__:
...
{
...
get_param:
...
dns_ip_addr
...
}
__docker_version__:
...
{
...
get_param:
...
docker_version
...
}
__gerrit_branch__:
...
{
...
get_param:
...
gerrit_branch
...
}
__cloud_env__:
...
{
...
get_param:
...
cloud_env
...
}
__external_dns__:
...
{
...
get_param:
...
external_dns
...
}
__mso_repo__:
...
{
...
get_param:
...
mso_repo
...
}
template: |
#!/bin/bash
...
# Create configuration files
mkdir -p /opt/config
echo "__nexus_repo__"
...
>
...
/opt/config/nexus_repo.txt
...
echo "__nexus_docker_repo__"
...
>
...
/opt/config/nexus_docker_repo.txt
...
echo "__nexus_username__"
...
>
...
/opt/config/nexus_username.txt
...
echo "__nexus_password__"
...
>
...
/opt/config/nexus_password.txt
...
echo "__artifacts_version__"
...
>
...
/opt/config/artifacts_version.txt
...
echo "__dns_ip_addr__"
...
>
...
/opt/config/dns_ip_addr.txt
...
echo "__dmaap_topic__"
...
>
...
/opt/config/dmaap_topic.txt
...
echo "__openstack_username__"
...
>
...
/opt/config/openstack_username.txt
...
echo "__openstack_tenant_id__"
...
>
...
/opt/config/tenant_id.txt
...
echo "__openstack_api_key__"
...
>
...
/opt/config/openstack_api_key.txt
...
echo "__openstack_region__"
...
>
...
/opt/config/openstack_region.txt
...
echo "__keystone_url__"
...
>
...
/opt/config/keystone.txt
...
echo "__docker_version__"
...
>
...
/opt/config/docker_version.txt
...
echo "__gerrit_branch__"
...
>
...
/opt/config/gerrit_branch.txt
...
echo "__cloud_env__"
...
>
...
/opt/config/cloud_env.txt
...
echo "__external_dns__"
...
>
...
/opt/config/external_dns.txt
...
echo "__mso_repo__"
...
>
...
/opt/config/remote_repo.txt
...
# Download and run install script
curl -k __nexus_repo__/org.onap.demo/boot/__artifacts_version__/mso_install.sh
...
-o
...
/opt/mso_install.sh
...
cd /opt
chmod +x mso_install.sh
./mso_install.sh
The function get_param gets parameter values defined in the Heat environment file, for example:
public_net_id: 03bd2691-2660-4f85-8913-65ef9c9b02df
ubuntu_1404_image: ubuntu-14-04-cloud-amd64
ubuntu_1604_image: ubuntu-16-04-cloud-amd64
flavor_small: m1.small
flavor_medium: m1.medium
flavor_large: m1.large
flavor_xlarge: m1.xlarge
vm_base_name: vm1
key_name: onap_key
nexus_repo: https://nexus.onap.org/content/sites/raw
nexus_docker_repo: nexus3.onap.org:10001
nexus_username: docker
nexus_password: docker
dmaap_topic: AUTO
artifacts_version: 1.1.0-SNAPSHOT
docker_version: 1.1-STAGING-latest
gerrit_branch: master
These parameters mainly refer to the OpenStack environment, docker URL and credentials, Gerrit URL, VM private addresses, etc. We warmly suggest to keep component-specific configuration in Gerrit, such that the repository can be cloned and that configuration is made available to installation scripts.
For each VM, the last instruction in the Heat template is to run <component_name>_install.sh, which install software dependencies such as docker, Java, make, gcc, git, etc. This script also downloads and runs another script, called <component_name>_vm_init.sh, which is in charge of downloading and running docker containers.
What should ONAP teams to onboard a new component? Just provide the VM specs that they want, we will create the VM accordingly. We will also create <component_name>_install.sh