...
In the OpenStack environment,when cloud instances are launched through Heat, metadata and userdata are populated automatically by the Heat template. The SBC SWe metadata and userdata you provide in your template are essential to ensuring that the SBC instance you deploy can initialize correctly. To be interpreted correctly, the metadata and userdata must be provided in the proper JSON format. The example Heat templates
provides include metadata and userdata sections in the required format. When editing or copying these sections to create your own Heat template, be sure to maintain the format. The following sections describe the SBC SWe metadata and userdata.
Info |
---|
For AWS and OpenStack, there is now a common REST API command for accessing/showing/listing instantiation data such as meta-data and user-data. For details, refer to the REST-API-Reference-Guide. |
...
Interface Definition Format
Code Block |
---|
"IFXIFx" : {
"Port":"<Port_Name>",
"DHCP": "<Dhcp_flag>",
"RNat": "<True|False>",
"GWV4":"<IP_Address>",
"IPV4":"<IP_Address/Subnet_Prefix>",
"GWV6" :"<IP_Address>",
"IPV6":"<IP_Address/Subnet_Prefix>",
"FIPV4":"<IP_Address>",
"VlanId":"<VLAN_ID>"
} |
Anchor |
---|
| Interface Parameter Table |
---|
| Interface Parameter Table |
---|
|
The elements which can constitute an interface definition:
Caption |
---|
0 | Table |
---|
1 | Interface Definition Parameters |
---|
3 | Interface Definition |
---|
|
Parameters | Description |
---|
IFXx | Interface definition name This element is the name in the dictionary which contains the information of the port. Here, "IF" is a key word, and it can be appended with any name/identifier for X x. Example: IF_Pkt0, IFMgt0, IF-MediaPort. Note: The name provided for the interface definition is used in an alternate IP definition. A link is formed between the two definitions based on the interface definition name. | Port | Port Name One of – Mgt0, Ha0, Pkt0, Pkt1. This indicates the actual port to which the definition belongs. | DHCP | This flag is used to enable or disable DHCP. If the DHCP is set to False, you need to provide fixed IP addresses for each port. | RNat | Reverse NAT flag Values: - True: To consider FIPV4 entity value provided in the dictionary.
- False: To configure FIPV4 using SMM rules, and ignore the FIPV4 value provided.
Default value - True | GWV4 | Gateway IP in IPv4 format. Should be provided only when DHCP disabled on the port and it requires an IPv4 address. Note : GWV4 and IPV4 are interdependent, both have to be provided in a noDHCP IPv4 scenario. | IPV4 | Primary IP on the private port and prefix in IPv4 format. Should be provided only when DHCP is disabled on the port and it requires an IPv4 address. Example: 10.54.116.53/23 | GWV6 | Gateway IP in IPv6 format. Should be provided only in case DHCP is disabled on the port and it requires an IPv6 address. Note : GWV6 and IPV6 are interdependent, both have to be provided in a noDHCP PVv6 scenario. | IPV6 | IP on the private port and prefix in IPv6 format. Should be provided only in case DHCP disabled on the port and it requires an IPv6 address. Example : fd00:10:6b50:4350::69/64 | FIPV4 | Floating IP associated with the port. Provide when a Floating IP is associated (in DHCP enabled and disabled scenarios) with the port. | VlanId | ID of the VLAN. |
|
...
Caption |
---|
0 | Table |
---|
1 | Alternate IP Definition Parameters |
---|
3 | Alternate IP Definition |
---|
|
Parameter | Description |
---|
AltIP3 | Alternate IP (ALT IP) definition name/identifier associated with a port. This identifier does not have any restriction on naming, AltIP3 is an example. Other examples for ALT IP identifier : Alt_Pkt0_AX, ALT_PKT0_01, signaling_Pkt0_05. | IFName | Interface definition name Makes an association between the ALT IP address and an existing interface definition. If you change the interface definition name (i.e IFX x name), you must simultaneously change the IFName value in this definition. Otherwise, the link between the ALT IP and its associated port is lost. | IP | IPV4 or IPV6 address IP address to associate with the port. Specify an IPv4 or IPv6 address, based on the IP version the parent interface definition contains. In a dual-stack scenario, the interface definition has both IPv4 and IPv6 addresses, you can also have IPv4 and IPv6 ALT IP addresses. They must be defined in separate ALT IP definitions, each pointing to the parent definition. | FIPV4 | Floating IP on the Alternate IP Use this parameter to specify the value of a floating IP to associate with the ALT IP. Note: The RNat flag which is defined in the interface definition is an interface-wide entity. If the RNat flag is disabled in the interface definition, the FIP value provided in the ALT IP definition is not considered while populating the metavariables for this port. |
|
...
Userdata Format
Code Block |
---|
user_data_format: RAW
user_data:
str_replace:
template: |
#cloud-config
users:
- name: admin
ssh-authorized-keys:
- $adminSshKey
lock_passwd: false
- name: linuxadmin
ssh-authorized-keys:
- $linuxAdminSshKey
lock_passwd: false
runcmd:
- usermod -p '$adminPassword' admin
- usermod -p '$linuxAdminPassword' linuxadmin
write_files:
- content: |
{
"CERoleCEName" : "$ce_rolename",
"CENameCEMode" : "$ce_namemode",
"SystemName" : "$system_name",
"SbcPersonalityType" : "$personality",
"SbcMgmtMode" : "$mgmt_mode",
"DosSupportSecPktPorts" : "$dos_support_sec_port",
"EmsUsername" : "$ems_user_name",
"EmsPassword" : "$ems_password",
"EmsIP" : [ "$ems_ip_1", "$ems_ip_2" ],
"EmsDownloadConfig" : "$downloadConfig",
"TemplateNameOamIP" : "heatRgActiveTemplate.yaml" [ "$oam_ip_1", "$oam_ip_2" ],
"CERole" : "$ce_role",
"TemplateName" : "heatRgNoDhcp.yaml",
"TemplateVersion" : "TEMPLATE_VERSION_UNKNOWN",
"EmsPrivateNodeParameters" : { "cluster_id": "$cluster_id" , "vnfc_id": "$vnfc_id" }
}
path: /opt/sonus/conf/userData.json
#bootcmd:
#- /opt/sonus/bin/mountVolume.sh -v "$cinderVolumeIdForLogs"
params:
$ce_role: { get_param: sbc_ceRole }
$ce_name: { get_param: sbc_ceName }
$ce_mode: { get_param: sbc_ceMode }
$system_name: { get_param: sbc_system_ceNamename }
$system_name$personality: { get_param: sbc_system_namepersonality }
$personality: $dos_support_sec_port: { get_param: personalitydos_support_sec_port }
$mgmt_mode: { get_param: mgmt_mode }
$ems_user_name: { get_param: ems_user_name }
$ems_password: { get_param: ems_password }
$ems_ip_1: { get_param: ems_ip_1 }
$ems_ip_2: { get_param: ems_ip_2 }
$cluster_id: { get_param: cluster_id }
$downloadConfig: { get_param: download_config }
$oam_ip_1: $cluster_id: { get_param: clusteroam_ip_id1 }
$downloadConfig$oam_ip_2: { get_param: downloadoam_ip_config2 }
$vnfc_id: { list_join: ['-', [ { get_param: "OS::stack_name" }, { get_param: cluster_id }, '1']] }
$adminSshKey: { get_param: adminSshKey }
$linuxAdminSshKey: { get_param: linuxAdminSshKey }
$adminPassword: { get_param: adminPassword }
$linuxAdminPassword: { get_param: linuxAdminPassword }
#$cinderVolumeIdForLogs: { get_param: cinder_volume_id_for_logs }
|
...
Code Block |
---|
{
"CERole" : "ACTIVE",
"CEName" : "vsbc1",
"CEMode" : "sbc",
"SystemName" : "vsbcsystem",
"SbcPersonalityType" : "vsbc1msbc",
"SystemNameSbcMgmtMode" : "vsbcsystemdistributed",
"SbcPersonalityTypeOamIP" : "msbc",
"SbcMgmtMode" : [ : "distributed""10.54.58.104", "10.54.58.105" ],
"EmsUsername" : "restuser",
"EmsPassword" : "sonus123",
"EmsIP" : [ "10.54.58.184", "10.54.58.185" ],
"EmsDownloadConfig" : "TrueFalse",
"TemplateName" : "heatRgActiveTemplateheatRgNoDhcp.yaml",
"TemplateVersion" : "V07V08.0100.00",
"EmsPrivateNodeParameters": { "cluster_id": "MSBC" , "vnfc_id": "Msbc1_N1" }
} |
...
Caption |
---|
0 | Table |
---|
1 | OpenStack Userdata Parameter Description |
---|
|
Parameter | Description |
---|
adminSshKey | Specifies the public SSH key to log into the SBC CLI as the admin user. | linuxAdminSshKey | Specifies the public SSH key to log into the SBC shell as the linuxadmin user. | adminPassword | The hash of the password to log into the SBC CLI as the admin user. | linuxAdminPassword | The hash of the password to log into the SBC shell as the linuxadmin user. | CERole | Assigned role for the SBC instance. Allowed values: | CEName | Specifies the actual CE name of the SBC instance. For more information, see System and Instance Naming Conventions. CEName requirements: - Must start with an alphabetic character.
- Can only contain alphabetic characters and/or numbers. No special characters.Cannot exceed 64 characters in lengthnumbers. No special characters.
- Cannot exceed 64 characters in length.
| CEMode | Specifies the role for the SBC instance within the cluster. Allowed values: - oam - the node is an Operations, Administration, and Maintenance (OAM) node that manages configuration for an N:1 cluster.
- sbc - the node is an SBC node.
| SystemName | Specifies the actual system name of the SBC instance. For more information, see System and Instance Naming Conventions. SystemName requirements: - Must start with an alphabetic character.
- Can only contain alphabetic characters and/or numbers. No special characters.
- Cannot exceed 26 characters in length.
| SbcPersonalityType | Specifies the SBC or node personality type. Allowed values: - isbc - integrated SBC
- ssbc - signaling SBC
- msbc - media SBC
- mrfp - Media Resource Function Processor
- slb - SIP-aware front-end load-balancer
| DosSupportSecPktPorts | (Applicable only when port redundancy is enabled) Specifies whether to launch secondary Rx cores to support DoS protection for secondary packet ports. Allowed values: | SbcMgmtMode | Specifies the SBC management mode. Allowed values: - centralized - a 1:1 HA redundancy model where one active instance is backed up by one standby instance. In centralized mode, the SBC configuration is synchronized between active and standby SBCs.
- distributed (default) - an N:1 redundancy model where up to N active instances are backed up by a single standby instance. In this mode, each node is configured separately, and the configuration on active and standby instances are not synchronized. The . In this mode, a 1:1 HA pair of dedicated Operations, Administration, and Maintenance (OAM) nodes is deployed to configure and manage SBC nodes. The SBC instances in such deployments also have homogeneous configuration. The active OAM node holds the active configuration for the cluster and is responsible for sharing this configuration with the SBC nodes in the cluster.
| OamIP | Specifies the IP addresses for the 1:1 HA pair of OAM nodes. | EmsUsername | Specifies the REST username for logging into EMS. Default value: "None" If the SBC SWe is not integrated with an EMS, this parameter should be set to "None". | EmsPassword | Specifies the REST password for logging into EMS. Default value: "None" If the SBC SWe is not integrated with an EMS, this parameter should be set to "None". | EmsIP | Specifies the EMS instance IPv4 or IPv6 address(es). For IPv4 Standalone EMS IP address as - "aaaa:bbbb:cccc:dddd" Geographical Redundancy EMS IP address as: ["aaaa:bbbb:cccc:dddd","aaaa:bbbb:cccc:dddd"]
For IPv6 Standalone EMS IP address as - "aaaa:bbbb:cccc:dddd::xx" Geographical Redundancy EMS IP address as: ["aaaa:bbbb:cccc:dddd::xx","aaaa:bbbb:cccc:dddd::yy"]
| EmsDownloadConfig | Whether configuration should be downloaded from the EMS. Default value: True Allowed values: Note: Beginning in release 8.0, this option is no longer required and the configured value is ignored. | TemplateName | Specifies the name of the template file. | TemplateVersion | Specifies the software version associated with the template. | EmsPrivateNodeParameters | Specifies the EMS private node parameters.
cluster_id - Unique ID for a specific cluster in a cloud environment which can contain one or more SBC instances.
vnfc_id - Unique ID specified for an SBC instance. The EMS identifies the nodes based on the VNFC-ID. If you reuse an existing VNFC-ID, the EMS will interpret it as a re-registration request and overwrite the existing data on the cloud node. The cluster ID and vnfc ID both allow hyphens and cannot exceed 64 characters in length. | cinderVolumeIdForLogs | (Optional) Specifies the Cinder volume ID that you want to attach for logs. Cinder volume length must be between 1 and 8 characters. allowed values: "^[A-Za-z0-9]{1}[-A-Za-z0-9]*[A-Za-z0-9]{1}$" |
|
...