9a9c8fe794
This commit adds the ironic-prometheus-exporter, following the conventions used by the previously integrated exporters. '[The] Ironic Prometheus Exporter is a Tool to expose hardware sensor data in the Prometheus format through an HTTP endpoint.'[0] Prometheus has been enabled in CI jobs to ensure test coverage. [0] https://opendev.org/openstack/ironic-prometheus-exporter Depends-On: https://review.opendev.org/c/openstack/kolla/+/874415 Change-Id: I6d421effd833d2e0524dd0b81736445c9a730ea9
312 lines
9.7 KiB
YAML
312 lines
9.7 KiB
YAML
---
|
|
- name: Ensuring config directories exist
|
|
file:
|
|
path: "{{ node_config_directory }}/{{ item.key }}"
|
|
state: "directory"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0770"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ ironic_services }}"
|
|
|
|
- name: Check if Ironic policies shall be overwritten
|
|
stat:
|
|
path: "{{ item }}"
|
|
delegate_to: localhost
|
|
run_once: True
|
|
register: ironic_policy
|
|
with_first_found:
|
|
- files: "{{ supported_policy_format_list }}"
|
|
paths:
|
|
- "{{ node_custom_config }}/ironic/"
|
|
skip: true
|
|
|
|
- name: Check if Ironic Inspector policies shall be overwritten
|
|
stat:
|
|
path: "{{ item }}"
|
|
delegate_to: localhost
|
|
run_once: True
|
|
register: ironic_inspector_policy
|
|
with_first_found:
|
|
- files: "{{ supported_policy_format_list }}"
|
|
paths:
|
|
- "{{ node_custom_config }}/ironic/inspector/"
|
|
skip: true
|
|
|
|
- name: Set ironic policy file
|
|
set_fact:
|
|
ironic_policy_file: "{{ ironic_policy.results.0.stat.path | basename }}"
|
|
ironic_policy_file_path: "{{ ironic_policy.results.0.stat.path }}"
|
|
when:
|
|
- ironic_policy.results
|
|
|
|
- name: Set ironic-inspector policy file
|
|
set_fact:
|
|
ironic_inspector_policy_file: "{{ ironic_inspector_policy.results.0.stat.path | basename }}"
|
|
ironic_inspector_policy_file_path: "{{ ironic_inspector_policy.results.0.stat.path }}"
|
|
when:
|
|
- ironic_inspector_policy.results
|
|
|
|
- include_tasks: copy-certs.yml
|
|
when:
|
|
- kolla_copy_ca_into_containers | bool or ironic_enable_tls_backend | bool
|
|
|
|
- name: Copying over config.json files for services
|
|
template:
|
|
src: "{{ item.key }}.json.j2"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ ironic_services }}"
|
|
notify:
|
|
- "Restart {{ item.key }} container"
|
|
|
|
- name: Copying over ironic.conf
|
|
vars:
|
|
service_name: "{{ item.key }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/ironic.conf.j2"
|
|
- "{{ node_custom_config }}/global.conf"
|
|
- "{{ node_custom_config }}/ironic.conf"
|
|
- "{{ node_custom_config }}/ironic/{{ item.key }}.conf"
|
|
- "{{ node_custom_config }}/ironic/{{ inventory_hostname }}/ironic.conf"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/ironic.conf"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- item.key in [ "ironic-api", "ironic-conductor", "ironic-prometheus-exporter" ]
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ ironic_services }}"
|
|
notify:
|
|
- "Restart {{ item.key }} container"
|
|
|
|
- name: Copying over inspector.conf
|
|
vars:
|
|
service: "{{ ironic_services['ironic-inspector'] }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/ironic-inspector.conf.j2"
|
|
- "{{ node_custom_config }}/global.conf"
|
|
- "{{ node_custom_config }}/ironic-inspector.conf"
|
|
- "{{ node_custom_config }}/ironic-inspector/inspector.conf"
|
|
- "{{ node_custom_config }}/ironic-inspector/{{ inventory_hostname }}/inspector.conf"
|
|
dest: "{{ node_config_directory }}/ironic-inspector/inspector.conf"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart ironic-inspector container
|
|
|
|
- name: Copying over dnsmasq.conf
|
|
vars:
|
|
service: "{{ ironic_services['ironic-dnsmasq'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-dnsmasq/dnsmasq.conf"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/ironic/ironic-dnsmasq.conf"
|
|
- "{{ node_custom_config }}/ironic/{{ inventory_hostname }}/ironic-dnsmasq.conf"
|
|
- "ironic-dnsmasq.conf.j2"
|
|
notify:
|
|
- Restart ironic-dnsmasq container
|
|
|
|
- name: Copying pxelinux.cfg default
|
|
vars:
|
|
service: "{{ ironic_services['ironic-tftp'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-tftp/default"
|
|
mode: "0660"
|
|
become: true
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/ironic/pxelinux.default"
|
|
- "{{ node_custom_config }}/ironic/{{ inventory_hostname }}/pxelinux.default"
|
|
- "pxelinux.default.j2"
|
|
when:
|
|
# Only required when Ironic inspector is in use.
|
|
- groups['ironic-inspector'] | length > 0
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
- not enable_ironic_pxe_uefi | bool
|
|
- not ironic_dnsmasq_serve_ipxe | bool
|
|
notify:
|
|
- Restart ironic-tftp container
|
|
|
|
- name: Copying ironic_pxe_uefi.cfg default
|
|
vars:
|
|
service: "{{ ironic_services['ironic-tftp'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-tftp/default"
|
|
mode: "0660"
|
|
become: true
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/ironic/ironic_pxe_uefi.default"
|
|
- "{{ node_custom_config }}/ironic/{{ inventory_hostname }}/ironic_pxe_uefi.default"
|
|
- "ironic_pxe_uefi.default.j2"
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
- enable_ironic_pxe_uefi | bool
|
|
notify:
|
|
- Restart ironic-tftp container
|
|
|
|
- name: Copying ironic-agent kernel and initramfs (PXE)
|
|
vars:
|
|
service: "{{ ironic_services['ironic-tftp'] }}"
|
|
copy:
|
|
src: "{{ ironic_agent_files_directory }}/ironic/{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-tftp/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
with_items:
|
|
- "ironic-agent.kernel"
|
|
- "ironic-agent.initramfs"
|
|
when:
|
|
# Only required when Ironic inspector is in use.
|
|
- groups['ironic-inspector'] | length > 0
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
- not enable_ironic_pxe_uefi | bool
|
|
- not ironic_dnsmasq_serve_ipxe | bool
|
|
notify:
|
|
- Restart ironic-tftp container
|
|
|
|
- name: Copying ironic-agent kernel and initramfs (iPXE)
|
|
vars:
|
|
service: "{{ ironic_services['ironic-http'] }}"
|
|
copy:
|
|
src: "{{ ironic_agent_files_directory }}/ironic/{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-http/{{ item }}"
|
|
mode: "0660"
|
|
become: true
|
|
with_items:
|
|
- "ironic-agent.kernel"
|
|
- "ironic-agent.initramfs"
|
|
when:
|
|
# Only required when Ironic inspector is in use.
|
|
- groups['ironic-inspector'] | length > 0
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart ironic-http container
|
|
|
|
- name: Copying inspector.ipxe
|
|
vars:
|
|
service: "{{ ironic_services['ironic-http'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-http/inspector.ipxe"
|
|
mode: "0660"
|
|
become: true
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/ironic/{{ inventory_hostname }}/inspector.ipxe"
|
|
- "{{ node_custom_config }}/ironic/inspector.ipxe"
|
|
- "inspector.ipxe.j2"
|
|
when:
|
|
# Only required when Ironic inspector is in use.
|
|
- groups['ironic-inspector'] | length > 0
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- Restart ironic-http container
|
|
|
|
- name: Copying ironic-http-httpd.conf
|
|
vars:
|
|
service: "{{ ironic_services['ironic-http'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-http/httpd.conf"
|
|
mode: "0660"
|
|
become: true
|
|
with_first_found:
|
|
- "{{ node_custom_config }}/ironic/ironic-http-httpd.conf"
|
|
- "ironic-http-httpd.conf.j2"
|
|
when:
|
|
- service.enabled | bool
|
|
- inventory_hostname in groups[service.group]
|
|
notify:
|
|
- Restart ironic-http container
|
|
|
|
- name: Copying over ironic-prometheus-exporter-wsgi.conf
|
|
vars:
|
|
service: "{{ ironic_services['ironic-prometheus-exporter'] }}"
|
|
template:
|
|
src: "{{ item }}"
|
|
dest: "{{ node_config_directory }}/ironic-prometheus-exporter/ironic-prometheus-exporter-wsgi.conf"
|
|
mode: "0660"
|
|
become: true
|
|
with_first_found:
|
|
- "{{ node_config_directory }}/ironic/{{ inventory_hostname }}/ironic-prometheus-exporter-wsgi.conf"
|
|
- "{{ node_config_directory }}/ironic/ironic-prometheus-exporter-wsgi.conf"
|
|
- "ironic-prometheus-exporter-wsgi.conf.j2"
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- "Restart ironic-prometheus-exporter container"
|
|
|
|
- name: Copying over existing Ironic policy file
|
|
vars:
|
|
services_require_policy_json:
|
|
- ironic-api
|
|
- ironic-conductor
|
|
template:
|
|
src: "{{ ironic_policy_file_path }}"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/{{ ironic_policy_file }}"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- ironic_policy_file is defined
|
|
- item.key in services_require_policy_json
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ ironic_services }}"
|
|
notify:
|
|
- "Restart {{ item.key }} container"
|
|
|
|
- name: Copying over existing Ironic Inspector policy file
|
|
vars:
|
|
services_require_inspector_policy_json:
|
|
- ironic-inspector
|
|
template:
|
|
src: "{{ ironic_inspector_policy_file_path }}"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/{{ ironic_inspector_policy_file }}"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- ironic_inspector_policy_file is defined
|
|
- item.key in services_require_inspector_policy_json
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ ironic_services }}"
|
|
notify:
|
|
- "Restart {{ item.key }} container"
|
|
|
|
- name: Copying over ironic-api-wsgi.conf
|
|
template:
|
|
src: "ironic-api-wsgi.conf.j2"
|
|
dest: "{{ node_config_directory }}/ironic-api/ironic-api-wsgi.conf"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups["ironic-api"]
|
|
- ironic_services["ironic-api"].enabled | bool
|
|
notify:
|
|
- "Restart ironic-api container"
|