Fix cinder error when CinderNfsMountOptions option is absent
[apex-tripleo-heat-templates.git] / puppet / compute.yaml
1 heat_template_version: 2015-04-30
2
3 description: >
4   OpenStack hypervisor node configured via Puppet.
5
6 parameters:
7   AdminPassword:
8     default: unset
9     description: The password for the keystone admin account, used for monitoring, querying neutron etc.
10     type: string
11     hidden: true
12   CeilometerComputeAgent:
13     description: Indicates whether the Compute agent is present and expects nova-compute to be configured accordingly
14     type: string
15     default: ''
16     constraints:
17     - allowed_values: ['', Present]
18   CeilometerMeteringSecret:
19     default: unset
20     description: Secret shared by the ceilometer services.
21     type: string
22     hidden: true
23   CeilometerPassword:
24     default: unset
25     description: The password for the ceilometer service account.
26     type: string
27     hidden: true
28   CinderEnableNfsBackend:
29     default: false
30     description: Whether to enable or not the NFS backend for Cinder
31     type: boolean
32   CinderEnableRbdBackend:
33     default: false
34     description: Whether to enable or not the Rbd backend for Cinder
35     type: boolean
36   Debug:
37     default: ''
38     description: Set to True to enable debugging on all services.
39     type: string
40   ExtraConfig:
41     default: {}
42     description: |
43       Additional hiera configuration to inject into the cluster. Note
44       that NovaComputeExtraConfig takes precedence over ExtraConfig.
45     type: json
46   Flavor:
47     description: Flavor for the nova compute node
48     type: string
49     constraints:
50       - custom_constraint: nova.flavor
51   GlanceHost:
52     type: string
53     default: ''  # Has to be here because of the ignored empty value bug
54   GlancePort:
55     default: "9292"
56     description: Glance port.
57     type: string
58   GlanceProtocol:
59     default: http
60     description: Protocol to use when connecting to glance, set to https for SSL.
61     type: string
62   Image:
63     type: string
64     default: overcloud-compute
65     constraints:
66       - custom_constraint: glance.image
67   ImageUpdatePolicy:
68     default: 'REBUILD_PRESERVE_EPHEMERAL'
69     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
70     type: string
71   KeyName:
72     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
73     type: string
74     default: default
75     constraints:
76       - custom_constraint: nova.keypair
77   KeystoneAdminApiVirtualIP:
78     type: string
79     default: ''
80   KeystonePublicApiVirtualIP:
81      type: string
82      default: ''
83   NeutronBridgeMappings:
84     description: >
85       The OVS logical->physical bridge mappings to use. See the Neutron
86       documentation for details. Defaults to mapping br-ex - the external
87       bridge on hosts - to a physical name 'datacentre' which can be used
88       to create provider networks (and we use this for the default floating
89       network) - if changing this either use different post-install network
90       scripts or be sure to keep 'datacentre' as a mapping network name.
91     type: string
92     default: "datacentre:br-ex"
93   NeutronEnableTunnelling:
94     type: string
95     default: "True"
96   NeutronFlatNetworks:
97     type: string
98     default: 'datacentre'
99     description: >
100       If set, flat networks to configure in neutron plugins.
101   NeutronHost:
102     type: string
103     default: ''  # Has to be here because of the ignored empty value bug
104   NeutronNetworkType:
105     type: string
106     description: The tenant network type for Neutron, either gre or vxlan.
107     default: 'vxlan'
108   NeutronNetworkVLANRanges:
109     default: 'datacentre'
110     description: >
111       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
112       Neutron documentation for permitted values. Defaults to permitting any
113       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
114     type: comma_delimited_list
115   NeutronPassword:
116     default: unset
117     description: The password for the neutron service account, used by neutron agents.
118     type: string
119     hidden: true
120   NeutronPhysicalBridge:
121     default: 'br-ex'
122     description: An OVS bridge to create for accessing external networks.
123     type: string
124   NeutronPublicInterface:
125     default: nic1
126     description: A port to add to the NeutronPhysicalBridge.
127     type: string
128   NeutronTunnelTypes:
129     type: string
130     description: |
131         The tunnel types for the Neutron tenant network. To specify multiple
132         values, use a comma separated string, like so: 'gre,vxlan'
133     default: 'vxlan'
134   NeutronTunnelIdRanges:
135     description: |
136         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
137         of GRE tunnel IDs that are available for tenant network allocation
138     default: ["1:1000", ]
139     type: comma_delimited_list
140   NeutronVniRanges:
141     description: |
142         Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
143         of VXLAN VNI IDs that are available for tenant network allocation
144     default: ["1:1000", ]
145     type: comma_delimited_list
146   NeutronPublicInterfaceRawDevice:
147     default: ''
148     type: string
149   NeutronDVR:
150     default: 'False'
151     type: string
152   NeutronMetadataProxySharedSecret:
153     default: 'unset'
154     description: Shared secret to prevent spoofing
155     type: string
156     hidden: true
157   NeutronCorePlugin:
158     default: 'ml2'
159     description: |
160         The core plugin for Neutron. The value should be the entrypoint to be loaded
161         from neutron.core_plugins namespace.
162     type: string
163   NeutronServicePlugins:
164     default: "router"
165     description: |
166         Comma-separated list of service plugin entrypoints to be loaded from the
167         neutron.service_plugins namespace.
168     type: comma_delimited_list
169   NeutronTypeDrivers:
170     default: "vxlan,vlan,flat,gre"
171     description: |
172         Comma-separated list of network type driver entrypoints to be loaded.
173     type: comma_delimited_list
174   NeutronMechanismDrivers:
175     default: 'openvswitch'
176     description: |
177         The mechanism drivers for the Neutron tenant network. To specify multiple
178         values, use a comma separated string, like so: 'openvswitch,l2_population'
179     type: string
180   # Not relevant for Computes, should be removed
181   NeutronAllowL3AgentFailover:
182     default: 'True'
183     description: Allow automatic l3-agent failover
184     type: string
185   # Not relevant for Computes, should be removed
186   NeutronL3HA:
187     default: 'False'
188     description: Whether to enable l3-agent HA
189     type: string
190   NeutronAgentMode:
191     default: 'dvr_snat'
192     description: Agent mode for the neutron-l3-agent on the controller hosts
193     type: string
194   NovaApiHost:
195     type: string
196     default: ''  # Has to be here because of the ignored empty value bug
197   NovaComputeDriver:
198     type: string
199     default: libvirt.LibvirtDriver
200   NovaComputeExtraConfig:
201     default: {}
202     description: |
203       NovaCompute specific configuration to inject into the cluster. Same
204       structure as ExtraConfig.
205     type: json
206   NovaComputeLibvirtType:
207     type: string
208     default: ''
209   NovaEnableRbdBackend:
210     default: false
211     description: Whether to enable or not the Rbd backend for Nova
212     type: boolean
213   NovaPassword:
214     default: unset
215     description: The password for the nova service account, used by nova-api.
216     type: string
217     hidden: true
218   NovaPublicIP:
219     type: string
220     default: ''  # Has to be here because of the ignored empty value bug
221   NtpServer:
222     default: ''
223     description: Comma-separated list of ntp servers
224     type: comma_delimited_list
225   RabbitHost:
226     type: string
227     default: ''  # Has to be here because of the ignored empty value bug
228   RabbitPassword:
229     default: guest
230     description: The password for RabbitMQ
231     type: string
232     hidden: true
233   RabbitUserName:
234     default: guest
235     description: The username for RabbitMQ
236     type: string
237   RabbitClientUseSSL:
238     default: false
239     description: >
240         Rabbit client subscriber parameter to specify
241         an SSL connection to the RabbitMQ host.
242     type: string
243   RabbitClientPort:
244     default: 5672
245     description: Set rabbit subscriber port, change this if using SSL
246     type: number
247   SnmpdReadonlyUserName:
248     default: ro_snmp_user
249     description: The user name for SNMPd with readonly rights running on all Overcloud nodes
250     type: string
251   SnmpdReadonlyUserPassword:
252     default: unset
253     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
254     type: string
255     hidden: true
256   EnablePackageInstall:
257     default: 'false'
258     description: Set to true to enable package installation via Puppet
259     type: boolean
260   ServiceNetMap:
261     default: {}
262     description: Mapping of service_name -> network name. Typically set
263                  via parameter_defaults in the resource registry.
264     type: json
265   UpdateIdentifier:
266     default: ''
267     type: string
268     description: >
269       Setting to a previously unused value during stack-update will trigger
270       package update on all nodes
271   Hostname:
272     type: string
273     default: '' # Defaults to Heat created hostname
274
275 resources:
276
277   NovaCompute:
278     type: OS::Nova::Server
279     properties:
280       image:
281         {get_param: Image}
282       image_update_policy:
283         get_param: ImageUpdatePolicy
284       flavor: {get_param: Flavor}
285       key_name: {get_param: KeyName}
286       networks:
287         - network: ctlplane
288       user_data_format: SOFTWARE_CONFIG
289       user_data: {get_resource: UserData}
290       name: {get_param: Hostname}
291
292   # Combine the NodeAdminUserData and NodeUserData mime archives
293   UserData:
294     type: OS::Heat::MultipartMime
295     properties:
296       parts:
297       - config: {get_resource: NodeAdminUserData}
298         type: multipart
299       - config: {get_resource: NodeUserData}
300         type: multipart
301
302   # Creates the "heat-admin" user if configured via the environment
303   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
304   NodeAdminUserData:
305     type: OS::TripleO::NodeAdminUserData
306
307   # For optional operator additional userdata
308   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
309   NodeUserData:
310     type: OS::TripleO::NodeUserData
311
312   InternalApiPort:
313     type: OS::TripleO::Compute::Ports::InternalApiPort
314     properties:
315       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
316
317   StoragePort:
318     type: OS::TripleO::Compute::Ports::StoragePort
319     properties:
320       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
321
322   TenantPort:
323     type: OS::TripleO::Compute::Ports::TenantPort
324     properties:
325       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
326
327   NetIpMap:
328     type: OS::TripleO::Network::Ports::NetIpMap
329     properties:
330       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
331       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
332       StorageIp: {get_attr: [StoragePort, ip_address]}
333       TenantIp: {get_attr: [TenantPort, ip_address]}
334
335   NetworkConfig:
336     type: OS::TripleO::Compute::Net::SoftwareConfig
337     properties:
338       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
339       InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
340       StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
341       TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
342
343   NetworkDeployment:
344     type: OS::TripleO::SoftwareDeployment
345     properties:
346       config: {get_resource: NetworkConfig}
347       server: {get_resource: NovaCompute}
348       input_values:
349         bridge_name: {get_param: NeutronPhysicalBridge}
350         interface_name: {get_param: NeutronPublicInterface}
351
352   NovaComputeConfig:
353     type: OS::Heat::StructuredConfig
354     properties:
355       group: os-apply-config
356       config:
357         hiera:
358           hierarchy:
359             - '"%{::uuid}"'
360             - heat_config_%{::deploy_config_name}
361             - compute_extraconfig
362             - extraconfig
363             - compute
364             - ceph_cluster # provided by CephClusterConfig
365             - ceph
366             - all_nodes # provided by allNodesConfig
367             - '"%{::osfamily}"'
368             - common
369             - cisco_n1kv_data  # Optionally provided by ComputeExtraConfigPre
370           datafiles:
371             compute_extraconfig:
372               mapped_data: {get_param: NovaComputeExtraConfig}
373             extraconfig:
374               mapped_data: {get_param: ExtraConfig}
375             common:
376               raw_data: {get_file: hieradata/common.yaml}
377             ceph:
378               raw_data: {get_file: hieradata/ceph.yaml}
379             compute:
380               raw_data: {get_file: hieradata/compute.yaml}
381               mapped_data:
382                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
383                 nova::debug: {get_input: debug}
384                 nova::rabbit_userid: {get_input: rabbit_username}
385                 nova::rabbit_password: {get_input: rabbit_password}
386                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
387                 nova::rabbit_port: {get_input: rabbit_client_port}
388                 nova_compute_driver: {get_input: nova_compute_driver}
389                 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
390                 nova_api_host: {get_input: nova_api_host}
391                 nova::compute::vncproxy_host: {get_input: nova_public_ip}
392                 nova::compute::rbd::ephemeral_storage: {get_input: nova_enable_rbd_backend}
393                 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
394                 nova_password: {get_input: nova_password}
395                 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
396                 ceilometer::debug: {get_input: debug}
397                 ceilometer::rabbit_userid: {get_input: rabbit_username}
398                 ceilometer::rabbit_password: {get_input: rabbit_password}
399                 ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
400                 ceilometer::rabbit_port: {get_input: rabbit_client_port}
401                 ceilometer::metering_secret: {get_input: ceilometer_metering_secret}
402                 ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
403                 ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
404                 ceilometer_compute_agent: {get_input: ceilometer_compute_agent}
405                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
406                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
407                 nova::glance_api_servers: {get_input: glance_api_servers}
408                 neutron::debug: {get_input: debug}
409                 neutron::rabbit_password: {get_input: rabbit_password}
410                 neutron::rabbit_user: {get_input: rabbit_user}
411                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
412                 neutron::rabbit_port: {get_input: rabbit_client_port}
413                 neutron_flat_networks: {get_input: neutron_flat_networks}
414                 neutron_host: {get_input: neutron_host}
415                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
416
417                 neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
418                 neutron_tunnel_types: {get_input: neutron_tunnel_types}
419                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
420                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
421                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
422                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
423                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
424                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
425                 neutron_public_interface: {get_input: neutron_public_interface}
426                 nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
427                 nova::network::neutron::neutron_url: {get_input: neutron_url}
428                 nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
429                 neutron_router_distributed: {get_input: neutron_router_distributed}
430                 neutron_agent_mode: {get_input: neutron_agent_mode}
431                 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
432                 neutron::core_plugin: {get_input: neutron_core_plugin}
433                 neutron::service_plugins: {get_input: neutron_service_plugins}
434                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
435                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
436                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
437                 admin_password: {get_input: admin_password}
438                 ntp::servers: {get_input: ntp_servers}
439                 tripleo::packages::enable_install: {get_input: enable_package_install}
440                 tripleo::packages::enable_upgrade: {get_input: enable_package_upgrade}
441
442   NovaComputeDeployment:
443     type: OS::TripleO::SoftwareDeployment
444     depends_on: NetworkDeployment
445     properties:
446       config: {get_resource: NovaComputeConfig}
447       server: {get_resource: NovaCompute}
448       input_values:
449         cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
450         debug: {get_param: Debug}
451         nova_compute_driver: {get_param: NovaComputeDriver}
452         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
453         nova_public_ip: {get_param: NovaPublicIP}
454         nova_api_host: {get_param: NovaApiHost}
455         nova_password: {get_param: NovaPassword}
456         nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
457         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
458         nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
459         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
460         ceilometer_password: {get_param: CeilometerPassword}
461         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
462         ceilometer_agent_auth_url:
463           list_join:
464             - ''
465             - - 'http://'
466               - {get_param: KeystonePublicApiVirtualIP}
467               - ':5000/v2.0'
468         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
469         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
470         glance_api_servers:
471           list_join:
472             - ''
473             - - {get_param: GlanceProtocol}
474               - '://'
475               - {get_param: GlanceHost}
476               - ':'
477               - {get_param: GlancePort}
478         neutron_flat_networks: {get_param: NeutronFlatNetworks}
479         neutron_host: {get_param: NeutronHost}
480         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
481         neutron_tenant_network_type: {get_param: NeutronNetworkType}
482         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
483         neutron_tunnel_id_ranges:
484           str_replace:
485             template: "['RANGES']"
486             params:
487               RANGES:
488                 list_join:
489                 - "','"
490                 - {get_param: NeutronTunnelIdRanges}
491         neutron_vni_ranges:
492           str_replace:
493             template: "['RANGES']"
494             params:
495               RANGES:
496                 list_join:
497                 - "','"
498                 - {get_param: NeutronVniRanges}
499         neutron_network_vlan_ranges:
500           str_replace:
501             template: "['RANGES']"
502             params:
503               RANGES:
504                 list_join:
505                 - "','"
506                 - {get_param: NeutronNetworkVLANRanges}
507         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
508         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
509         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
510         neutron_public_interface: {get_param: NeutronPublicInterface}
511         neutron_password: {get_param: NeutronPassword}
512         neutron_agent_mode: {get_param: NeutronAgentMode}
513         neutron_router_distributed: {get_param: NeutronDVR}
514         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
515         neutron_core_plugin: {get_param: NeutronCorePlugin}
516         neutron_service_plugins:
517           str_replace:
518             template: "['PLUGINS']"
519             params:
520               PLUGINS:
521                 list_join:
522                 - "','"
523                 - {get_param: NeutronServicePlugins}
524         neutron_type_drivers:
525           str_replace:
526             template: "['DRIVERS']"
527             params:
528               DRIVERS:
529                 list_join:
530                 - "','"
531                 - {get_param: NeutronTypeDrivers}
532         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
533         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
534         neutron_url:
535           list_join:
536             - ''
537             - - 'http://'
538               - {get_param: NeutronHost}
539               - ':9696'
540         neutron_admin_auth_url:
541           list_join:
542             - ''
543             - - 'http://'
544               - {get_param: KeystoneAdminApiVirtualIP}
545               - ':35357/v2.0'
546         admin_password: {get_param: AdminPassword}
547         rabbit_username: {get_param: RabbitUserName}
548         rabbit_password: {get_param: RabbitPassword}
549         rabbit_client_use_ssl: {get_param: RabbitClientUseSSL}
550         rabbit_client_port: {get_param: RabbitClientPort}
551         ntp_servers: {get_param: NtpServer}
552         enable_package_install: {get_param: EnablePackageInstall}
553         enable_package_upgrade: {get_attr: [UpdateDeployment, update_managed_packages]}
554
555   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
556   ComputeExtraConfigPre:
557     depends_on: NovaComputeDeployment
558     type: OS::TripleO::ComputeExtraConfigPre
559     properties:
560         server: {get_resource: NovaCompute}
561
562   # Hook for site-specific additional pre-deployment config,
563   # applying to all nodes, e.g node registration/unregistration
564   NodeExtraConfig:
565     depends_on: ComputeExtraConfigPre
566     type: OS::TripleO::NodeExtraConfig
567     properties:
568         server: {get_resource: NovaCompute}
569
570   UpdateConfig:
571     type: OS::TripleO::Tasks::PackageUpdate
572
573   UpdateDeployment:
574     type: OS::Heat::SoftwareDeployment
575     properties:
576       config: {get_resource: UpdateConfig}
577       server: {get_resource: NovaCompute}
578       input_values:
579         update_identifier:
580           get_param: UpdateIdentifier
581
582 outputs:
583   ip_address:
584     description: IP address of the server in the ctlplane network
585     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
586   internal_api_ip_address:
587     description: IP address of the server in the internal_api network
588     value: {get_attr: [InternalApiPort, ip_address]}
589   storage_ip_address:
590     description: IP address of the server in the storage network
591     value: {get_attr: [StoragePort, ip_address]}
592   tenant_ip_address:
593     description: IP address of the server in the tenant network
594     value: {get_attr: [TenantPort, ip_address]}
595   hostname:
596     description: Hostname of the server
597     value: {get_attr: [NovaCompute, name]}
598   hosts_entry:
599     description: >
600       Server's IP address and hostname in the /etc/hosts format
601     value:
602       str_replace:
603         template: "IP HOST.localdomain HOST"
604         params:
605           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
606           HOST: {get_attr: [NovaCompute, name]}
607   nova_server_resource:
608     description: Heat resource handle for the Nova compute server
609     value:
610       {get_resource: NovaCompute}
611   config_identifier:
612     description: identifier which changes if the node configuration may need re-applying
613     value:
614       list_join:
615       - ','
616       - - {get_attr: [NovaComputeDeployment, deploy_stdout]}
617         - {get_attr: [ComputeExtraConfigPre, deploy_stdout]}
618         - {get_param: UpdateIdentifier}