diff --git a/playbooks/roles/bifrost-ironic-install/defaults/main.yml b/playbooks/roles/bifrost-ironic-install/defaults/main.yml index 906dfaf00..cd69d292d 100644 --- a/playbooks/roles/bifrost-ironic-install/defaults/main.yml +++ b/playbooks/roles/bifrost-ironic-install/defaults/main.yml @@ -30,6 +30,8 @@ skip_package_install: False skip_bootstrap: False # set to true to skip starting ironic services and dependencies skip_start: False +# set to true to skip performing online data migrations +skip_migrations: "{{ skip_bootstrap }}" # Default network interface that bifrost will be attached to. # This is used in ipa_* so it must be before diff --git a/playbooks/roles/bifrost-ironic-install/tasks/main.yml b/playbooks/roles/bifrost-ironic-install/tasks/main.yml index 2b21f6327..d43b098d1 100644 --- a/playbooks/roles/bifrost-ironic-install/tasks/main.yml +++ b/playbooks/roles/bifrost-ironic-install/tasks/main.yml @@ -62,3 +62,7 @@ - name: "Start Ironic services" include: start.yml when: skip_start | bool != True + +- name: "Perform online data migrations" + include: migrations.yml + when: skip_migrations | bool != True diff --git a/playbooks/roles/bifrost-ironic-install/tasks/migrations.yml b/playbooks/roles/bifrost-ironic-install/tasks/migrations.yml new file mode 100644 index 000000000..05f194339 --- /dev/null +++ b/playbooks/roles/bifrost-ironic-install/tasks/migrations.yml @@ -0,0 +1,22 @@ +# 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. +--- +- name: "If VENV is set in the environment, enable installation into venv" + set_fact: + enable_venv: true + when: lookup('env', 'VENV') | length > 0 + +- name: "Perform ironic online data migrations" + command: ironic-dbsync --config-file /etc/ironic/ironic.conf online_data_migrations + environment: "{{ bifrost_venv_env if enable_venv else {} }}" + when: ironic.database.host != 'localhost' diff --git a/releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml b/releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml new file mode 100644 index 000000000..5b8f008aa --- /dev/null +++ b/releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Adds support for performing ironic online data migrations.