{"id":444,"sha1":"737cc51ddaa09bfaa2bf2c83126658bff5bf876c","playbook":{"id":4,"items":{"plays":104,"tasks":1377,"results":1365,"hosts":2,"files":504,"records":0},"arguments":{"version":null,"verbosity":0,"private_key_file":null,"remote_user":null,"connection":"openstack.osa.ssh","timeout":null,"ssh_common_args":null,"sftp_extra_args":null,"scp_extra_args":null,"ssh_extra_args":null,"ask_pass":false,"connection_password_file":null,"force_handlers":true,"flush_cache":false,"become":false,"become_method":"sudo","become_user":null,"become_ask_pass":false,"become_password_file":null,"tags":["all"],"skip_tags":[],"check":false,"diff":false,"inventory":["/home/zuul/src/opendev.org/openstack/openstack-ansible/inventory/dynamic_inventory.py","/home/zuul/src/opendev.org/openstack/openstack-ansible/inventory/inventory.ini","/etc/openstack_deploy/inventory.ini"],"listhosts":false,"subset":null,"extra_vars":"Not saved by ARA as configured by 'ignored_arguments'","vault_ids":[],"ask_vault_pass":false,"vault_password_files":[],"forks":8,"module_path":null,"syntax":false,"listtasks":false,"listtags":false,"step":false,"start_at_task":null,"args":["setup-openstack.yml"]},"labels":[{"id":1,"name":"check:False"},{"id":2,"name":"tags:all"}],"started":"2025-12-08T13:39:52.478534Z","ended":"2025-12-08T14:14:54.510371Z","duration":"00:35:02.031837","name":null,"ansible_version":"2.18.6","client_version":"1.7.4","python_version":"3.12.3","server_version":"1.7.4","status":"failed","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible/playbooks/setup-openstack.yml","controller":"aio1.openstack.local","user":"root"},"content":"---\n# Copyright 2014, Rackspace US, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n- name: Gather variables for each operating system\n  ansible.builtin.include_vars: \"{{ lookup('first_found', params) }}\"\n  vars:\n    params:\n      files:\n        - \"{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml\"\n        - \"{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml\"\n        - \"{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml\"\n        - \"{{ ansible_facts['distribution'] | lower }}.yml\"\n        - \"{{ ansible_facts['os_family'] | lower }}.yml\"\n      paths:\n        - \"{{ role_path }}/vars\"\n  tags:\n    - always\n\n- name: Fail if service was deployed using a different installation method\n  ansible.builtin.fail:\n    msg: \"Switching installation methods for OpenStack services is not supported\"\n  when:\n    - ansible_local is defined\n    - ansible_local.openstack_ansible is defined\n    - ansible_local.openstack_ansible.cinder is defined\n    - ansible_local.openstack_ansible.cinder.install_method is defined\n    - ansible_local.openstack_ansible.cinder.install_method != cinder_install_method\n\n- name: Gather variables for installation method\n  ansible.builtin.include_vars: \"{{ cinder_install_method }}_install.yml\"\n  tags:\n    - always\n\n- name: Including osa.db_setup role\n  ansible.builtin.include_role:\n    name: openstack.osa.db_setup\n    apply:\n      tags:\n        - common-db\n        - cinder-config\n  when:\n    - _cinder_is_first_play_host\n  vars:\n    _oslodb_setup_host: \"{{ cinder_db_setup_host }}\"\n    _oslodb_ansible_python_interpreter: \"{{ cinder_db_setup_python_interpreter }}\"\n    _oslodb_setup_endpoint: \"{{ cinder_galera_address }}\"\n    _oslodb_setup_port: \"{{ cinder_galera_port }}\"\n    _oslodb_databases:\n      - name: \"{{ cinder_galera_database }}\"\n        users:\n          - username: \"{{ cinder_galera_user }}\"\n            password: \"{{ cinder_container_mysql_password }}\"\n  tags:\n    - always\n\n- name: Including osa.mq_setup role\n  ansible.builtin.include_role:\n    name: openstack.osa.mq_setup\n    apply:\n      tags:\n        - common-mq\n        - cinder-config\n  when:\n    - _cinder_is_first_play_host\n  vars:\n    _oslomsg_rpc_setup_host: \"{{ cinder_oslomsg_rpc_setup_host }}\"\n    _oslomsg_rpc_userid: \"{{ cinder_oslomsg_rpc_userid }}\"\n    _oslomsg_rpc_password: \"{{ cinder_oslomsg_rpc_password }}\"\n    _oslomsg_rpc_vhost: \"{{ cinder_oslomsg_rpc_vhost }}\"\n    _oslomsg_rpc_transport: \"{{ cinder_oslomsg_rpc_transport }}\"\n    _oslomsg_rpc_policies: \"{{ cinder_oslomsg_rpc_policies }}\"\n    _oslomsg_notify_configure: \"{{ cinder_oslomsg_notify_configure }}\"\n    _oslomsg_notify_setup_host: \"{{ cinder_oslomsg_notify_setup_host }}\"\n    _oslomsg_notify_userid: \"{{ cinder_oslomsg_notify_userid }}\"\n    _oslomsg_notify_password: \"{{ cinder_oslomsg_notify_password }}\"\n    _oslomsg_notify_vhost: \"{{ cinder_oslomsg_notify_vhost }}\"\n    _oslomsg_notify_transport: \"{{ cinder_oslomsg_notify_transport }}\"\n    _oslomsg_notify_policies: \"{{ cinder_oslomsg_notify_policies }}\"\n  tags:\n    - always\n\n- name: Including cinder_lvm_config tasks\n  ansible.builtin.include_tasks: cinder_lvm_config.yml\n  args:\n    apply:\n      tags:\n        - cinder-config\n  when:\n    - cinder_services['cinder-volume']['group'] in group_names\n    - cinder_backend_lvm_inuse | bool\n  tags:\n    - cinder-config\n\n- name: Importing cinder_pre_install tasks\n  ansible.builtin.import_tasks: cinder_pre_install.yml\n  tags:\n    - cinder-install\n\n- name: Importing cinder_install tasks\n  ansible.builtin.import_tasks: cinder_install.yml\n  tags:\n    - cinder-install\n\n- name: Create and install SSL certificates\n  ansible.builtin.include_role:\n    name: pki\n    tasks_from: main_certs.yml\n    apply:\n      tags:\n        - cinder-config\n        - pki\n  vars:\n    pki_setup_host: \"{{ cinder_pki_setup_host }}\"\n    pki_dir: \"{{ cinder_pki_dir }}\"\n    pki_create_certificates: \"{{ cinder_user_ssl_cert is not defined and cinder_user_ssl_key is not defined }}\"\n    pki_regen_cert: \"{{ cinder_pki_regen_cert }}\"\n    pki_certificates: \"{{ cinder_pki_certificates }}\"\n    pki_install_certificates: \"{{ cinder_pki_install_certificates }}\"\n  when:\n    - cinder_backend_ssl\n    - cinder_services['cinder-api']['group'] in group_names\n  tags:\n    - always\n\n- name: Refresh local facts\n  ansible.builtin.setup:\n    filter: ansible_local\n    gather_subset: \"!all\"\n  tags:\n    - cinder-config\n\n- name: Including osa.service_setup role\n  ansible.builtin.include_role:\n    name: openstack.osa.service_setup\n    apply:\n      tags:\n        - common-service\n        - cinder-config\n  vars:\n    _service_adminuri_insecure: \"{{ keystone_service_adminuri_insecure }}\"\n    _service_in_ldap: \"{{ cinder_service_in_ldap }}\"\n    _service_setup_host: \"{{ cinder_service_setup_host }}\"\n    _service_setup_host_python_interpreter: \"{{ cinder_service_setup_host_python_interpreter }}\"\n    _service_project_name: \"{{ cinder_service_project_name }}\"\n    _service_endpoints: \"{{ cinder_service_endpoints }}\"\n    _service_catalog: \"{{ cinder_service_catalog }}\"\n    _service_region: \"{{ cinder_service_region }}\"\n    _service_users:\n      - name: \"{{ cinder_service_user_name }}\"\n        password: \"{{ cinder_service_password }}\"\n        role: \"{{ cinder_service_role_names }}\"\n  when:\n    - _cinder_is_first_play_host\n  tags:\n    - always\n\n- name: Importing cinder_post_install tasks\n  ansible.builtin.import_tasks: cinder_post_install.yml\n  tags:\n    - cinder-config\n    - post-install\n\n- name: Run the systemd service role\n  ansible.builtin.import_role:\n    name: systemd_service\n  vars:\n    systemd_service_enabled: \"{{ ((cinder_services['cinder-volume']['group'] in group_names) and (cinder_ceilometer_enabled | bool)) | ternary(true, false) }}\"\n    systemd_service_restart_changed: false\n    systemd_user_name: \"{{ cinder_system_user_name }}\"\n    systemd_group_name: \"{{ cinder_system_group_name }}\"\n    systemd_services:\n      - service_name: \"cinder-volume-usage-audit\"\n        execstarts:\n          - >-\n            /bin/bash -c \"{{ cinder_bin }}/cinder-volume-usage-audit --start_time \\\"$$(date\\s+%%Y-%%m-%%d\\\\\\s%%H:00:00\\s-d\\s-1{{ cinder_volume_usage_audit }})\\\"\n            --end_time \\\"$$(date\\s+%%Y-%%m-%%d\\\\\\s%%H:00:00)\\\" {{\n              (cinder_volume_usage_audit_send_actions_enabled | bool) | ternary('--send_actions', '--nosend_actions')\n            }}\"\n        timer:\n          state: \"{{ ((cinder_services['cinder-volume']['group'] in group_names) and (cinder_ceilometer_enabled | bool)) | ternary('started', 'stopped') }}\"\n          options:\n            OnBootSec: 30min\n            OnCalendar: \"{{ (cinder_volume_usage_audit == 'day') | ternary('daily', cinder_volume_usage_audit + 'ly') }}\"\n            Persistent: true\n  tags:\n    - cinder-config\n\n- name: Including cinder_db_sync tasks\n  ansible.builtin.include_tasks: cinder_db_sync.yml\n  args:\n    apply:\n      tags:\n        - cinder-config\n  when:\n    - _cinder_is_first_api_play_host\n  tags:\n    - cinder-config\n\n- name: Import uwsgi role\n  ansible.builtin.import_role:\n    name: uwsgi\n  vars:\n    uwsgi_services: \"{{ uwsgi_cinder_services }}\"\n    uwsgi_install_method: \"{{ cinder_install_method }}\"\n  tags:\n    - cinder-config\n    - uwsgi\n\n- name: Include ceph_client role\n  ansible.builtin.include_role:\n    name: ceph_client\n    apply:\n      tags:\n        - ceph\n  vars:\n    openstack_service_system_user: \"{{ cinder_system_user_name }}\"\n    openstack_service_venv_bin: \"{{ (cinder_install_method == 'source') | ternary(cinder_bin, '') }}\"\n  when:\n    - cinder_services['cinder-volume']['group'] in group_names or cinder_services['cinder-backup']['group'] in group_names\n    - cinder_backend_rbd_inuse | bool\n  tags:\n    - ceph\n\n# NOTE(jrosser) Tools required by cinder-volumes may have dependancies on librados and librbd\n# so are installed after the ceph_client role is run to ensure that the ceph repos setup\n# is in place.\n- name: Install cinder volumes distro tool packages\n  ansible.builtin.package:\n    name: \"{{ cinder_volume_distro_packages_tools }}\"\n    state: \"{{ cinder_package_state }}\"\n    update_cache: \"{{ (ansible_facts['pkg_mgr'] == 'apt') | ternary('yes', omit) }}\"\n    cache_valid_time: \"{{ (ansible_facts['pkg_mgr'] == 'apt') | ternary(cache_timeout, omit) }}\"\n  register: install_packages\n  until: install_packages  is success\n  retries: 5\n  delay: 2\n  when:\n    - cinder_services['cinder-volume']['group'] in group_names\n\n- name: Flush handlers\n  ansible.builtin.meta: flush_handlers\n\n- name: Including cinder_db_post_setup tasks\n  ansible.builtin.include_tasks: cinder_db_post_setup.yml\n  args:\n    apply:\n      tags:\n        - cinder-config\n  when:\n    - _cinder_is_last_play_host\n  tags:\n    - cinder-config\n\n- name: Importing cinder_backends tasks\n  ansible.builtin.include_tasks: cinder_backends.yml\n  args:\n    apply:\n      tags:\n        - cinder-config\n  when:\n    - groups[cinder_services['cinder-volume']['group']] | length > 0\n    - _cinder_is_last_play_host | bool\n    - cinder_manage_volume_types | bool\n  tags:\n    - cinder-config\n\n- name: Create service and timer for archiving deleted records\n  ansible.builtin.include_role:\n    name: systemd_service\n  vars:\n    systemd_service_restart_changed: false\n    systemd_user_name: \"{{ cinder_system_user_name }}\"\n    systemd_group_name: \"{{ cinder_system_group_name }}\"\n    systemd_tempd_prefix: openstack\n    systemd_slice_name: \"{{ cinder_system_slice_name }}\"\n    systemd_lock_dir: \"{{ cinder_lock_dir }}\"\n    systemd_service_restart: on-abnormal\n    systemd_services:\n      - service_name: \"cinder-purge-deleted\"\n        execstarts:\n          - \"{{ cinder_bin }}/cinder-manage db purge {{ cinder_purge_deleted_before_days }}\"\n        environment:\n          UMASK: \"0640\"\n          UMASK_DIR: \"0750\"\n        program_sandboxing:\n          RuntimeDirectory: \"cinder-purge-deleted\"\n        enabled: \"{{ cinder_purge_deleted }}\"\n        timer:\n          state: \"{{ cinder_purge_deleted | ternary('started', 'stopped') }}\"\n          enabled: \"{{ cinder_purge_deleted }}\"\n          options:\n            OnCalendar: \"{{ cinder_purge_deleted_on_calendar }}\"\n            RandomizedDelaySec: \"{{ cinder_purge_deleted_randomized_delay_sec }}\"\n            Persistent: true\n            Unit: \"cinder-purge-deleted.service\"\n  when:\n    - inventory_hostname == groups[cinder_services['cinder-api']['group']] | first\n","created":"2025-12-08T13:39:56.946961Z","updated":"2025-12-08T13:39:56.947000Z","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible-os_cinder/tasks/main.yml"}