355 lines
11 KiB
YAML
355 lines
11 KiB
YAML
---
|
|
# Copyright 2017, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
_ironic_api_is_first_play_host: >-
|
|
{{
|
|
(ironic_services['ironic-api']['group'] in group_names and
|
|
inventory_hostname == (groups[ironic_services['ironic-api']['group']] | intersect(ansible_play_hosts)) | first) | bool
|
|
}}
|
|
_ironic_inspector_is_first_play_host: >-
|
|
{{
|
|
(ironic_services['ironic-inspector']['group'] in group_names and
|
|
inventory_hostname == (groups[ironic_services['ironic-inspector']['group']] | intersect(ansible_play_hosts)) | first) | bool
|
|
}}
|
|
_ironic_oslomsg_rpc_vhost_conf: >-
|
|
{{
|
|
(ironic_oslomsg_rpc_vhost is string) | ternary(
|
|
ironic_oslomsg_rpc_vhost, ironic_oslomsg_rpc_vhost | selectattr('state', 'eq', 'present') | map(attribute='name') | first)
|
|
}}
|
|
_ironic_oslomsg_notify_vhost_conf: >-
|
|
{{
|
|
(ironic_oslomsg_notify_vhost is string) | ternary(
|
|
ironic_oslomsg_notify_vhost, ironic_oslomsg_notify_vhost | selectattr('state', 'eq', 'present') | map(attribute='name') | first)
|
|
}}
|
|
# This special list brings together all of the package installations into one
|
|
# task to save time.
|
|
|
|
ironic_driver_types:
|
|
no_driver:
|
|
inspect: no-inspect
|
|
console: no-console
|
|
raid: no-raid
|
|
agent_ilo:
|
|
hardware_type: ilo
|
|
boot: ilo-virtual-media
|
|
deploy: direct
|
|
inspect: ilo
|
|
management: ilo
|
|
power: ilo
|
|
console: ilo
|
|
raid: agent
|
|
agent_ipmitool:
|
|
hardware_type: ipmi
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: inspector
|
|
management: ipmitool
|
|
power: ipmitool
|
|
console: no-console
|
|
raid: agent
|
|
agent_ipmitool_socat:
|
|
hardware_type: ipmi
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: inspector
|
|
management: ipmitool
|
|
power: ipmitool
|
|
console: ipmitool-socat
|
|
raid: agent
|
|
agent_irmc:
|
|
hardware_type: irmc
|
|
boot: irmc-virtual-media
|
|
deploy: direct
|
|
inspect: irmc
|
|
management: irmc
|
|
power: irmc
|
|
console: ipmitool-socat
|
|
raid: irmc
|
|
pxe_drac:
|
|
hardware_type: idrac
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: idrac-wsman
|
|
management: idrac-wsman
|
|
power: idrac-wsman
|
|
console: no-console
|
|
raid: idrac-wsman
|
|
pxe_drac_inspector:
|
|
hardware_type: idrac
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: inspector
|
|
management: idrac-wsman
|
|
power: idrac-wsman
|
|
console: no-console
|
|
raid: idrac-wsman
|
|
pxe_ilo:
|
|
hardware_type: ilo
|
|
boot: ilo-pxe
|
|
deploy: direct
|
|
inspect: ilo
|
|
management: ilo
|
|
power: ilo
|
|
console: ilo
|
|
raid: ilo
|
|
pxe_ipmitool:
|
|
hardware_type: ipmi
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: inspector
|
|
management: ipmitool
|
|
power: ipmitool
|
|
console: no-console
|
|
raid: no-raid
|
|
pxe_ipmitool_socat:
|
|
hardware_type: ipmi
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: inspector
|
|
management: ipmitool
|
|
power: ipmitool
|
|
console: ipmitool-socat
|
|
raid: no-raid
|
|
pxe_irmc:
|
|
hardware_type: irmc
|
|
boot: irmc-pxe
|
|
deploy: direct
|
|
inspect: irmc
|
|
management: irmc
|
|
power: irmc
|
|
console: ipmitool-socat
|
|
raid: irmc
|
|
pxe_snmp:
|
|
hardware_type: snmp
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: no-inspect
|
|
management: fake
|
|
power: snmp
|
|
console: no-console
|
|
raid: no-raid
|
|
pxe_redfish:
|
|
hardware_type: redfish
|
|
boot: pxe
|
|
deploy: direct
|
|
inspect: redfish
|
|
management: redfish
|
|
power: redfish
|
|
console: no-console
|
|
raid: no-raid
|
|
|
|
ironic_packages_list: |-
|
|
{%- set package_list = [] %}
|
|
{%- if ironic_services['ironic-api']['group'] in group_names %}
|
|
{%- set package_list = package_list + ironic_api_distro_packages %}
|
|
{%- endif %}
|
|
{%- if ironic_services['ironic-conductor']['group'] in group_names %}
|
|
{%- set package_list = package_list + ironic_conductor_distro_packages %}
|
|
{%- if ironic_standalone | bool %}
|
|
{%- set package_list = package_list + ironic_conductor_standalone_distro_packages %}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- if ironic_inspector_dhcp_type == "dnsmasq" %}
|
|
{%- set package_list = package_list + ironic_inspector_dnsmasq_distro_packages %}
|
|
{%- else %}
|
|
{%- set package_list = package_list + ironic_inspector_isc_dhcp_distro_packages %}
|
|
{%- endif %}
|
|
{%- if ironic_inspector_boot_mode == "http" %}
|
|
{%- set package_list = package_list + ironic_inspector_http_distro_packages %}
|
|
{%- endif %}
|
|
{%- if 'ipmitool-socat' in (filtered_ironic_drivers | json_query('[*].console') | unique) %}
|
|
{%- set package_list = package_list + ironic_ipmitool_socat_distro_packages %}
|
|
{%- endif %}
|
|
{{- package_list -}}
|
|
|
|
ironic_service_user_list: >
|
|
{%- set service_user_list = [] %}
|
|
{%- if ironic_services['ironic-api']['group'] in group_names %}
|
|
{%- set _ = service_user_list.append(
|
|
{
|
|
'name': ironic_service_user_name,
|
|
'password': ironic_service_password,
|
|
'role': ironic_service_role_names
|
|
}
|
|
)
|
|
%}
|
|
{%- endif %}
|
|
{%- if ironic_services['ironic-inspector']['group'] in group_names %}
|
|
{%- set _ = service_user_list.append(
|
|
{
|
|
'name': ironic_inspector_service_user_name,
|
|
'password': ironic_inspector_service_password,
|
|
'role': ironic_inspector_service_role_names
|
|
}
|
|
)
|
|
%}
|
|
{%- endif %}
|
|
{{- service_user_list -}}
|
|
|
|
ironic_service_endpoint_list: >
|
|
{%- set service_endpoint_list = [] %}
|
|
{%- if ironic_services['ironic-api']['group'] in group_names %}
|
|
{%- set _ = service_endpoint_list.append(
|
|
{
|
|
'service': ironic_service_name,
|
|
'interface': 'public',
|
|
'url': ironic_service_publicurl
|
|
}
|
|
)
|
|
%}
|
|
{%- set _ = service_endpoint_list.append(
|
|
{
|
|
'service': ironic_service_name,
|
|
'interface': 'internal',
|
|
'url': ironic_service_internalurl
|
|
}
|
|
)
|
|
%}
|
|
{%- set _ = service_endpoint_list.append(
|
|
{
|
|
'service': ironic_service_name,
|
|
'interface': 'admin',
|
|
'url': ironic_service_adminurl
|
|
}
|
|
)
|
|
%}
|
|
{%- endif %}
|
|
{%- if ironic_services['ironic-inspector']['group'] in group_names %}
|
|
{%- set _ = service_endpoint_list.append(
|
|
{
|
|
'service': ironic_inspector_service_name,
|
|
'interface': 'public',
|
|
'url': ironic_inspector_service_publicurl
|
|
}
|
|
)
|
|
%}
|
|
{%- set _ = service_endpoint_list.append(
|
|
{
|
|
'service': ironic_inspector_service_name,
|
|
'interface': 'internal',
|
|
'url': ironic_inspector_service_internalurl
|
|
}
|
|
)
|
|
%}
|
|
{%- set _ = service_endpoint_list.append(
|
|
{
|
|
'service': ironic_inspector_service_name,
|
|
'interface': 'admin',
|
|
'url': ironic_inspector_service_adminurl
|
|
}
|
|
)
|
|
%}
|
|
{%- endif %}
|
|
{{- service_endpoint_list -}}
|
|
|
|
ironic_service_catalog_list: >
|
|
{%- set service_catalog_list = [] %}
|
|
{%- if ironic_services['ironic-api']['group'] in group_names %}
|
|
{%- set _ = service_catalog_list.append(
|
|
{
|
|
'name': ironic_service_name,
|
|
'type': ironic_service_type,
|
|
'description': ironic_service_description
|
|
}
|
|
)
|
|
%}
|
|
{%- endif %}
|
|
{%- if ironic_services['ironic-inspector']['group'] in group_names %}
|
|
{%- set _ = service_catalog_list.append(
|
|
{
|
|
'name': ironic_inspector_service_name,
|
|
'type': ironic_inspector_service_type,
|
|
'description': ironic_inspector_service_description
|
|
}
|
|
)
|
|
%}
|
|
{%- endif %}
|
|
{{- service_catalog_list -}}
|
|
|
|
filtered_ironic_services: |-
|
|
{% set services = [] %}
|
|
{% for key, value in ironic_services.items() %}
|
|
{% if (value['group'] in group_names) and
|
|
(('service_en' not in value) or
|
|
('service_en' in value and value['service_en'])) and
|
|
not ('wsgi_app' in value and value['wsgi_app']) %}
|
|
{% set _ = value.update(
|
|
{
|
|
'service_key': key,
|
|
'enabled': value['enabled'] | default(True),
|
|
'state': value['state'] | default('started'),
|
|
'config_overrides': value.init_config_overrides
|
|
}
|
|
)
|
|
%}
|
|
{% set _ = value.pop('init_config_overrides') %}
|
|
{# Note (noonedeadpunk): The following if statement is added for backwards compatibility #}
|
|
{# As up to train release ironic role didn't have 'execstarts' in ironic_services keys #}
|
|
{% if ('execstarts' not in value) %}
|
|
{% set _ = value.update({'execstarts': value.program_override | default(ironic_bin ~ '/' ~ value.service_name)}) %}
|
|
{% endif %}
|
|
{% set _ = services.append(value) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ services }}
|
|
|
|
uwsgi_ironic_services: |-
|
|
{% set services = {} %}
|
|
{% for key, value in ironic_services.items() %}
|
|
{% if (value['group'] in group_names) and
|
|
(('condition' not in value) or ('condition' in value and value['condition']))
|
|
and ('wsgi_app' in value and value['wsgi_app']) %}
|
|
{% set _ = value.update(
|
|
{
|
|
'wsgi_path': ironic_bin ~ '/' ~ value.wsgi_name,
|
|
'wsgi_venv': ironic_bin | dirname,
|
|
'uwsgi_uid': ironic_system_user_name,
|
|
'uwsgi_guid': ironic_system_group_name,
|
|
'uwsgi_processes': ironic_wsgi_processes,
|
|
'uwsgi_threads': ironic_wsgi_threads
|
|
}
|
|
) %}
|
|
{% set _ = services.update({key: value}) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ services }}
|
|
|
|
filtered_ironic_drivers: |-
|
|
{% if ironic_ipxe_enabled | bool %}
|
|
{% set concat_drivers = [{'boot': 'ipxe'}] %}
|
|
{% else %}
|
|
{% set concat_drivers = [] %}
|
|
{% endif %}
|
|
{% set _driver_types = ironic_driver_types | combine(ironic_user_driver_types, recursive=True) %}
|
|
{% for driver in ironic_drivers_enabled %}
|
|
{% if driver in _driver_types.keys() %}
|
|
{% set _ = concat_drivers.append(_driver_types[driver]) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ concat_drivers }}
|
|
|
|
ironic_venv_packages: |-
|
|
{%- set pkg_list = ironic_pip_packages %}
|
|
{%- set _ = pkg_list.extend(ironic_user_pip_packages) %}
|
|
{%- if (ironic_oslomsg_amqp1_enabled | bool) %}
|
|
{%- set _ = pkg_list.extend(ironic_optional_oslomsg_amqp1_pip_packages) %}
|
|
{%- endif %}
|
|
{%- set _ = pkg_list.extend(ironic_inspector_pip_packages) %}
|
|
{%- set _ = pkg_list.extend(ironic_inspector_user_pip_packages) %}
|
|
{{- pkg_list | unique }}
|
|
|
|
ironic_ipmitool_socat_distro_packages:
|
|
- socat
|