Use the combined Ironic service instead of API+conductor

Change-Id: I9faecfe6ece6d3c35396e3378c1e3930a487e130
Depends-On: https://review.opendev.org/c/openstack/ironic/+/819620
Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/820513
This commit is contained in:
Dmitry Tantsur 2021-12-03 16:54:28 +01:00
parent f30cc86557
commit ea2d2a37a4
8 changed files with 53 additions and 33 deletions

View File

@ -22,7 +22,7 @@ Additionally, the following parameters can be useful:
.. note::
You still need to restart services to apply any changes, e.g.::
sudo systemctl restart ironic-conductor
sudo systemctl restart ironic
``--driver=[ipmi|redfish]``
Choose the default driver for the generated nodes inventory.

View File

@ -106,8 +106,8 @@ Obtaining IPA logs via the console
the video mode, defines the console as ttyS0 or the first serial port, and
instructs systemd to direct logs to the console.
2) Once set, restart the ironic-conductor service, e.g.
``service ironic-conductor restart`` and attempt to redeploy the node.
2) Once set, restart the ironic service, e.g.
``systemctl restart ironic`` and attempt to redeploy the node.
You will want to view the system console occurring. If possible, you
may wish to use ``ipmitool`` and write the output to a log file.

View File

@ -230,26 +230,29 @@
include: inspector_bootstrap.yml
when: enable_inspector | bool
- name: "Get ironic-api & ironic-conductor install location"
shell: echo $(dirname $(which ironic-api))
- name: "Get ironic install location"
shell: echo $(dirname $(which ironic))
register: ironic_install_prefix
environment: "{{ bifrost_venv_env }}"
- name: "Place ironic services"
- name: "Place ironic service"
template:
src: systemd_template.j2
dest: "{{ init_dest_dir }}{{ item.service_name }}.service"
dest: "{{ init_dest_dir }}ironic.service"
owner: "root"
group: "root"
vars:
service_path: "{{ ironic_install_prefix.stdout | default('') }}"
service_name: 'ironic'
config_file: '/etc/ironic/ironic.conf'
- name: "Remove old ironic services"
file:
path: "{{ init_dest_dir }}{{ item }}.service"
state: absent
loop:
- service_path: "{{ ironic_install_prefix.stdout | default('') }}"
service_name: 'ironic-api'
username: 'ironic'
args: '--config-file /etc/ironic/ironic.conf'
- service_path: "{{ ironic_install_prefix.stdout | default('') }}"
service_name: 'ironic-conductor'
username: 'ironic'
args: '--config-file /etc/ironic/ironic.conf'
- ironic-api
- ironic-conductor
- name: "Create and populate /tftpboot"
import_tasks: create_tftpboot.yml

View File

@ -134,15 +134,13 @@
- name: "Inspector - Place service"
template:
src: systemd_template.j2
dest: "{{ init_dest_dir }}{{ item.service_name }}.service"
dest: "{{ init_dest_dir }}ironic-inspector.service"
owner: root
group: root
# FIXME(dtantsur): this is an awkward way to use loop...
loop:
- service_path: "{{ ironic_install_prefix.stdout | default('') }}"
vars:
service_path: "{{ ironic_install_prefix.stdout | default('') }}"
service_name: 'ironic-inspector'
username: 'ironic'
args: '--config-file /etc/ironic-inspector/inspector.conf'
config_file: '/etc/ironic-inspector/inspector.conf'
- name: "Inspector - Explicitly permit TCP/5050 for ironic-inspector callback"
iptables:
chain: INPUT

View File

@ -26,15 +26,25 @@
- name: "Start database service"
service: name={{ mysql_service_name }} state=started enabled=yes
- name: "start ironic-inspector"
- name: "Start ironic-inspector"
include: inspector_start.yml
when: enable_inspector | bool
- name: "Start ironic-conductor"
service: name=ironic-conductor state=restarted enabled=yes
- name: "Stop old ironic services"
service:
name: "{{ item }}"
state: stopped
enabled: no
ignore_errors: true
loop:
- ironic-api
- ironic-conductor
- name: "Start ironic-api"
service: name=ironic-api state=restarted enabled=yes
- name: "Start ironic"
service:
name: ironic
state: restarted
enabled: yes
- name: "Start ironic-prometheus-exporter"
include: prometheus_exporter_start.yml

View File

@ -1,10 +1,10 @@
[Unit]
Description={{ item.service_name }} service
Description={{ service_name }} service
[Service]
ExecStart={{ item.service_path }}/{{ item.service_name }} {{ item.args }}
User={{ item.username }}
ExecStart={{ service_path }}/{{ service_name }} --config-file {{ config_file }}
User=ironic
[Install]
WantedBy=multi-user.target
Alias={{ item.service_name }}.service
Alias={{ service_name }}.service

View File

@ -0,0 +1,9 @@
---
features:
- |
Bifrost now starts a single Ironic process rather than separate API
and conductor.
upgrade:
- |
On upgrade, the existing API and conductor services will be disabled and
a single combined ``ironic`` process will be started instead.

View File

@ -71,9 +71,9 @@ mkdir -p ${LOG_LOCATION}/all
sudo cp -a /var/log/* ${LOG_LOCATION}/all/.
sudo chown -R $USER ${LOG_LOCATION}/all
sudo systemctl > ${LOG_LOCATION}/all-services.txt
sudo journalctl -u libvirtd &> ${LOG_LOCATION}/libvirtd.log
sudo journalctl -u ironic-api &> ${LOG_LOCATION}/ironic-api.log
sudo journalctl -u ironic-conductor &> ${LOG_LOCATION}/ironic-conductor.log
sudo journalctl -u ironic &> ${LOG_LOCATION}/ironic.log
sudo journalctl -u ironic-inspector &> ${LOG_LOCATION}/ironic-inspector.log
sudo journalctl -u dnsmasq &> ${LOG_LOCATION}/dnsmasq.log
sudo journalctl -u vbmcd &> ${LOG_LOCATION}/vbmcd.log