Merge "Scalable Clearwater demo app"

This commit is contained in:
Jenkins 2016-09-19 14:14:57 +00:00 committed by Gerrit Code Review
commit 68bce15dca
26 changed files with 542 additions and 432 deletions

View File

@ -32,39 +32,19 @@ Properties:
Contract: $.string().notNull() Contract: $.string().notNull()
Usage: InOut Usage: InOut
privateIp:
Contract: $.string()
Usage: Out
Methods: Methods:
.init: .init:
Body: Body:
- $.environment: $.find(std:Environment).require() - $.environment: $.find(std:Environment).require()
- $.dnsSecKey: base64encode($.dnsSecKey)
_createReplacements: _createReplacements:
Body: Body:
- Return: - Return:
"%PUBLIC_IP%": $.instance.floatingIpAddress "%PUBLIC_IP%": $.instance.floatingIpAddress
"%PRIVATE_IP%": $.privateIp "%PRIVATE_IP%": $.instance.joinedNetworks.first().ipList.where($ != $this.instance.floatingIpAddress).first()
"%ZONE%": $.zoneName "%ZONE%": $.zoneName
"%DNSSEC_KEY%": $.dnsSecKey "%DNSSEC_KEY%": $.dnsSecKey
"%PRIVATE_NETWORK_CIDR%": $.environment.defaultNetworks.environment.describe().cidr "%PRIVATE_NETWORK_CIDR%": $.instance.joinedNetworks.first().network.describe().cidr
_getIp4ForNetwork:
#Works only for IPv4 network with 255.255.255.0 netmask
Arguments:
- network:
Contract: $.class(res:NeutronNetwork).notNull()
Body:
- $gateIp: $network.describe().gateway
- $netAddr: $gateIp.split('.').take(3)
- Return: $.instance.ipAddresses.where(list($.split('.').take(3)) = $netAddr).first(null)
_getPrivateIp:
Body:
- Return: $._getIp4ForNetwork($.environment.defaultNetworks.environment)
_addSecurityGroupRules: _addSecurityGroupRules:
Body: Body:
@ -88,7 +68,6 @@ Methods:
- $._addSecurityGroupRules() - $._addSecurityGroupRules()
- $.instance.deploy() - $.instance.deploy()
- $._report('Run install script') - $._report('Run install script')
- $.privateIp: $._getPrivateIp()
- $replacements: $._createReplacements() - $replacements: $._createReplacements()
- $file: sys:Resources.string('deployBind.sh').replace($replacements) - $file: sys:Resources.string('deployBind.sh').replace($replacements)
- conf:Linux.runCommand($.instance.agent, $file) - conf:Linux.runCommand($.instance.agent, $file)

View File

@ -54,11 +54,11 @@ Forms:
Enter zone name for BIND installation Enter zone name for BIND installation
- name: dnsSecKey - name: dnsSecKey
type: string type: string
label: DNSSEC Key label: DNSSEC Key (Base64-encoded)
initial: >- initial: >-
HNujJGI+ELhlIVa6a+h1L0/2XQTbU9RaH+/F7pOQmDfKWTGc58h0rHNjnIQtms5SBQsC6lni1Kcwq8s+3W4TmA SE51akpHSStFTGhsSVZhNmEraDFMMC8yWFFUYlU5UmFIKy9GN3BPUW1EZktXVEdjNThoMHJITmpuSVF0bXM1U0JRc0M2bG5pMUtjd3E4cyszVzRUbUEK
description: >- description: >-
Enter DNSSEC private key. This key will be used for update DNS records via DNSSEC. Enter DNSSEC private key (Base64-encoded). This key will be used for update DNS records via DNSSEC.
- instanceConfiguration: - instanceConfiguration:
@ -104,9 +104,9 @@ Forms:
type: string type: string
label: Instance Naming Pattern label: Instance Naming Pattern
required: false required: false
initial: BIND initial: BIND#
maxLength: 64 maxLength: 64
regexpValidator: '^[a-zA-z][-_\w]*$' regexpValidator: '^[a-zA-z][_\w#-]*$'
errorMessages: errorMessages:
invalid: Just letters, numbers, underscores and hyphens are allowed. invalid: Just letters, numbers, underscores and hyphens are allowed.
helpText: Just letters, numbers, underscores and hyphens are allowed. helpText: Just letters, numbers, underscores and hyphens are allowed.

View File

@ -13,27 +13,23 @@
Namespaces: Namespaces:
=: com.mirantis.clearwater =: com.mirantis.clearwater
std: io.murano std: io.murano
res: io.murano.resources
meta: io.murano.metadata
dns: com.mirantis.network.dns dns: com.mirantis.network.dns
cwBase: com.mirantis.clearwater.components.base cwBase: com.mirantis.clearwater.components.base
components: com.mirantis.clearwater.components components: com.mirantis.clearwater.components
Name: Clearwater Name: Clearwater
Extends: std:Application Extends: std:Application
Properties: Properties:
keypair:
Contract: $.string()
osImageName:
Contract: $.string().notNull()
flavorName:
Contract: $.string().notNull()
dnsApp: dnsApp:
Contract: $.class(dns:Bind).notNull() Contract: $.class(dns:Bind).notNull()
ellis: instanceTemplate:
Contract: $.class(components:Ellis) Contract: $.template(res:LinuxInstance)
Usage: Out
components: components:
Contract: Contract:
- $.class(cwBase:ClearwaterComponentBase).notNull() - $.class(cwBase:ClearwaterComponentBase).notNull()
@ -42,19 +38,33 @@ Properties:
Contract: $.string().notNull() Contract: $.string().notNull()
Default: "" Default: ""
Usage: Out Usage: Out
bonoClusterSize:
Contract: $.int().notNull()
Default: 1
sproutClusterSize:
Contract: $.int().notNull()
Default: 1
homerClusterSize:
Contract: $.int().notNull()
Default: 1
homesteadClusterSize:
Contract: $.int().notNull()
Default: 1
Methods: Methods:
.init: .init:
Body: Body:
- $._environment: $.find(std:Environment).require() - $._environment: $.find(std:Environment).require()
- $.ellis: new(components:Ellis, $this) - If: not $.components
- $.components: Then:
- new(components:Bono, $this) - $.components:
- new(components:Sprout, $this) - new(components:Ellis, $this, 'Ellis')
- new(components:Homer, $this) - new(components:Ralf, $this, Ralf, allowedFailures => 'quorum')
- new(components:Ralf, $this) - new(components:Bono, $this, Bono, allowedFailures => 'quorum', clusterSize => $this.bonoClusterSize)
- new(components:Homestead, $this) - new(components:Sprout, $this, Sprout, allowedFailures => 'quorum', clusterSize => $this.sproutClusterSize)
- new(components:Homer, $this, Homer, allowedFailures => 'quorum', clusterSize => $this.homerClusterSize)
- new(components:Homestead, $this, Homestead, allowedFailures => 'quorum', clusterSize => $this.homesteadClusterSize)
getSecurityGroupRules: getSecurityGroupRules:
Body: Body:
@ -88,19 +98,14 @@ Methods:
deploy: deploy:
Body: Body:
- If: not $.getAttr(deployed, false) - $this._report('Start Clearwater deploy')
Then: - $this._environment.securityGroupManager.addGroupIngress($this.getSecurityGroupRules())
- $._report('Start Clearwater deploy') - $this.dnsApp.deploy()
- $._environment.securityGroupManager.addGroupIngress($.getSecurityGroupRules()) - $this.components.pselect($.deploy())
- $.dnsApp.deploy() - $ellisFloatingIp: $this.components.where($ is components:Ellis).cluster.items.first().floatingIpAddress
- $.ellis.deploy() - $this._report(format('Use Ellis at {0} for create account and manage identities', $ellisFloatingIp))
- $.components.pselect($.deploy()) - $edgeProxyIp: $this.components.where($ is components:Bono).first().cluster.items.first().floatingIpAddress
- $._report('Clearwater deployed') - $this._report(format('Outbound edge proxy IP is {0}', $edgeProxyIp))
- $._report(format('Use Ellis at {0} for create account and manage identities',
$.ellis.instance.floatingIpAddress))
- $._report(format('Outbound edge proxy IP is {0}',
$.components.where($ is components:Bono).first().instance.floatingIpAddress))
- $.setAttr(deployed, true)
_report: _report:
Arguments: Arguments:
@ -109,3 +114,39 @@ Methods:
Body: Body:
- $._environment.reporter.report($this, $message) - $._environment.reporter.report($this, $message)
# Lifecycle management
scaleOutSprout:
Meta:
- meta:Title:
text: "Scale out Sprout"
Scope: Public
Body:
- $this.components.where($ is components:Sprout).first().scaleOut()
scaleOutBono:
Meta:
- meta:Title:
text: "Scale out Bono"
Scope: Public
Body:
- $this.components.where($ is components:Bono).first().scaleOut()
scaleOutHomestead:
Meta:
- meta:Title:
text: "Scale out Homestead"
Scope: Public
Body:
- $this.components.where($ is components:Homestead).first().scaleOut()
scaleOutRalf:
Meta:
- meta:Title:
text: "Scale out Ralf"
Scope: Public
Body:
- $this.components.where($ is components:Ralf).first().scaleOut()

View File

@ -19,7 +19,7 @@ Name: Bono
Extends: base:ClearwaterComponentBase Extends: base:ClearwaterComponentBase
Methods: Methods:
_createSecurityGroupRules: getSecurityRules:
Body: Body:
- $rules: - $rules:
# STUN/TURN # STUN/TURN
@ -55,9 +55,4 @@ Methods:
FromPort: 32768 FromPort: 32768
ToPort: 65535 ToPort: 65535
External: true External: true
- Return: $rules - Return: $rules
getDeployScriptName:
Body:
- Return: "deployBono.sh"

View File

@ -20,7 +20,7 @@ Extends: base:ClearwaterComponentBase
Methods: Methods:
_createSecurityGroupRules: getSecurityRules:
Body: Body:
- $rules: - $rules:
# HTTP # HTTP
@ -33,8 +33,4 @@ Methods:
ToPort: 443 ToPort: 443
IpProtocol: udp IpProtocol: udp
External: true External: true
- Return: $rules - Return: $rules
getDeployScriptName:
Body:
- Return: "deployEllis.sh"

View File

@ -19,7 +19,7 @@ Name: Homer
Extends: base:ClearwaterComponentBase Extends: base:ClearwaterComponentBase
Methods: Methods:
_createSecurityGroupRules: getSecurityRules:
Body: Body:
- $rules: - $rules:
# Ut/HTTP # Ut/HTTP
@ -41,9 +41,4 @@ Methods:
ToPort: 9160 ToPort: 9160
External: false External: false
- Return: $rules - Return: $rules
getDeployScriptName:
Body:
- Return: "deployHomer.sh"

View File

@ -19,7 +19,7 @@ Name: Homestead
Extends: base:ClearwaterComponentBase Extends: base:ClearwaterComponentBase
Methods: Methods:
_createSecurityGroupRules: getSecurityRules:
Body: Body:
- $rules: - $rules:
# REST-ful Provisioning API # REST-ful Provisioning API
@ -45,9 +45,4 @@ Methods:
FromPort: 7199 FromPort: 7199
ToPort: 7199 ToPort: 7199
External: false External: false
- Return: $rules - Return: $rules
getDeployScriptName:
Body:
- Return: "deployHomestead.sh"

View File

@ -19,7 +19,7 @@ Name: Ralf
Extends: base:ClearwaterComponentBase Extends: base:ClearwaterComponentBase
Methods: Methods:
_createSecurityGroupRules: getSecurityRules:
Body: Body:
- $rules: - $rules:
# Rf-like/HTTP API # Rf-like/HTTP API
@ -46,9 +46,4 @@ Methods:
FromPort: 11211 FromPort: 11211
ToPort: 11211 ToPort: 11211
External: false External: false
- Return: $rules - Return: $rules
getDeployScriptName:
Body:
- Return: "deployRalf.sh"

View File

@ -19,7 +19,7 @@ Name: Sprout
Extends: base:ClearwaterComponentBase Extends: base:ClearwaterComponentBase
Methods: Methods:
_createSecurityGroupRules: getSecurityRules:
Body: Body:
- $rules: - $rules:
# Internal SIP # Internal SIP
@ -46,9 +46,4 @@ Methods:
FromPort: 11211 FromPort: 11211
ToPort: 11211 ToPort: 11211
External: false External: false
- Return: $rules - Return: $rules
getDeployScriptName:
Body:
- Return: "deploySprout.sh"

View File

@ -16,107 +16,115 @@ Namespaces:
res: io.murano.resources res: io.murano.resources
sys: io.murano.system sys: io.murano.system
conf: io.murano.configuration conf: io.murano.configuration
apps: io.murano.applications
cw: com.mirantis.clearwater cw: com.mirantis.clearwater
Name: ClearwaterComponentBase Name: ClearwaterComponentBase
Extends:
- apps:SoftwareComponent
- apps:OpenStackSecurityConfigurable
Properties: Properties:
instance: clusterSize:
Contract: $.class(res:LinuxMuranoInstance) Contract: $.int().notNull()
Default: 1
cluster:
Contract: $.class(apps:ServerReplicationGroup)
Usage: Out
serverProvider:
Contract: $.class(apps:TemplateServerProvider)
Usage: Out Usage: Out
Methods: Methods:
.init:
Body:
- $._environment: $.find(std:Environment).require()
- $._componentName: typeinfo($).name.split(".").last()
- $.parent: $.find(cw:Clearwater).require()
getDeployScriptName:
_createSecurityGroupRules:
_createInstance:
Body:
- $instance: new(res:LinuxMuranoInstance, $this,
name => format($._componentName),
flavor => $.parent.flavorName,
image => $.parent.osImageName,
keyname => $.parent.keypair,
securityGroupName => $._environment.securityGroupManager.defaultGroupName,
assignFloatingIp => true)
- Return: $instance
_setUp:
Body:
- $.privateNetwork: $._environment.defaultNetworks.environment
- $.instance: $._createInstance()
_createReplacements: _createReplacements:
Arguments: Arguments:
- instance: - instance:
Contract: $.class(res:LinuxMuranoInstance).notNull() Contract: $.class(res:LinuxInstance).notNull()
- index:
Contract: $.int().notNull()
Body: Body:
- $instancePrivateIp: $instance.joinedNetworks.first().ipList.where($ != $instance.floatingIpAddress).first()
- Return: - Return:
"%INDEX%": $index
"%PUBLIC_IP%": $instance.floatingIpAddress "%PUBLIC_IP%": $instance.floatingIpAddress
"%PRIVATE_IP%": $.privateIp "%PRIVATE_IP%": $instancePrivateIp
"%PRIVATE_NETWORK_CIDR%": $.privateNetwork.describe().cidr "%PRIVATE_NETWORK_CIDR%": $instance.joinedNetworks.first().network.describe().cidr
"%PRIVATE_NETWORK_GATEWAY%": $.privateNetwork.describe().gateway "%PRIVATE_NETWORK_GATEWAY%": $instance.joinedNetworks.first().network.describe().gateway
"%ZONE%": $.parent.dnsApp.zoneName "%ZONE%": $.parent.dnsApp.zoneName
"%DNSSEC_KEY%": $.parent.dnsApp.dnsSecKey "%DNSSEC_KEY%": $.parent.dnsApp.dnsSecKey
"%DNS_PRIVATE_IP%": $.parent.dnsApp.privateIp "%DNS_PRIVATE_IP%": $.parent.dnsApp.instance.joinedNetworks.first().ipList.where($ = $instance.floatingIpAddress).first()
"%ETCD_IP%": $.parent.etcdClusterIp or $.privateIp "%ETCD_IP%": $.parent.etcdClusterIp or $instancePrivateIp
_getIp4ForNetwork: getDeployScriptName:
#Works only for IPv4 network with 255.255.255.0 netmask Body:
- Return: $this.componentName + '/deploy.sh'
getConfigureScriptName:
Body:
- Return: $this.componentName + '/configure.sh'
.init:
Body:
- $._environment: $.find(std:Environment).require()
- $.componentName: typeinfo($).name.split(".").last()
- $.parent: $.find(cw:Clearwater).require()
- $.serverProvider: $.serverProvider or new(apps:TemplateServerProvider, $this,
template => $.parent.instanceTemplate,
serverNamePattern => $this.componentName + "-{}")
- $.cluster: $.cluster or new(apps:ServerReplicationGroup, $this,
provider => $this.serverProvider, minItems => 1, numItems => $this.clusterSize)
onInstallServer:
Arguments: Arguments:
- network: - instance:
Contract: $.class(res:NeutronNetwork).notNull() Contract: $.class(res:LinuxInstance).notNull()
- serverGroup:
Contract: $.class(apps:ServerReplicationGroup).notNull()
Body: Body:
- $gateIp: $network.describe().gateway - $index: $serverGroup.getServers().indexWhere($.name = $instance.name)
- $netAddr: $gateIp.split('.').take(3) - $instancePrivateIp: $instance.joinedNetworks.first().ipList.where($ != $instance.floatingIpAddress).first()
- Return: $.instance.ipAddresses.where(list($.split('.').take(3)) = $netAddr).first(null) - If: not $.parent.etcdClusterIp
Then:
- $this.parent.setEtcdClusterIp($instancePrivateIp)
- $replacements: $._createReplacements($instance, $index)
- $file: sys:Resources.string($.getDeployScriptName()).replace($replacements)
- conf:Linux.runCommand($instance.agent, $file)
_getPrivateIp:
Body:
- Return: $._getIp4ForNetwork($.privateNetwork)
addSecurityGroupRules:
onConfigureServer:
Arguments: Arguments:
- rules: - instance:
Contract: Contract: $.class(res:LinuxInstance).notNull()
- FromPort: $.int().notNull() - serverGroup:
ToPort: $.int().notNull() Contract: $.class(apps:ServerReplicationGroup).notNull()
IpProtocol: $.string().notNull()
External: $.bool().notNull()
Ethertype: $.string().check($ in list(null, 'IPv4', 'IPv6'))
Body: Body:
- $._environment.securityGroupManager.addGroupIngress($rules) - $index: $serverGroup.getServers().indexWhere($.name = $instance.name)
- $instancePrivateIp: $instance.joinedNetworks.first().ipList.where($ != $instance.floatingIpAddress).first()
- $replacements: $._createReplacements($instance, $index)
- $file: sys:Resources.string($.getConfigureScriptName()).replace($replacements)
- conf:Linux.runCommand($instance.agent, $file)
deploy: deploy:
Body: Body:
- If: not $.getAttr(deployed, false) - $this.deployAt($this.cluster)
Then:
- $._report(format('{0} deploy started', $._componentName))
- $._setUp()
- $.addSecurityGroupRules($._createSecurityGroupRules())
- $.instance.deploy()
- $.privateIp: $._getPrivateIp()
- $replacements: $._createReplacements($.instance)
- $file: sys:Resources.string($.getDeployScriptName()).replace($replacements)
- conf:Linux.runCommand($.instance.agent, $file)
- If: not $.parent.etcdClusterIp
Then:
- $.parent.setEtcdClusterIp($.privateIp)
- $._report(format('{0} deploy finished', $._componentName))
_report: scaleOut:
Arguments:
- message:
Contract: $.string().notNull()
Body: Body:
- $._environment.reporter.report($this, $message) - $.report(format("Scale up {} cluster", $.componentName))
- $this.cluster.scale(1)
- $this.deploy()
scaleIn:
Body:
- $this.cluster.scale(-1)
- $this.deploy()

View File

@ -0,0 +1,39 @@
#!/bin/bash
configure() {
set -x
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add bono-%INDEX%.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add %INDEX%.bono.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add %ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add %ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.%ZONE%.
update add %ZONE%. 30 NAPTR 0 0 "s" "SIP+D2U" "" _sip._udp.%ZONE%.
update add _sip._tcp.%ZONE%. 30 SRV 0 0 5060 %INDEX%.bono.%ZONE%.
update add _sip._udp.%ZONE%. 30 SRV 0 0 5060 %INDEX%.bono.%ZONE%.
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
configure 2>&1|tee -a /var/log/clearwater-bono.log

View File

@ -0,0 +1,28 @@
#!/bin/bash
deploy() {
set -x
# Configure the APT software source.
echo 'deb http://repo.cw-ngv.com/archive/repo101 binary/' > /etc/apt/sources.list.d/clearwater.list
curl -L http://repo.cw-ngv.com/repo_key | apt-key add -
apt-get update
# Configure /etc/clearwater/local_config.
mkdir -p /etc/clearwater
etcd_ip=%ETCD_IP%
[ -n "$etcd_ip" ] || etcd_ip=%PRIVATE_IP%
cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP%
public_ip=%PUBLIC_IP%
public_hostname=%INDEX%.bono.%ZONE%
etcd_cluster=$etcd_ip
EOF
# Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install bono --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-config-manager --yes --force-yes
}
# Log all output to file.
deploy 2>&1|tee -a /var/log/clearwater-bono.log

View File

@ -0,0 +1,36 @@
#!/bin/bash
configure() {
set -x
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add ellis-%INDEX%.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add ellis.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
configure 2>&1|tee -a /var/log/clearwater-ellis.log

View File

@ -2,6 +2,7 @@
deploy() { deploy() {
set -x set -x
# Configure the APT software source. # Configure the APT software source.
echo 'deb http://repo.cw-ngv.com/archive/repo101 binary/' > /etc/apt/sources.list.d/clearwater.list echo 'deb http://repo.cw-ngv.com/archive/repo101 binary/' > /etc/apt/sources.list.d/clearwater.list
curl -L http://repo.cw-ngv.com/repo_key | apt-key add - curl -L http://repo.cw-ngv.com/repo_key | apt-key add -
@ -9,15 +10,18 @@ apt-get update
# Configure /etc/clearwater/local_config. # Configure /etc/clearwater/local_config.
mkdir -p /etc/clearwater mkdir -p /etc/clearwater
etcd_ip=%PRIVATE_IP% etcd_ip=%PRIVATE_IP%
[ -n "$etcd_ip" ] || etcd_ip=%PRIVATE_IP%
cat > /etc/clearwater/local_config << EOF cat > /etc/clearwater/local_config << EOF
local_ip=%PRIVATE_IP% local_ip=%PRIVATE_IP%
public_ip=%PUBLIC_IP% public_ip=%PUBLIC_IP%
public_hostname=ellis-0.%ZONE% public_hostname=ellis-%INDEX%.%ZONE%
etcd_cluster=$etcd_ip etcd_cluster=$etcd_ip
EOF EOF
# Now install the software. # Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install ellis --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install ellis --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-config-manager --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install clearwater-config-manager --yes --force-yes
# Wait until etcd is up and running before uploading the shared_config # Wait until etcd is up and running before uploading the shared_config
/usr/share/clearwater/clearwater-etcd/scripts/wait_for_etcd /usr/share/clearwater/clearwater-etcd/scripts/wait_for_etcd
# Configure and upload /etc/clearwater/shared_config. # Configure and upload /etc/clearwater/shared_config.
@ -43,41 +47,17 @@ turn_workaround=secret
ellis_api_key=secret ellis_api_key=secret
ellis_cookie_key=secret ellis_cookie_key=secret
EOF EOF
sudo /usr/share/clearwater/clearwater-config-manager/scripts/upload_shared_config sudo /usr/share/clearwater/clearwater-config-manager/scripts/upload_shared_config
# Tweak /etc/clearwater/shared_config to use homer's management hostname instead of signaling. # Tweak /etc/clearwater/shared_config to use homer's management hostname instead of signaling.
# This works around https://github.com/Metaswitch/ellis/issues/153. # This works around https://github.com/Metaswitch/ellis/issues/153.
sed -e 's/^xdms_hostname=.*$/xdms_hostname=homer-0.%ZONE%:7888/g' -i /etc/clearwater/shared_config sed -e 's/^xdms_hostname=.*$/xdms_hostname=homer-1.%ZONE%:7888/g' -i /etc/clearwater/shared_config
sed -i 's|# server_names_hash_bucket_size.*|server_names_hash_bucket_size 64;|g' /etc/nginx/nginx.conf sed -i 's|# server_names_hash_bucket_size.*|server_names_hash_bucket_size 64;|g' /etc/nginx/nginx.conf
service clearwater-infrastructure restart service clearwater-infrastructure restart
service ellis stop service ellis stop
# Allocate a allocate a pool of numbers to assign to users. # Allocate a allocate a pool of numbers to assign to users.
/usr/share/clearwater/ellis/env/bin/python /usr/share/clearwater/ellis/src/metaswitch/ellis/tools/create_numbers.py --start 6505550000 --count 1000 --realm %ZONE% /usr/share/clearwater/ellis/env/bin/python /usr/share/clearwater/ellis/src/metaswitch/ellis/tools/create_numbers.py --start 6505550000 --count 1000 --realm %ZONE%
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add ellis-0.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add ellis.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
} }
# Log all output to file. # Log all output to file.

View File

@ -0,0 +1,34 @@
#!/bin/bash
configure() {
set -x
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add homer-%INDEX%.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add homer.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
configure 2>&1|tee -a /var/log/clearwater-homer.log

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
deploy() { deploy() {
# Log all output to file. # Log all output to file.
exec > >(tee -a /var/log/clearwater-homer.log) 2>&1 exec > >(tee -a /var/log/clearwater-homer.log) 2>&1
set -x set -x
@ -16,39 +17,14 @@ cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP% management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP% local_ip=%PRIVATE_IP%
public_ip=%PUBLIC_IP% public_ip=%PUBLIC_IP%
public_hostname=homer-0.%ZONE% public_hostname=homer-%INDEX%.%ZONE%
etcd_cluster=$etcd_ip etcd_cluster=$etcd_ip
EOF EOF
# Now install the software. # Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-cassandra --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install clearwater-cassandra --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install homer --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install homer --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add homer-0.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add homer.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
} }
# Log all output to file. # Log all output to file.

View File

@ -0,0 +1,35 @@
#!/bin/bash
configure() {
set -x
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add homestead-%INDEX%.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add hs-prov.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add hs.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
configure 2>&1|tee -a /var/log/clearwater-homestead.log

View File

@ -15,39 +15,13 @@ cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP% management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP% local_ip=%PRIVATE_IP%
public_ip=%PRIVATE_IP% public_ip=%PRIVATE_IP%
public_hostname=homestead-0.%ZONE% public_hostname=homestead-%INDEX%.%ZONE%
etcd_cluster=$etcd_ip etcd_cluster=$etcd_ip
EOF EOF
# Now install the software. # Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install homestead homestead-prov clearwater-prov-tools --yes DEBIAN_FRONTEND=noninteractive apt-get install homestead homestead-prov clearwater-prov-tools --yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add homestead-0.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add hs-prov.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add hs.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
} }
# Log all output to file. # Log all output to file.

View File

@ -0,0 +1,34 @@
#!/bin/bash
configure() {
set -x
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add ralf-%INDEX%.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add ralf.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
configure 2>&1|tee -a /var/log/clearwater-ralf.log

View File

@ -15,7 +15,7 @@ cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP% management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP% local_ip=%PRIVATE_IP%
public_ip=%PRIVATE_IP% public_ip=%PRIVATE_IP%
public_hostname=ralf-0.%ZONE% public_hostname=ralf-%INDEX%.%ZONE%
etcd_cluster=$etcd_ip etcd_cluster=$etcd_ip
EOF EOF
# Create /etc/chronos/chronos.conf. # Create /etc/chronos/chronos.conf.
@ -33,35 +33,10 @@ enabled = true
[exceptions] [exceptions]
max_ttl = 600 max_ttl = 600
EOF EOF
# Now install the software. # Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install ralf --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install ralf --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add ralf-0.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add ralf.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
} }
# Log all output to file. # Log all output to file.

View File

@ -0,0 +1,44 @@
#!/bin/bash
configure() {
set -x
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add sprout-%INDEX%.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add %INDEX%.sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add scscf.sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add icscf.sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add sprout.%ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.sprout.%ZONE%.
update add _sip._tcp.sprout.%ZONE%. 30 SRV 0 0 5054 %INDEX%.sprout.%ZONE%.
update add icscf.sprout.%ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.icscf.sprout.%ZONE%.
update add _sip._tcp.icscf.sprout.%ZONE%. 30 SRV 0 0 5052 %INDEX%.sprout.%ZONE%.
update add scscf.sprout.%ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.scscf.sprout.%ZONE%.
update add _sip._tcp.scscf.sprout.%ZONE%. 30 SRV 0 0 5054 %INDEX%.sprout.%ZONE%.
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
configure 2>&1|tee -a /var/log/clearwater-sprout.log

View File

@ -0,0 +1,43 @@
#!/bin/bash
deploy() {
set -x
# Configure the APT software source.
echo 'deb http://repo.cw-ngv.com/archive/repo101 binary/' > /etc/apt/sources.list.d/clearwater.list
curl -L http://repo.cw-ngv.com/repo_key | apt-key add -
apt-get update
# Configure /etc/clearwater/local_config.
mkdir -p /etc/clearwater
etcd_ip=%ETCD_IP%
[ -n "$etcd_ip" ] || etcd_ip=%PRIVATE_IP%
cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP%
public_ip=%PRIVATE_IP%
public_hostname=%INDEX%.sprout.%ZONE%
etcd_cluster=$etcd_ip
EOF
# Create /etc/chronos/chronos.conf.
mkdir -p /etc/chronos
cat > /etc/chronos/chronos.conf << EOF
[http]
bind-address = %PRIVATE_IP%
bind-port = 7253
threads = 50
[logging]
folder = /var/log/chronos
level = 2
[alarms]
enabled = true
[exceptions]
max_ttl = 600
EOF
# Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install sprout --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes
}
# Log all output to file.
deploy 2>&1 | tee -a /var/log/clearwater-sprout.log

View File

@ -1,58 +0,0 @@
#!/bin/bash
deploy() {
set -x
# Configure the APT software source.
echo 'deb http://repo.cw-ngv.com/archive/repo101 binary/' > /etc/apt/sources.list.d/clearwater.list
curl -L http://repo.cw-ngv.com/repo_key | apt-key add -
apt-get update
# Configure /etc/clearwater/local_config.
mkdir -p /etc/clearwater
etcd_ip=%ETCD_IP%
[ -n "$etcd_ip" ] || etcd_ip=%PRIVATE_IP%
cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP%
public_ip=%PUBLIC_IP%
public_hostname=0.bono.%ZONE%
etcd_cluster=$etcd_ip
EOF
# Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install bono --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-config-manager --yes --force-yes
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add bono-0.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add 0.bono.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add %ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add %ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.%ZONE%.
update add %ZONE%. 30 NAPTR 0 0 "s" "SIP+D2U" "" _sip._udp.%ZONE%.
update add _sip._tcp.%ZONE%. 30 SRV 0 0 5060 0.bono.%ZONE%.
update add _sip._udp.%ZONE%. 30 SRV 0 0 5060 0.bono.%ZONE%.
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
deploy 2>&1|tee -a /var/log/clearwater-bono.log

View File

@ -1,79 +0,0 @@
#!/bin/bash
deploy() {
set -x
# Set up the signaling network namespace on each boot by creating an init file and
# linking to it from runlevel 2 and 3
# Configure the APT software source.
echo 'deb http://repo.cw-ngv.com/archive/repo101 binary/' > /etc/apt/sources.list.d/clearwater.list
curl -L http://repo.cw-ngv.com/repo_key | apt-key add -
apt-get update
# Configure /etc/clearwater/local_config.
mkdir -p /etc/clearwater
etcd_ip=%ETCD_IP%
[ -n "$etcd_ip" ] || etcd_ip=%PRIVATE_IP%
cat > /etc/clearwater/local_config << EOF
management_local_ip=%PRIVATE_IP%
local_ip=%PRIVATE_IP%
public_ip=%PRIVATE_IP%
public_hostname=0.sprout.%ZONE%
etcd_cluster=$etcd_ip
EOF
# Create /etc/chronos/chronos.conf.
mkdir -p /etc/chronos
cat > /etc/chronos/chronos.conf << EOF
[http]
bind-address = %PRIVATE_IP%
bind-port = 7253
threads = 50
[logging]
folder = /var/log/chronos
level = 2
[alarms]
enabled = true
[exceptions]
max_ttl = 600
EOF
# Now install the software.
DEBIAN_FRONTEND=noninteractive apt-get install sprout --yes --force-yes
DEBIAN_FRONTEND=noninteractive apt-get install clearwater-management --yes --force-yes
# Function to give DNS record type and IP address for specified IP address
ip2rr() {
if echo "$1" | grep -q -e '[^0-9.]' ; then
echo AAAA "$1"
else
echo A "$1"
fi
}
# Update DNS
retries=0
while ! { nsupdate -y "%ZONE%:%DNSSEC_KEY%" -v << EOF
server %DNS_PRIVATE_IP%
update add sprout-0.%ZONE%. 30 $(ip2rr %PUBLIC_IP%)
update add 0.sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add scscf.sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add icscf.sprout.%ZONE%. 30 $(ip2rr %PRIVATE_IP%)
update add sprout.%ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.sprout.%ZONE%.
update add _sip._tcp.sprout.%ZONE%. 30 SRV 0 0 5054 0.sprout.%ZONE%.
update add icscf.sprout.%ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.icscf.sprout.%ZONE%.
update add _sip._tcp.icscf.sprout.%ZONE%. 30 SRV 0 0 5052 0.sprout.%ZONE%.
update add scscf.sprout.%ZONE%. 30 NAPTR 0 0 "s" "SIP+D2T" "" _sip._tcp.scscf.sprout.%ZONE%.
update add _sip._tcp.scscf.sprout.%ZONE%. 30 SRV 0 0 5054 0.sprout.%ZONE%.
send
EOF
} && [ $retries -lt 10 ]
do
retries=$((retries + 1))
echo 'nsupdate failed - retrying (retry '$retries')...'
sleep 5
done
# Use the DNS server.
echo 'nameserver %DNS_PRIVATE_IP%' > /etc/dnsmasq.resolv.conf
echo 'RESOLV_CONF=/etc/dnsmasq.resolv.conf' >> /etc/default/dnsmasq
service dnsmasq force-reload
}
# Log all output to file.
deploy 2>&1 | tee -a /var/log/clearwater-sprout.log

View File

@ -12,18 +12,37 @@
Version: 2.2 Version: 2.2
Templates:
customJoinNet:
- ?:
type: io.murano.resources.ExistingNeutronNetwork
internalNetworkName: $.instanceConfiguration.network[0]
internalSubnetworkName: $.instanceConfiguration.network[1]
Application: Application:
?: ?:
type: com.mirantis.clearwater.Clearwater type: com.mirantis.clearwater.Clearwater
keypair: $.commonInstanceConfiguration.keypair instanceTemplate:
zoneName: $.commonInstanceConfiguration.zoneName ?:
osImageName: $.commonInstanceConfiguration.osImage type: io.murano.resources.LinuxMuranoInstance
flavorName: $.commonInstanceConfiguration.flavor name: anything
dnssecKey: $.commonInstanceConfiguration.dnsseckey flavor: $.instanceConfiguration.flavor
dnsApp: $.components.dnsServer image: $.instanceConfiguration.osImage
keyname: $.instanceConfiguration.keyPair
availabilityZone: $.instanceConfiguration.availabilityZone
assignFloatingIp: true
networks:
useEnvironmentNetwork: $.instanceConfiguration.network[0]=null
useFlatNetwork: false
customNetworks: switch($.instanceConfiguration.network[0], $=null=>list(), $!=null=>$customJoinNet)
dnsApp: $.appConfig.dnsServer
bonoClusterSize: $.appConfig.bonoClusterSize
sproutClusterSize: $.appConfig.sproutClusterSize
homerClusterSize: $.appConfig.homerClusterSize
homesteadClusterSize: $.appConfig.homesteadClusterSize
Forms: Forms:
- commonInstanceConfiguration: - instanceConfiguration:
fields: fields:
- name: keypair - name: keypair
type: keypair type: keypair
@ -32,6 +51,12 @@ Forms:
Select the Key Pair to control access to instances. You can login to Select the Key Pair to control access to instances. You can login to
instances using this KeyPair after the deployment of application. instances using this KeyPair after the deployment of application.
required: false required: false
- name: flavor
type: flavor
label: Instance flavor
description: >-
Select registered in Openstack flavor. Consider that application performance
depends on this parameter.
- name: osImage - name: osImage
type: image type: image
label: Instance image label: Instance image
@ -39,17 +64,39 @@ Forms:
description: >- description: >-
Select valid Ubuntu 14.04 image with cloud-init preinstalled for the application. Select valid Ubuntu 14.04 image with cloud-init preinstalled for the application.
Image should already be prepared and registered in glance. Image should already be prepared and registered in glance.
- name: flavor - name: availabilityZone
type: flavor type: azone
label: Instance flavor label: Availability zone
description: >- description: Select availability zone where application would be installed.
Select registered in Openstack flavor. Consider that application performance required: false
depends on this parameter. - name: network
type: network
label: Network
description: Select a network to join. 'Auto' corresponds to a default environment's network.
required: false
murano_networks: translate
- components: - appConfig:
fields: fields:
- name: dnsServer - name: dnsServer
type: com.mirantis.network.dns.Bind type: com.mirantis.network.dns.Bind
label: DNS server label: DNS server
description: >- description: >-
Add internal DNS server application. DNS is used by Clearewater to refer to its nodes Add internal DNS server application. DNS is used by Clearewater to refer to its nodes
- name: bonoClusterSize
type: integer
label: Bono cluster size
initial: 1
- name: sproutClusterSize
type: integer
label: Sprout cluster size
initial: 1
- name: homerClusterSize
type: integer
label: Homer cluster size
initial: 1
- name: homesteadClusterSize
type: integer
label: Homestead cluster size
initial: 1

View File

@ -19,6 +19,7 @@ Description: |
Author: 'Mirantis, Inc' Author: 'Mirantis, Inc'
Tags: [vIMS] Tags: [vIMS]
Classes: Classes:
com.mirantis.clearwater.components.base.ClearwaterReplicaProvider: components/base/ClearwaterComponentBase.yaml
com.mirantis.clearwater.Clearwater: Clearwater.yaml com.mirantis.clearwater.Clearwater: Clearwater.yaml
com.mirantis.clearwater.components.base.ClearwaterComponentBase: components/base/ClearwaterComponentBase.yaml com.mirantis.clearwater.components.base.ClearwaterComponentBase: components/base/ClearwaterComponentBase.yaml
com.mirantis.clearwater.components.Bono: components/Bono.yaml com.mirantis.clearwater.components.Bono: components/Bono.yaml
@ -31,3 +32,5 @@ Classes:
Require: Require:
com.mirantis.network.dns.Bind: com.mirantis.network.dns.Bind:
io.murano.applications: