Ironic: rename containers

Change-Id: I8e4096d7136d0ce9e54f1af0bb9ba110487fb35b
This commit is contained in:
Radosław Piliszek 2022-03-04 21:21:42 +01:00
parent 9503308a87
commit e8025b3cb8
19 changed files with 118 additions and 89 deletions

View File

@ -352,7 +352,7 @@ ironic_inspector_internal_fqdn: "{{ kolla_internal_fqdn }}"
ironic_inspector_external_fqdn: "{{ kolla_external_fqdn }}"
ironic_inspector_port: "5050"
ironic_inspector_listen_port: "{{ ironic_inspector_port }}"
ironic_ipxe_port: "8089"
ironic_http_port: "8089"
iscsi_port: "3260"

View File

@ -444,10 +444,10 @@ ironic
[ironic-inspector:children]
ironic
[ironic-pxe:children]
[ironic-tftp:children]
ironic
[ironic-ipxe:children]
[ironic-http:children]
ironic
# Magnum

View File

@ -452,10 +452,10 @@ ironic
[ironic-inspector:children]
ironic
[ironic-pxe:children]
[ironic-tftp:children]
ironic
[ironic-ipxe:children]
[ironic-http:children]
ironic
# Magnum

View File

@ -54,26 +54,26 @@ ironic_services:
external: true
port: "{{ ironic_inspector_port }}"
listen_port: "{{ ironic_inspector_listen_port }}"
ironic-pxe:
container_name: ironic_pxe
group: ironic-pxe
ironic-tftp:
container_name: ironic_tftp
group: ironic-tftp
enabled: true
image: "{{ ironic_pxe_image_full }}"
environment:
TFTPBOOT_PATH: /var/lib/ironic/tftpboot
HTTPBOOT_PATH: /var/lib/ironic/httpboot
volumes: "{{ ironic_pxe_default_volumes + ironic_pxe_extra_volumes }}"
dimensions: "{{ ironic_pxe_dimensions }}"
ironic-ipxe:
container_name: ironic_ipxe
group: ironic-ipxe
volumes: "{{ ironic_tftp_default_volumes + ironic_tftp_extra_volumes }}"
dimensions: "{{ ironic_tftp_dimensions }}"
ironic-http:
container_name: ironic_http
group: ironic-http
# NOTE(mgoddard): This container is always enabled, since may be used by
# the direct deploy driver.
enabled: true
image: "{{ ironic_pxe_image_full }}"
volumes: "{{ ironic_ipxe_default_volumes + ironic_ipxe_extra_volumes }}"
dimensions: "{{ ironic_ipxe_dimensions }}"
healthcheck: "{{ ironic_ipxe_healthcheck }}"
volumes: "{{ ironic_http_default_volumes + ironic_http_extra_volumes }}"
dimensions: "{{ ironic_http_dimensions }}"
healthcheck: "{{ ironic_http_healthcheck }}"
ironic-dnsmasq:
container_name: ironic_dnsmasq
group: ironic-inspector
@ -125,8 +125,8 @@ ironic_dnsmasq_image_full: "{{ ironic_dnsmasq_image }}:{{ ironic_dnsmasq_tag }}"
ironic_api_dimensions: "{{ default_container_dimensions }}"
ironic_conductor_dimensions: "{{ default_container_dimensions }}"
ironic_pxe_dimensions: "{{ default_container_dimensions }}"
ironic_ipxe_dimensions: "{{ default_container_dimensions }}"
ironic_tftp_dimensions: "{{ default_container_dimensions }}"
ironic_http_dimensions: "{{ default_container_dimensions }}"
ironic_inspector_dimensions: "{{ default_container_dimensions }}"
ironic_dnsmasq_dimensions: "{{ default_container_dimensions }}"
@ -169,18 +169,18 @@ ironic_inspector_healthcheck:
test: "{% if ironic_inspector_enable_healthchecks | bool %}{{ ironic_inspector_healthcheck_test }}{% else %}NONE{% endif %}"
timeout: "{{ ironic_inspector_healthcheck_timeout }}"
ironic_ipxe_enable_healthchecks: "{{ enable_container_healthchecks }}"
ironic_ipxe_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
ironic_ipxe_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
ironic_ipxe_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
ironic_ipxe_healthcheck_test: ["CMD-SHELL", "healthcheck_listen {% if kolla_base_distro in ['debian', 'ubuntu'] %}apache2{% else %}httpd{% endif %} {{ ironic_ipxe_port }}"]
ironic_ipxe_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
ironic_ipxe_healthcheck:
interval: "{{ ironic_ipxe_healthcheck_interval }}"
retries: "{{ ironic_ipxe_healthcheck_retries }}"
start_period: "{{ ironic_ipxe_healthcheck_start_period }}"
test: "{% if ironic_ipxe_enable_healthchecks | bool %}{{ ironic_ipxe_healthcheck_test }}{% else %}NONE{% endif %}"
timeout: "{{ ironic_ipxe_healthcheck_timeout }}"
ironic_http_enable_healthchecks: "{{ enable_container_healthchecks }}"
ironic_http_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
ironic_http_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
ironic_http_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
ironic_http_healthcheck_test: ["CMD-SHELL", "healthcheck_listen {% if kolla_base_distro in ['debian', 'ubuntu'] %}apache2{% else %}httpd{% endif %} {{ ironic_http_port }}"]
ironic_http_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
ironic_http_healthcheck:
interval: "{{ ironic_http_healthcheck_interval }}"
retries: "{{ ironic_http_healthcheck_retries }}"
start_period: "{{ ironic_http_healthcheck_start_period }}"
test: "{% if ironic_http_enable_healthchecks | bool %}{{ ironic_http_healthcheck_test }}{% else %}NONE{% endif %}"
timeout: "{{ ironic_http_healthcheck_timeout }}"
ironic_api_default_volumes:
- "{{ node_config_directory }}/ironic-api/:{{ container_config_directory }}/:ro"
@ -199,14 +199,14 @@ ironic_conductor_default_volumes:
- "kolla_logs:/var/log/kolla"
- "ironic:/var/lib/ironic"
- "{{ kolla_dev_repos_directory ~ '/ironic/ironic:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/ironic' if ironic_dev_mode | bool else '' }}"
ironic_pxe_default_volumes:
- "{{ node_config_directory }}/ironic-pxe/:{{ container_config_directory }}/:ro"
ironic_tftp_default_volumes:
- "{{ node_config_directory }}/ironic-tftp/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- "ironic:/var/lib/ironic"
- "kolla_logs:/var/log/kolla"
ironic_ipxe_default_volumes:
- "{{ node_config_directory }}/ironic-ipxe/:{{ container_config_directory }}/:ro"
ironic_http_default_volumes:
- "{{ node_config_directory }}/ironic-http/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
- "ironic:/var/lib/ironic"
@ -228,8 +228,8 @@ ironic_dnsmasq_default_volumes:
ironic_extra_volumes: "{{ default_extra_volumes }}"
ironic_api_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_conductor_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_pxe_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_ipxe_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_tftp_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_http_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_inspector_extra_volumes: "{{ ironic_extra_volumes }}"
ironic_dnsmasq_extra_volumes: "{{ ironic_extra_volumes }}"
@ -258,7 +258,7 @@ ironic_dnsmasq_boot_file: "{% if enable_ironic_ipxe | bool %}undionly.kpxe{% els
ironic_dnsmasq_uefi_ipxe_boot_file: "snponly.efi"
ironic_cleaning_network:
ironic_console_serial_speed: "115200n8"
ironic_ipxe_url: "http://{{ api_interface_address | put_address_in_context('url') }}:{{ ironic_ipxe_port }}"
ironic_http_url: "http://{{ api_interface_address | put_address_in_context('url') }}:{{ ironic_http_port }}"
ironic_enable_rolling_upgrade: "yes"
ironic_upgrade_skip_wait_check: false
ironic_inspector_kernel_cmdline_extras: []

View File

@ -69,9 +69,9 @@
when:
- kolla_action != "config"
- name: Restart ironic-pxe container
- name: Restart ironic-tftp container
vars:
service_name: "ironic-pxe"
service_name: "ironic-tftp"
service: "{{ ironic_services[service_name] }}"
become: true
kolla_docker:
@ -85,9 +85,9 @@
when:
- kolla_action != "config"
- name: Restart ironic-ipxe container
- name: Restart ironic-http container
vars:
service_name: "ironic-ipxe"
service_name: "ironic-http"
service: "{{ ironic_services[service_name] }}"
become: true
kolla_docker:

View File

@ -45,9 +45,9 @@
delegate_to: "{{ groups[ironic_inspector.group][0] }}"
when: inventory_hostname in groups[ironic_inspector.group]
- name: Running Ironic-PXE bootstrap container
- name: Running ironic-tftp bootstrap container
vars:
ironic_pxe: "{{ ironic_services['ironic-pxe'] }}"
ironic_tftp: "{{ ironic_services['ironic-tftp'] }}"
become: true
kolla_docker:
action: "start_container"
@ -58,10 +58,10 @@
HTTPBOOT_PATH: /var/lib/ironic/httpboot
KOLLA_BOOTSTRAP:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
image: "{{ ironic_pxe.image }}"
image: "{{ ironic_tftp.image }}"
labels:
BOOTSTRAP:
name: "bootstrap_ironic_pxe"
name: "bootstrap_ironic_tftp"
restart_policy: no
volumes: "{{ ironic_pxe.volumes }}"
when: inventory_hostname in groups[ironic_pxe.group]
volumes: "{{ ironic_tftp.volumes }}"
when: inventory_hostname in groups[ironic_tftp.group]

View File

@ -127,10 +127,10 @@
- name: Copying pxelinux.cfg default
vars:
service: "{{ ironic_services['ironic-pxe'] }}"
service: "{{ ironic_services['ironic-tftp'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/ironic-pxe/default"
dest: "{{ node_config_directory }}/ironic-tftp/default"
mode: "0660"
become: true
with_first_found:
@ -145,14 +145,14 @@
- not enable_ironic_pxe_uefi | bool
- not enable_ironic_ipxe | bool
notify:
- Restart ironic-pxe container
- Restart ironic-tftp container
- name: Copying ironic_pxe_uefi.cfg default
vars:
service: "{{ ironic_services['ironic-pxe'] }}"
service: "{{ ironic_services['ironic-tftp'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/ironic-pxe/default"
dest: "{{ node_config_directory }}/ironic-tftp/default"
mode: "0660"
become: true
with_first_found:
@ -164,14 +164,14 @@
- service.enabled | bool
- enable_ironic_pxe_uefi | bool
notify:
- Restart ironic-pxe container
- Restart ironic-tftp container
- name: Copying ironic-agent kernel and initramfs (PXE)
vars:
service: "{{ ironic_services['ironic-pxe'] }}"
service: "{{ ironic_services['ironic-tftp'] }}"
copy:
src: "{{ node_custom_config }}/ironic/{{ item }}"
dest: "{{ node_config_directory }}/ironic-pxe/{{ item }}"
dest: "{{ node_config_directory }}/ironic-tftp/{{ item }}"
mode: "0660"
become: true
with_items:
@ -185,14 +185,14 @@
- not enable_ironic_pxe_uefi | bool
- not enable_ironic_ipxe | bool
notify:
- Restart ironic-pxe container
- Restart ironic-tftp container
- name: Copying ironic-agent kernel and initramfs (iPXE)
vars:
service: "{{ ironic_services['ironic-ipxe'] }}"
service: "{{ ironic_services['ironic-http'] }}"
copy:
src: "{{ node_custom_config }}/ironic/{{ item }}"
dest: "{{ node_config_directory }}/ironic-ipxe/{{ item }}"
dest: "{{ node_config_directory }}/ironic-http/{{ item }}"
mode: "0660"
become: true
with_items:
@ -204,14 +204,14 @@
- inventory_hostname in groups[service.group]
- service.enabled | bool
notify:
- Restart ironic-ipxe container
- Restart ironic-http container
- name: Copying inspector.ipxe
vars:
service: "{{ ironic_services['ironic-ipxe'] }}"
service: "{{ ironic_services['ironic-http'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/ironic-ipxe/inspector.ipxe"
dest: "{{ node_config_directory }}/ironic-http/inspector.ipxe"
mode: "0660"
become: true
with_first_found:
@ -224,24 +224,24 @@
- inventory_hostname in groups[service.group]
- service.enabled | bool
notify:
- Restart ironic-ipxe container
- Restart ironic-http container
- name: Copying iPXE apache config
vars:
service: "{{ ironic_services['ironic-ipxe'] }}"
service: "{{ ironic_services['ironic-http'] }}"
template:
src: "{{ item }}"
dest: "{{ node_config_directory }}/ironic-ipxe/httpd.conf"
dest: "{{ node_config_directory }}/ironic-http/httpd.conf"
mode: "0660"
become: true
with_first_found:
- "{{ node_custom_config }}/ironic/ironic-ipxe-httpd.conf"
- "ironic-ipxe-httpd.conf.j2"
- "{{ 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-ipxe container
- Restart ironic-http container
- name: Copying over existing Ironic policy file
vars:

View File

@ -11,7 +11,9 @@
name:
- ironic_api
- ironic_inspector
# TODO(yoctozepto): Remove ironic_ipxe entry in Zed.
- ironic_ipxe
- ironic_http
register: container_facts
- name: Checking free port for Ironic API
@ -36,16 +38,18 @@
- container_facts['ironic_inspector'] is not defined
- inventory_hostname in groups['ironic-inspector']
- name: Checking free port for Ironic iPXE
- name: Checking free port for Ironic HTTP server
wait_for:
host: "{{ api_interface_address }}"
port: "{{ ironic_ipxe_port }}"
port: "{{ ironic_http_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
# TODO(yoctozepto): Remove ironic_ipxe entry in Zed.
- container_facts['ironic_ipxe'] is not defined
- inventory_hostname in groups['ironic-ipxe']
- container_facts['ironic_http'] is not defined
- inventory_hostname in groups['ironic-http']
- name: Checking ironic-agent files exist for Ironic Inspector
stat:
@ -57,8 +61,8 @@
when:
# Only required when Ironic inspector is in use.
- groups['ironic-inspector'] | length > 0
- (not enable_ironic_ipxe | bool and inventory_hostname in groups['ironic-pxe']) or
(enable_ironic_ipxe | bool and inventory_hostname in groups['ironic-ipxe'])
- (not enable_ironic_ipxe | bool and inventory_hostname in groups['ironic-tftp']) or
(enable_ironic_ipxe | bool and inventory_hostname in groups['ironic-http'])
- not enable_ironic_pxe_uefi | bool
with_items:
- "ironic-agent.kernel"

View File

@ -27,6 +27,20 @@
run_once: true
when: not ironic_upgrade_skip_wait_check | bool
# TODO(yoctozepto): Remove this task in Zed.
- name: Remove old Ironic containers
become: true
kolla_docker:
action: "stop_and_remove_container"
common_options: "{{ docker_common_options }}"
name: "{{ item }}"
with_items:
# NOTE(yoctozepto): Removing conductor to avoid it
# thinking that the tftp and http servers are available.
- ironic_conductor
- ironic_pxe
- ironic_ipxe
- include_tasks: rolling_upgrade.yml
when: ironic_enable_rolling_upgrade | bool

View File

@ -13,6 +13,6 @@ chain pxelinux.cfg/${mac:hexhyp} || goto inspector_ipa
:inspector_ipa
:retry_boot
imgfree
kernel --timeout 30000 {{ ironic_ipxe_url }}/ironic-agent.kernel ipa-inspection-callback-url={{ ironic_inspector_internal_endpoint }}/v1/continue systemd.journald.forward_to_console=yes BOOTIF=${mac} initrd=ironic-agent.initramfs {{ ironic_inspector_kernel_cmdline_extras | join(' ') }} || goto retry_boot
initrd --timeout 30000 {{ ironic_ipxe_url }}/ironic-agent.initramfs || goto retry_boot
kernel --timeout 30000 {{ ironic_http_url }}/ironic-agent.kernel ipa-inspection-callback-url={{ ironic_inspector_internal_endpoint }}/v1/continue systemd.journald.forward_to_console=yes BOOTIF=${mac} initrd=ironic-agent.initramfs {{ ironic_inspector_kernel_cmdline_extras | join(' ') }} || goto retry_boot
initrd --timeout 30000 {{ ironic_http_url }}/ironic-agent.initramfs || goto retry_boot
boot

View File

@ -23,7 +23,7 @@ dhcp-match=ipxe,175
dhcp-match=set:efi,option:client-arch,7
dhcp-match=set:efi,option:client-arch,9
# Client is already running iPXE; move to next stage of chainloading
dhcp-option=tag:ipxe,option:bootfile-name,{{ ironic_ipxe_url }}/inspector.ipxe
dhcp-option=tag:ipxe,option:bootfile-name,{{ ironic_http_url }}/inspector.ipxe
# Client is PXE booting over EFI without iPXE ROM,
# send EFI version of iPXE chainloader
dhcp-option=tag:efi,tag:!ipxe,option:bootfile-name,{{ ironic_dnsmasq_uefi_ipxe_boot_file }}

View File

@ -1,12 +1,12 @@
Listen {{ api_interface_address | put_address_in_context('url') }}:{{ ironic_ipxe_port }}
Listen {{ api_interface_address | put_address_in_context('url') }}:{{ ironic_http_port }}
TraceEnable off
<VirtualHost *:{{ ironic_ipxe_port }}>
<VirtualHost *:{{ ironic_http_port }}>
LogLevel warn
ErrorLog "/var/log/kolla/ironic/ironic-ipxe-error.log"
ErrorLog "/var/log/kolla/ironic/ironic-http-error.log"
LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
CustomLog "/var/log/kolla/ironic/ironic-ipxe-access.log" logformat
CustomLog "/var/log/kolla/ironic/ironic-http-access.log" logformat
DocumentRoot "/var/lib/ironic/httpboot"
<Directory /var/lib/ironic/httpboot>
Options FollowSymLinks

View File

@ -182,7 +182,7 @@ tftp_server = {{ api_interface_address }}
[deploy]
http_root = /var/lib/ironic/httpboot
http_url = {{ ironic_ipxe_url }}
http_url = {{ ironic_http_url }}
[oslo_middleware]
enable_proxy_headers_parsing = True

View File

@ -634,8 +634,8 @@
- ironic-api
- ironic-conductor
- ironic-inspector
- ironic-pxe
- ironic-ipxe
- ironic-tftp
- ironic-http
- '&enable_ironic_True'
serial: '{{ kolla_serial|default("0") }}'
roles:

View File

@ -66,14 +66,14 @@ You may optionally pass extra kernel parameters to the inspection kernel using:
in ``/etc/kolla/globals.yml``.
Configure iPXE HTTP server port (optional)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The port used for the iPXE webserver is controlled via ``ironic_ipxe_port`` in
``/etc/kolla/globals.yml``:
Configure conductor's HTTP server port (optional)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The port used for conductor's HTTP server is controlled via
``ironic_http_port`` in ``/etc/kolla/globals.yml``:
.. code-block:: yaml
ironic_ipxe_port: "8089"
ironic_http_port: "8089"
Revert to plain PXE (not recommended)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -0,0 +1,11 @@
---
upgrade:
- |
Ironic containers related to PXE (TFTP) and iPXE & direct deploy (HTTP)
are renamed to better reflect their role: ``ironic_pxe`` is now
``ironic_tftp``, while ``ironic_ipxe`` is now ``ironic_http``.
Operators doing advanced customisations might need to review the
relevant defaults section.
Additionally, their respective host groups have changed analogously:
``ironic-pxe`` is now ``ironic-tftp``, and ``ironic-ipxe`` is now
``ironic-http``.

View File

@ -508,10 +508,10 @@ ironic
[ironic-inspector:children]
ironic
[ironic-pxe:children]
[ironic-tftp:children]
ironic
[ironic-ipxe:children]
[ironic-http:children]
ironic
# Magnum