Merge "Describe use of Manila/CephFS in capabilites_map"
[apex-tripleo-heat-templates.git] / puppet / services / ironic-conductor.yaml
1 heat_template_version: ocata
2
3 description: >
4   OpenStack Ironic conductor configured with Puppet
5
6 parameters:
7   ServiceNetMap:
8     default: {}
9     description: Mapping of service_name -> network name. Typically set
10                  via parameter_defaults in the resource registry.  This
11                  mapping overrides those in ServiceNetMapDefaults.
12     type: json
13   DefaultPasswords:
14     default: {}
15     type: json
16   EndpointMap:
17     default: {}
18     description: Mapping of service endpoint -> protocol. Typically set
19                  via parameter_defaults in the resource registry.
20     type: json
21   IronicCleaningDiskErase:
22     default: 'full'
23     description: Type of disk cleaning before and between deployments,
24                  "full" for full cleaning, "metadata" to clean only disk
25                  metadata (partition table).
26     type: string
27   IronicCleaningNetwork:
28     default: 'provisioning'
29     description: Name or UUID of the *overcloud* network used for cleaning
30                  bare metal nodes. The default value of "provisioning" can be
31                  left during the initial deployment (when no networks are
32                  created yet) and should be changed to an actual UUID in
33                  a post-deployment stack update.
34     type: string
35   IronicEnabledDrivers:
36     default: ['pxe_ipmitool', 'pxe_drac', 'pxe_ilo']
37     description: Enabled Ironic drivers
38     type: comma_delimited_list
39   IronicIPXEEnabled:
40     default: true
41     description: Whether to use iPXE instead of PXE for deployment.
42     type: boolean
43   IronicIPXEPort:
44     default: 8088
45     description: Port to use for serving images when iPXE is used.
46     type: string
47   MonitoringSubscriptionIronicConductor:
48     default: 'overcloud-ironic-conductor'
49     type: string
50
51 resources:
52   IronicBase:
53     type: ./ironic-base.yaml
54     properties:
55       ServiceNetMap: {get_param: ServiceNetMap}
56       DefaultPasswords: {get_param: DefaultPasswords}
57       EndpointMap: {get_param: EndpointMap}
58
59 outputs:
60   role_data:
61     description: Role data for the Ironic conductor role.
62     value:
63       service_name: ironic_conductor
64       monitoring_subscription: {get_param: MonitoringSubscriptionIronicConductor}
65       config_settings:
66         map_merge:
67           - get_attr: [IronicBase, role_data, config_settings]
68           # FIXME: I have no idea why neutron_url is in "api" manifest
69           - ironic::api::neutron_url: {get_param: [EndpointMap, NeutronInternal, uri]}
70             ironic::conductor::api_url: {get_param: [EndpointMap, IronicInternal, uri_no_suffix]}
71             ironic::conductor::cleaning_disk_erase: {get_param: IronicCleaningDiskErase}
72             ironic::conductor::cleaning_network: {get_param: IronicCleaningNetwork}
73             ironic::conductor::enabled_drivers: {get_param: IronicEnabledDrivers}
74             # We need an endpoint containing a real IP, not a VIP here
75             ironic_conductor_http_host: {get_param: [ServiceNetMap, IronicNetwork]}
76             ironic::conductor::http_url:
77               list_join:
78                 - ''
79                 - - 'http://'
80                   - "%{hiera('ironic_conductor_http_host')}:"
81                   - {get_param: IronicIPXEPort}
82             ironic::drivers::pxe::ipxe_enabled: {get_param: IronicIPXEEnabled}
83             ironic::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
84             # NOTE: bind IP is found in Heat replacing the network name with the
85             # local node IP for the given network; replacement examples
86             # (eg. for internal_api):
87             # internal_api -> IP
88             # internal_api_uri -> [IP]
89             # internal_api_subnet - > IP/CIDR
90             ironic::drivers::pxe::tftp_server: {get_param: [ServiceNetMap, IronicNetwork]}
91             # NOTE(dtantsur): UEFI only works with iPXE currently for us
92             ironic::drivers::pxe::uefi_pxe_config_template: '$pybasedir/drivers/modules/ipxe_config.template'
93             ironic::drivers::pxe::uefi_pxe_bootfile_name: 'ipxe.efi'
94             tripleo.ironic_conductor.firewall_rules:
95               '134 ironic conductor TFTP':
96                 dport: 69
97                 proto: udp
98               '135 ironic conductor HTTP':
99                 dport: {get_param: IronicIPXEPort}
100             # NOTE(dtantsur): the my_ip parameter is heavily overloaded in
101             # ironic. It's used as a default value for e.g. TFTP server IP,
102             # glance and neutron endpoints, virtual console IP. We override
103             # the TFTP server IP in ironic-conductor.yaml as it should not be
104             # the VIP, but rather a real IP of the host.
105             ironic::my_ip: {get_param: [ServiceNetMap, IronicNetwork]}
106             ironic::pxe::common::http_port: {get_param: IronicIPXEPort}
107
108       step_config: |
109         include ::tripleo::profile::base::ironic::conductor
110       upgrade_tasks:
111         - name: Stop ironic_conductor service
112           tags: step2
113           service: name=openstack-ironic-conductor state=stopped