Merge "Scalable Clearwater demo app"
This commit is contained in:
commit
68bce15dca
|
@ -32,39 +32,19 @@ Properties:
|
|||
Contract: $.string().notNull()
|
||||
Usage: InOut
|
||||
|
||||
privateIp:
|
||||
Contract: $.string()
|
||||
Usage: Out
|
||||
|
||||
|
||||
Methods:
|
||||
.init:
|
||||
Body:
|
||||
- $.environment: $.find(std:Environment).require()
|
||||
- $.dnsSecKey: base64encode($.dnsSecKey)
|
||||
|
||||
_createReplacements:
|
||||
Body:
|
||||
- Return:
|
||||
"%PUBLIC_IP%": $.instance.floatingIpAddress
|
||||
"%PRIVATE_IP%": $.privateIp
|
||||
"%PRIVATE_IP%": $.instance.joinedNetworks.first().ipList.where($ != $this.instance.floatingIpAddress).first()
|
||||
"%ZONE%": $.zoneName
|
||||
"%DNSSEC_KEY%": $.dnsSecKey
|
||||
"%PRIVATE_NETWORK_CIDR%": $.environment.defaultNetworks.environment.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)
|
||||
"%PRIVATE_NETWORK_CIDR%": $.instance.joinedNetworks.first().network.describe().cidr
|
||||
|
||||
_addSecurityGroupRules:
|
||||
Body:
|
||||
|
@ -88,7 +68,6 @@ Methods:
|
|||
- $._addSecurityGroupRules()
|
||||
- $.instance.deploy()
|
||||
- $._report('Run install script')
|
||||
- $.privateIp: $._getPrivateIp()
|
||||
- $replacements: $._createReplacements()
|
||||
- $file: sys:Resources.string('deployBind.sh').replace($replacements)
|
||||
- conf:Linux.runCommand($.instance.agent, $file)
|
||||
|
|
|
@ -54,11 +54,11 @@ Forms:
|
|||
Enter zone name for BIND installation
|
||||
- name: dnsSecKey
|
||||
type: string
|
||||
label: DNSSEC Key
|
||||
label: DNSSEC Key (Base64-encoded)
|
||||
initial: >-
|
||||
HNujJGI+ELhlIVa6a+h1L0/2XQTbU9RaH+/F7pOQmDfKWTGc58h0rHNjnIQtms5SBQsC6lni1Kcwq8s+3W4TmA
|
||||
SE51akpHSStFTGhsSVZhNmEraDFMMC8yWFFUYlU5UmFIKy9GN3BPUW1EZktXVEdjNThoMHJITmpuSVF0bXM1U0JRc0M2bG5pMUtjd3E4cyszVzRUbUEK
|
||||
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:
|
||||
|
@ -104,9 +104,9 @@ Forms:
|
|||
type: string
|
||||
label: Instance Naming Pattern
|
||||
required: false
|
||||
initial: BIND
|
||||
initial: BIND#
|
||||
maxLength: 64
|
||||
regexpValidator: '^[a-zA-z][-_\w]*$'
|
||||
regexpValidator: '^[a-zA-z][_\w#-]*$'
|
||||
errorMessages:
|
||||
invalid: Just letters, numbers, underscores and hyphens are allowed.
|
||||
helpText: Just letters, numbers, underscores and hyphens are allowed.
|
||||
|
|
|
@ -13,27 +13,23 @@
|
|||
Namespaces:
|
||||
=: com.mirantis.clearwater
|
||||
std: io.murano
|
||||
res: io.murano.resources
|
||||
meta: io.murano.metadata
|
||||
dns: com.mirantis.network.dns
|
||||
cwBase: com.mirantis.clearwater.components.base
|
||||
components: com.mirantis.clearwater.components
|
||||
|
||||
|
||||
|
||||
Name: Clearwater
|
||||
|
||||
Extends: std:Application
|
||||
|
||||
Properties:
|
||||
keypair:
|
||||
Contract: $.string()
|
||||
osImageName:
|
||||
Contract: $.string().notNull()
|
||||
flavorName:
|
||||
Contract: $.string().notNull()
|
||||
dnsApp:
|
||||
Contract: $.class(dns:Bind).notNull()
|
||||
ellis:
|
||||
Contract: $.class(components:Ellis)
|
||||
Usage: Out
|
||||
instanceTemplate:
|
||||
Contract: $.template(res:LinuxInstance)
|
||||
components:
|
||||
Contract:
|
||||
- $.class(cwBase:ClearwaterComponentBase).notNull()
|
||||
|
@ -42,19 +38,33 @@ Properties:
|
|||
Contract: $.string().notNull()
|
||||
Default: ""
|
||||
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:
|
||||
.init:
|
||||
Body:
|
||||
- $._environment: $.find(std:Environment).require()
|
||||
- $.ellis: new(components:Ellis, $this)
|
||||
- $.components:
|
||||
- new(components:Bono, $this)
|
||||
- new(components:Sprout, $this)
|
||||
- new(components:Homer, $this)
|
||||
- new(components:Ralf, $this)
|
||||
- new(components:Homestead, $this)
|
||||
- If: not $.components
|
||||
Then:
|
||||
- $.components:
|
||||
- new(components:Ellis, $this, 'Ellis')
|
||||
- new(components:Ralf, $this, Ralf, allowedFailures => 'quorum')
|
||||
- new(components:Bono, $this, Bono, allowedFailures => 'quorum', clusterSize => $this.bonoClusterSize)
|
||||
- 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:
|
||||
Body:
|
||||
|
@ -88,19 +98,14 @@ Methods:
|
|||
|
||||
deploy:
|
||||
Body:
|
||||
- If: not $.getAttr(deployed, false)
|
||||
Then:
|
||||
- $._report('Start Clearwater deploy')
|
||||
- $._environment.securityGroupManager.addGroupIngress($.getSecurityGroupRules())
|
||||
- $.dnsApp.deploy()
|
||||
- $.ellis.deploy()
|
||||
- $.components.pselect($.deploy())
|
||||
- $._report('Clearwater deployed')
|
||||
- $._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)
|
||||
- $this._report('Start Clearwater deploy')
|
||||
- $this._environment.securityGroupManager.addGroupIngress($this.getSecurityGroupRules())
|
||||
- $this.dnsApp.deploy()
|
||||
- $this.components.pselect($.deploy())
|
||||
- $ellisFloatingIp: $this.components.where($ is components:Ellis).cluster.items.first().floatingIpAddress
|
||||
- $this._report(format('Use Ellis at {0} for create account and manage identities', $ellisFloatingIp))
|
||||
- $edgeProxyIp: $this.components.where($ is components:Bono).first().cluster.items.first().floatingIpAddress
|
||||
- $this._report(format('Outbound edge proxy IP is {0}', $edgeProxyIp))
|
||||
|
||||
_report:
|
||||
Arguments:
|
||||
|
@ -109,3 +114,39 @@ Methods:
|
|||
Body:
|
||||
- $._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()
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ Name: Bono
|
|||
Extends: base:ClearwaterComponentBase
|
||||
|
||||
Methods:
|
||||
_createSecurityGroupRules:
|
||||
getSecurityRules:
|
||||
Body:
|
||||
- $rules:
|
||||
# STUN/TURN
|
||||
|
@ -55,9 +55,4 @@ Methods:
|
|||
FromPort: 32768
|
||||
ToPort: 65535
|
||||
External: true
|
||||
- Return: $rules
|
||||
|
||||
getDeployScriptName:
|
||||
Body:
|
||||
- Return: "deployBono.sh"
|
||||
|
||||
- Return: $rules
|
|
@ -20,7 +20,7 @@ Extends: base:ClearwaterComponentBase
|
|||
|
||||
Methods:
|
||||
|
||||
_createSecurityGroupRules:
|
||||
getSecurityRules:
|
||||
Body:
|
||||
- $rules:
|
||||
# HTTP
|
||||
|
@ -33,8 +33,4 @@ Methods:
|
|||
ToPort: 443
|
||||
IpProtocol: udp
|
||||
External: true
|
||||
- Return: $rules
|
||||
|
||||
getDeployScriptName:
|
||||
Body:
|
||||
- Return: "deployEllis.sh"
|
||||
- Return: $rules
|
|
@ -19,7 +19,7 @@ Name: Homer
|
|||
Extends: base:ClearwaterComponentBase
|
||||
|
||||
Methods:
|
||||
_createSecurityGroupRules:
|
||||
getSecurityRules:
|
||||
Body:
|
||||
- $rules:
|
||||
# Ut/HTTP
|
||||
|
@ -41,9 +41,4 @@ Methods:
|
|||
ToPort: 9160
|
||||
External: false
|
||||
|
||||
- Return: $rules
|
||||
|
||||
getDeployScriptName:
|
||||
Body:
|
||||
- Return: "deployHomer.sh"
|
||||
|
||||
- Return: $rules
|
|
@ -19,7 +19,7 @@ Name: Homestead
|
|||
Extends: base:ClearwaterComponentBase
|
||||
|
||||
Methods:
|
||||
_createSecurityGroupRules:
|
||||
getSecurityRules:
|
||||
Body:
|
||||
- $rules:
|
||||
# REST-ful Provisioning API
|
||||
|
@ -45,9 +45,4 @@ Methods:
|
|||
FromPort: 7199
|
||||
ToPort: 7199
|
||||
External: false
|
||||
- Return: $rules
|
||||
|
||||
getDeployScriptName:
|
||||
Body:
|
||||
- Return: "deployHomestead.sh"
|
||||
|
||||
- Return: $rules
|
|
@ -19,7 +19,7 @@ Name: Ralf
|
|||
Extends: base:ClearwaterComponentBase
|
||||
|
||||
Methods:
|
||||
_createSecurityGroupRules:
|
||||
getSecurityRules:
|
||||
Body:
|
||||
- $rules:
|
||||
# Rf-like/HTTP API
|
||||
|
@ -46,9 +46,4 @@ Methods:
|
|||
FromPort: 11211
|
||||
ToPort: 11211
|
||||
External: false
|
||||
- Return: $rules
|
||||
|
||||
getDeployScriptName:
|
||||
Body:
|
||||
- Return: "deployRalf.sh"
|
||||
|
||||
- Return: $rules
|
|
@ -19,7 +19,7 @@ Name: Sprout
|
|||
Extends: base:ClearwaterComponentBase
|
||||
|
||||
Methods:
|
||||
_createSecurityGroupRules:
|
||||
getSecurityRules:
|
||||
Body:
|
||||
- $rules:
|
||||
# Internal SIP
|
||||
|
@ -46,9 +46,4 @@ Methods:
|
|||
FromPort: 11211
|
||||
ToPort: 11211
|
||||
External: false
|
||||
- Return: $rules
|
||||
|
||||
getDeployScriptName:
|
||||
Body:
|
||||
- Return: "deploySprout.sh"
|
||||
|
||||
- Return: $rules
|
|
@ -16,107 +16,115 @@ Namespaces:
|
|||
res: io.murano.resources
|
||||
sys: io.murano.system
|
||||
conf: io.murano.configuration
|
||||
apps: io.murano.applications
|
||||
cw: com.mirantis.clearwater
|
||||
|
||||
|
||||
|
||||
Name: ClearwaterComponentBase
|
||||
|
||||
Extends:
|
||||
- apps:SoftwareComponent
|
||||
- apps:OpenStackSecurityConfigurable
|
||||
|
||||
Properties:
|
||||
instance:
|
||||
Contract: $.class(res:LinuxMuranoInstance)
|
||||
clusterSize:
|
||||
Contract: $.int().notNull()
|
||||
Default: 1
|
||||
|
||||
cluster:
|
||||
Contract: $.class(apps:ServerReplicationGroup)
|
||||
Usage: Out
|
||||
|
||||
serverProvider:
|
||||
Contract: $.class(apps:TemplateServerProvider)
|
||||
Usage: Out
|
||||
|
||||
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:
|
||||
Arguments:
|
||||
- instance:
|
||||
Contract: $.class(res:LinuxMuranoInstance).notNull()
|
||||
Contract: $.class(res:LinuxInstance).notNull()
|
||||
- index:
|
||||
Contract: $.int().notNull()
|
||||
Body:
|
||||
- $instancePrivateIp: $instance.joinedNetworks.first().ipList.where($ != $instance.floatingIpAddress).first()
|
||||
- Return:
|
||||
"%INDEX%": $index
|
||||
"%PUBLIC_IP%": $instance.floatingIpAddress
|
||||
"%PRIVATE_IP%": $.privateIp
|
||||
"%PRIVATE_NETWORK_CIDR%": $.privateNetwork.describe().cidr
|
||||
"%PRIVATE_NETWORK_GATEWAY%": $.privateNetwork.describe().gateway
|
||||
"%PRIVATE_IP%": $instancePrivateIp
|
||||
"%PRIVATE_NETWORK_CIDR%": $instance.joinedNetworks.first().network.describe().cidr
|
||||
"%PRIVATE_NETWORK_GATEWAY%": $instance.joinedNetworks.first().network.describe().gateway
|
||||
"%ZONE%": $.parent.dnsApp.zoneName
|
||||
"%DNSSEC_KEY%": $.parent.dnsApp.dnsSecKey
|
||||
"%DNS_PRIVATE_IP%": $.parent.dnsApp.privateIp
|
||||
"%ETCD_IP%": $.parent.etcdClusterIp or $.privateIp
|
||||
"%DNS_PRIVATE_IP%": $.parent.dnsApp.instance.joinedNetworks.first().ipList.where($ = $instance.floatingIpAddress).first()
|
||||
"%ETCD_IP%": $.parent.etcdClusterIp or $instancePrivateIp
|
||||
|
||||
_getIp4ForNetwork:
|
||||
#Works only for IPv4 network with 255.255.255.0 netmask
|
||||
getDeployScriptName:
|
||||
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:
|
||||
- network:
|
||||
Contract: $.class(res:NeutronNetwork).notNull()
|
||||
- instance:
|
||||
Contract: $.class(res:LinuxInstance).notNull()
|
||||
- serverGroup:
|
||||
Contract: $.class(apps:ServerReplicationGroup).notNull()
|
||||
Body:
|
||||
- $gateIp: $network.describe().gateway
|
||||
- $netAddr: $gateIp.split('.').take(3)
|
||||
- Return: $.instance.ipAddresses.where(list($.split('.').take(3)) = $netAddr).first(null)
|
||||
- $index: $serverGroup.getServers().indexWhere($.name = $instance.name)
|
||||
- $instancePrivateIp: $instance.joinedNetworks.first().ipList.where($ != $instance.floatingIpAddress).first()
|
||||
- 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:
|
||||
- rules:
|
||||
Contract:
|
||||
- FromPort: $.int().notNull()
|
||||
ToPort: $.int().notNull()
|
||||
IpProtocol: $.string().notNull()
|
||||
External: $.bool().notNull()
|
||||
Ethertype: $.string().check($ in list(null, 'IPv4', 'IPv6'))
|
||||
- instance:
|
||||
Contract: $.class(res:LinuxInstance).notNull()
|
||||
- serverGroup:
|
||||
Contract: $.class(apps:ServerReplicationGroup).notNull()
|
||||
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:
|
||||
Body:
|
||||
- If: not $.getAttr(deployed, false)
|
||||
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))
|
||||
- $this.deployAt($this.cluster)
|
||||
|
||||
|
||||
_report:
|
||||
Arguments:
|
||||
- message:
|
||||
Contract: $.string().notNull()
|
||||
scaleOut:
|
||||
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()
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
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 -
|
||||
|
@ -9,15 +10,18 @@ apt-get update
|
|||
# Configure /etc/clearwater/local_config.
|
||||
mkdir -p /etc/clearwater
|
||||
etcd_ip=%PRIVATE_IP%
|
||||
[ -n "$etcd_ip" ] || etcd_ip=%PRIVATE_IP%
|
||||
cat > /etc/clearwater/local_config << EOF
|
||||
local_ip=%PRIVATE_IP%
|
||||
public_ip=%PUBLIC_IP%
|
||||
public_hostname=ellis-0.%ZONE%
|
||||
public_hostname=ellis-%INDEX%.%ZONE%
|
||||
etcd_cluster=$etcd_ip
|
||||
EOF
|
||||
|
||||
# Now install the software.
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install ellis --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
|
||||
/usr/share/clearwater/clearwater-etcd/scripts/wait_for_etcd
|
||||
# Configure and upload /etc/clearwater/shared_config.
|
||||
|
@ -43,41 +47,17 @@ turn_workaround=secret
|
|||
ellis_api_key=secret
|
||||
ellis_cookie_key=secret
|
||||
EOF
|
||||
|
||||
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.
|
||||
# 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
|
||||
service clearwater-infrastructure restart
|
||||
service ellis stop
|
||||
# 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%
|
||||
# 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.
|
|
@ -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
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
deploy() {
|
||||
|
||||
# Log all output to file.
|
||||
exec > >(tee -a /var/log/clearwater-homer.log) 2>&1
|
||||
set -x
|
||||
|
@ -16,39 +17,14 @@ cat > /etc/clearwater/local_config << EOF
|
|||
management_local_ip=%PRIVATE_IP%
|
||||
local_ip=%PRIVATE_IP%
|
||||
public_ip=%PUBLIC_IP%
|
||||
public_hostname=homer-0.%ZONE%
|
||||
public_hostname=homer-%INDEX%.%ZONE%
|
||||
etcd_cluster=$etcd_ip
|
||||
EOF
|
||||
|
||||
# Now install the software.
|
||||
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 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.
|
|
@ -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
|
|
@ -15,39 +15,13 @@ cat > /etc/clearwater/local_config << EOF
|
|||
management_local_ip=%PRIVATE_IP%
|
||||
local_ip=%PRIVATE_IP%
|
||||
public_ip=%PRIVATE_IP%
|
||||
public_hostname=homestead-0.%ZONE%
|
||||
public_hostname=homestead-%INDEX%.%ZONE%
|
||||
etcd_cluster=$etcd_ip
|
||||
EOF
|
||||
|
||||
# Now install the software.
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install homestead homestead-prov clearwater-prov-tools --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.
|
|
@ -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
|
|
@ -15,7 +15,7 @@ cat > /etc/clearwater/local_config << EOF
|
|||
management_local_ip=%PRIVATE_IP%
|
||||
local_ip=%PRIVATE_IP%
|
||||
public_ip=%PRIVATE_IP%
|
||||
public_hostname=ralf-0.%ZONE%
|
||||
public_hostname=ralf-%INDEX%.%ZONE%
|
||||
etcd_cluster=$etcd_ip
|
||||
EOF
|
||||
# Create /etc/chronos/chronos.conf.
|
||||
|
@ -33,35 +33,10 @@ enabled = true
|
|||
[exceptions]
|
||||
max_ttl = 600
|
||||
EOF
|
||||
|
||||
# Now install the software.
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install ralf --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.
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -12,18 +12,37 @@
|
|||
|
||||
Version: 2.2
|
||||
|
||||
Templates:
|
||||
customJoinNet:
|
||||
- ?:
|
||||
type: io.murano.resources.ExistingNeutronNetwork
|
||||
internalNetworkName: $.instanceConfiguration.network[0]
|
||||
internalSubnetworkName: $.instanceConfiguration.network[1]
|
||||
|
||||
Application:
|
||||
?:
|
||||
type: com.mirantis.clearwater.Clearwater
|
||||
keypair: $.commonInstanceConfiguration.keypair
|
||||
zoneName: $.commonInstanceConfiguration.zoneName
|
||||
osImageName: $.commonInstanceConfiguration.osImage
|
||||
flavorName: $.commonInstanceConfiguration.flavor
|
||||
dnssecKey: $.commonInstanceConfiguration.dnsseckey
|
||||
dnsApp: $.components.dnsServer
|
||||
instanceTemplate:
|
||||
?:
|
||||
type: io.murano.resources.LinuxMuranoInstance
|
||||
name: anything
|
||||
flavor: $.instanceConfiguration.flavor
|
||||
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:
|
||||
- commonInstanceConfiguration:
|
||||
- instanceConfiguration:
|
||||
fields:
|
||||
- name: keypair
|
||||
type: keypair
|
||||
|
@ -32,6 +51,12 @@ Forms:
|
|||
Select the Key Pair to control access to instances. You can login to
|
||||
instances using this KeyPair after the deployment of application.
|
||||
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
|
||||
type: image
|
||||
label: Instance image
|
||||
|
@ -39,17 +64,39 @@ Forms:
|
|||
description: >-
|
||||
Select valid Ubuntu 14.04 image with cloud-init preinstalled for the application.
|
||||
Image should already be prepared and registered in glance.
|
||||
- name: flavor
|
||||
type: flavor
|
||||
label: Instance flavor
|
||||
description: >-
|
||||
Select registered in Openstack flavor. Consider that application performance
|
||||
depends on this parameter.
|
||||
- name: availabilityZone
|
||||
type: azone
|
||||
label: Availability zone
|
||||
description: Select availability zone where application would be installed.
|
||||
required: false
|
||||
- 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:
|
||||
- name: dnsServer
|
||||
type: com.mirantis.network.dns.Bind
|
||||
label: DNS server
|
||||
description: >-
|
||||
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
|
|
@ -19,6 +19,7 @@ Description: |
|
|||
Author: 'Mirantis, Inc'
|
||||
Tags: [vIMS]
|
||||
Classes:
|
||||
com.mirantis.clearwater.components.base.ClearwaterReplicaProvider: components/base/ClearwaterComponentBase.yaml
|
||||
com.mirantis.clearwater.Clearwater: Clearwater.yaml
|
||||
com.mirantis.clearwater.components.base.ClearwaterComponentBase: components/base/ClearwaterComponentBase.yaml
|
||||
com.mirantis.clearwater.components.Bono: components/Bono.yaml
|
||||
|
@ -31,3 +32,5 @@ Classes:
|
|||
|
||||
Require:
|
||||
com.mirantis.network.dns.Bind:
|
||||
io.murano.applications:
|
||||
|
||||
|
|
Loading…
Reference in New Issue