Can you paste me a sample content of/ etc/ansible/facts.d/openstack_ansible.fact ?
On Fri, Apr 18, 2025 at 2:06 PM Dmitriy Rabotyagov <noonedeadpunk@gmail.com> wrote:
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.
[1] https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.h... [2] https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_vars_facts....
пт, 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 queries
1. 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:
https://opendev.org/openstack/openstack-ansible-os_nova/src/branch/master/ta...
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.
When running the n os-nova playbook, I want to disable need_online_data_migrations in the nova role. I tried this
engineer2024 wrote: 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 ?