087db8cc5b
Without this patch all the instances are deployed with the following hostname: Murano-RandomID-HOSTNAME-randomID With this Patch the new instances will be deployed just with the hostname. This is more benefit on Windows instances where the recommended length for the hostname is 15 characters. Change-Id: I8c9867481071b2ae09c3ea17cba4c535759aaf58 Closes-Bug: #1605786
110 lines
4.1 KiB
YAML
110 lines
4.1 KiB
YAML
Namespaces:
|
|
=: io.murano.resources
|
|
sys: io.murano.system
|
|
std: io.murano
|
|
|
|
Name: LinuxMuranoInstance
|
|
|
|
Extends:
|
|
- LinuxInstance
|
|
|
|
Methods:
|
|
prepareUserData:
|
|
Body:
|
|
- $userData: $.generateUserData()
|
|
- Return:
|
|
data: $._generateInstanceConfigResources($userData)
|
|
format: RAW
|
|
|
|
_generateInstanceConfigResources:
|
|
Arguments:
|
|
- userData:
|
|
Contract: $.string().notNull()
|
|
Body:
|
|
- $region: $.getRegion()
|
|
- $resources: new(sys:Resources)
|
|
- $muranoInitConf: $.generateCloudConfig()
|
|
- $bootScriptResourceName: format('boot_script_{0}', $.name)
|
|
- $userDataResourceName: format('user_data-{0}', $.name)
|
|
- $bootConfigResourceName: format('boot_config-{0}', $.name)
|
|
- $template:
|
|
resources:
|
|
$bootConfigResourceName:
|
|
type: 'OS::Heat::CloudConfig'
|
|
properties:
|
|
cloud_config: $muranoInitConf
|
|
$bootScriptResourceName:
|
|
type: 'OS::Heat::SoftwareConfig'
|
|
properties:
|
|
group: ungrouped
|
|
config: $userData
|
|
$userDataResourceName:
|
|
type: 'OS::Heat::MultipartMime'
|
|
properties:
|
|
parts:
|
|
- config: {get_resource: $bootConfigResourceName}
|
|
- config: {get_resource: $bootScriptResourceName}
|
|
|
|
- $.setAttr(resourceCloudConfig, [$bootScriptResourceName, $userDataResourceName, $bootConfigResourceName])
|
|
- $region.stack.updateTemplate($template)
|
|
- Return: {get_resource: $userDataResourceName}
|
|
|
|
|
|
generateCloudConfig:
|
|
Body:
|
|
- $resources: new(sys:Resources)
|
|
- $muranoInitConf: $resources.yaml('murano-init.conf').bind(dict(
|
|
instanceHostname => $.name
|
|
))
|
|
- Return: $muranoInitConf
|
|
|
|
generateUserData:
|
|
Body:
|
|
- $region: $.getRegion()
|
|
- $rabbitMqParams: $region.getConfig().agentRabbitMq
|
|
- $resources: new(sys:Resources)
|
|
- $configFile: $resources.string('Agent-v2.template')
|
|
- $initScript: $resources.string('linux-init.sh')
|
|
- $muranoScript: $resources.string('murano-init.sh')
|
|
- $muranoAgentConf: $resources.string('murano-agent.conf')
|
|
- $muranoAgentService: $resources.string('murano-agent.service')
|
|
- $muranoAgent: $resources.string('murano-agent')
|
|
- $configReplacements:
|
|
"%RABBITMQ_HOST%": $rabbitMqParams.host
|
|
"%RABBITMQ_PORT%": $rabbitMqParams.port
|
|
"%RABBITMQ_USER%": $rabbitMqParams.login
|
|
"%RABBITMQ_PASSWORD%": $rabbitMqParams.password
|
|
"%RABBITMQ_VHOST%": $rabbitMqParams.virtual_host
|
|
"%RABBITMQ_SSL%": str($rabbitMqParams.ssl).toLower()
|
|
"%RABBITMQ_INSECURE%": str($rabbitMqParams.insecure).toLower()
|
|
"%RABBITMQ_INPUT_QUEUE%": $.agent.queueName()
|
|
"%RESULT_QUEUE%": $region.agentListener.queueName()
|
|
- $scriptReplacements:
|
|
"%AGENT_CONFIG_BASE64%": base64encode($configFile.replace($configReplacements))
|
|
"%INTERNAL_HOSTNAME%": $.name
|
|
"%MURANO_SERVER_ADDRESS%": coalesce(config(file_server), $rabbitMqParams.host)
|
|
- If: config(rabbitmq, ca_certs)
|
|
Then:
|
|
- $scriptReplacements["%CA_ROOT_CERT_BASE64%"]: base64encode(config(rabbitmq, ca_certs, true))
|
|
Else:
|
|
- $scriptReplacements["%CA_ROOT_CERT_BASE64%"]: ''
|
|
- $muranoReplacements:
|
|
"%MURANO_AGENT_CONF%": base64encode($muranoAgentConf)
|
|
"%MURANO_AGENT_SERVICE%": base64encode($muranoAgentService)
|
|
"%MURANO_AGENT%": base64encode($muranoAgent)
|
|
|
|
- $userData: $muranoScript.replace($muranoReplacements) + $initScript.replace($scriptReplacements)
|
|
- Return: $userData
|
|
|
|
releaseResources:
|
|
Body:
|
|
- $region: $.getRegion()
|
|
- $template: $region.stack.current()
|
|
- If: $template.get(resources) and $template.get(outputs)
|
|
Then:
|
|
- $resourcesToDelete: $.getAttr(resourceCloudConfig, [])
|
|
- $template.resources: $template.resources.deleteAll($resourcesToDelete)
|
|
- $region.stack.setTemplate($template)
|
|
|
|
- super($, $.releaseResources())
|