deb-murano/meta/io.murano/Classes/resources/LinuxMuranoInstance.yaml
Jose Phillips 087db8cc5b Set the desired hostname to a instance using murano instead of Murano Pattern
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
2016-09-05 08:02:06 +00:00

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())