1. Um, yes. As this means that code you run on some computes is incompatible with expected schema. So this check is failing for a reason. You really must know what you are doing to mess up with RPC versions in this way.2. That is really weird, as all my sandboxes and production systems do not have such issues. Though, `need_online_data_migrations` specifically has an effect only for hosts/containers with nova-api running. It's ignored for computes pretty much. Indeed, there's a field for improvement not to propagate variables to this file when they are not needed.3. So there is variable precedence concept in Ansible [1], where importance of variables and how to override them depends on where they are defined. Passing `-e` or user_*.yml files are treated as extra_vars, which do have highest precedence. However I think in case of `need_online_data_migrations` - it's not really a variable, it is a local fact [2], which is smth deployers have no real control over.пт, 18 апр. 2025 г. в 09:23, engineer2024 <engineerlinux2024@gmail.com>:Thanks for the response...
It was failing at nova-status upgrade status check. some computes were in version 61. But the oldest supported version is 66. Since it's a test environment, I want to bypass that. It worked only when I changed to false in the ansible_facts folder for that containers file. So some queries1. If we manually change the supported version to a value in the objects/status.py file, will it really affect the compute node's operation after the upgrade ?
2. why is the file etc/ansible/facts.d/openstack_ansible.fact,
always empty ? It seems to write something into it while running the playbook. After the run, it's empty...3. there r diff kinds of variables in ansible like vars, defaults, group_vars, facts etc... what r the ways available or possible to override these variables ? specifically in openstack ansible atleast ? not every variable is affected by passing -e option during the playbook
On Fri, 18 Apr 2025, 12:28 Dmitriy Rabotyagov, <noonedeadpunk@gmail.com> wrote:So there is no way to manually disable `need_online_data_migrations` behaviour. It is changed to `false` in /etc/ansible/facts.d/openstack_ansible.fact once `nova-manage db online_data_migrations` is completed successfully here:What is the reason why you look into that? Is "nova-manage db online_data_migrations" failing for you? As in this case you totally need to fix the reason for failure rather than look into how to skip them.пт, 18 апр. 2025 г. в 05:32, <jijisa@iorchard.co.kr>:Hi,
I am not an openstack-ansible user but have used ansible for a while.
You are passing a variable(need_online_data_migrations) with a string('False') value.
So it is always true.
Pass a variable in a json format if it is a boolean variable.
Try -e '{"need_online_data_migrations": false}' in your ansible-playbook command.
engineer2024 wrote:
> When running the n os-nova playbook, I want to
> disable need_online_data_migrations in the nova role. I tried this pasing
> to the playbook '-e need_online_data_migrations=False', but it did not
> work. tried deleting the fact file for the nova containers at
> /etc/openstack_deploy/ansible_facts. folder. still it did not work. It is
> resetting each time to 'True'
>
> Finally I hardcoded in the
> file /etc/ansible/roles/os_nova/tasks/nova_install.yml
>
> ----
> - name: Install the python venv
> import_role:
> name: "python_venv_build"
> vars:
> venv_python_executable: "{{ nova_venv_python_executable }}"
> venv_build_constraints: "{{ nova_git_constraints }}"
> venv_build_distro_package_list: "{{ nova_devel_distro_packages }}"
> venv_install_destination_path: "{{ nova_bin | dirname }}"
> venv_pip_install_args: "{{ nova_pip_install_args }}"
> venv_packages_to_symlink: >-
> {{ (nova_services['nova-compute']['group'] in group_names and
> nova_virt_type != 'ironic') | ternary(nova_compute_kvm_packages_to_symlink,
> []) }}
> venv_pip_packages: "{{ nova_venv_packages }}"
> venv_facts_when_changed:
> - section: "nova"
> option: "need_service_restart"
> value: "True"
> - section: "nova"
> option: "need_online_data_migrations"
> value: "False"
> - section: "nova"
> option: "venv_tag"
> value: "{{ nova_venv_tag }}"
> when: nova_install_method == 'source'
>
> - name: Record local facts for distro path
> when: nova_install_method == 'distro'
> block:
> - name: Record the osa version deployed
> ini_file:
> dest: "/etc/ansible/facts.d/openstack_ansible.fact"
> section: nova
> option: venv_tag
> value: "{{ nova_venv_tag }}"
> mode: "0644"
>
> - name: Initialise the upgrade facts
> ini_file:
> dest: "/etc/ansible/facts.d/openstack_ansible.fact"
> section: nova
> option: "{{ item.name }}"
> value: "{{ item.state }}"
> mode: "0644"
> with_items:
> - name: "need_service_restart"
> state: "True"
> - name: "need_online_data_migrations"
> state: "False"
> when:
> - (install_packages is changed) or
> (ansible_local is not defined) or
> ('openstack_ansible' not in ansible_local) or
> ('nova' not in ansible_local['openstack_ansible']) or
> ('need_online_data_migrations' not in
> ansible_local['openstack_ansible']['nova']) or
> ('need_service_restart' not in
> ansible_local['openstack_ansible']['nova'])
> ----------
>
> how to override it without hardcoding it ?