{"id":129,"sha1":"5068d2638039aaf7423840789c13d838fd6d066b","playbook":{"id":2,"items":{"plays":18,"tasks":316,"results":313,"hosts":2,"files":136,"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-hosts.yml"]},"labels":[{"id":1,"name":"check:False"},{"id":2,"name":"tags:all"}],"started":"2025-12-08T13:27:39.675908Z","ended":"2025-12-08T13:33:13.621332Z","duration":"00:05:33.945424","name":null,"ansible_version":"2.18.6","client_version":"1.7.4","python_version":"3.12.3","server_version":"1.7.4","status":"completed","path":"/home/zuul/src/opendev.org/openstack/openstack-ansible/playbooks/setup-hosts.yml","controller":"aio1.openstack.local","user":"root"},"content":"---\n# Copyright 2017, 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: Create TEMP run dir\n  ansible.builtin.file:\n    path: \"{{ item.systemd_run_dir | default(systemd_run_dir) }}/{{ item.systemd_slice_name | default(systemd_slice_name) | replace(' ', '_') }}\"\n    state: directory\n    owner: \"{{ item.systemd_user_name | default(systemd_user_name) }}\"\n    group: \"{{ item.systemd_group_name | default(systemd_group_name) }}\"\n    mode: \"02755\"\n  loop: \"{{ systemd_services }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      path: \"{{ item.systemd_run_dir | default(systemd_run_dir) }}/{{ item.systemd_slice_name | default(systemd_slice_name) | replace(' ', '_') }}\"\n      owner: \"{{ item.systemd_user_name | default(systemd_user_name) }}\"\n      group: \"{{ item.systemd_group_name | default(systemd_group_name) }}\"\n  tags:\n    - systemd-service\n\n- name: Create TEMP service lock dir\n  ansible.builtin.file:\n    path: \"{{ item.systemd_lock_dir | default(systemd_lock_dir) }}/{{ item.systemd_slice_name | default(systemd_slice_name) | replace(' ', '_') }}\"\n    state: directory\n    owner: \"{{ item.systemd_user_name | default(systemd_user_name) }}\"\n    group: \"{{ item.systemd_group_name | default(systemd_group_name) }}\"\n    mode: \"02755\"\n  loop: \"{{ systemd_services }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      path: \"{{ item.systemd_lock_dir | default(systemd_lock_dir) }}/{{ item.systemd_slice_name | default(systemd_slice_name) | replace(' ', '_') }}\"\n      owner: \"{{ item.systemd_user_name | default(systemd_user_name) }}\"\n      group: \"{{ item.systemd_group_name | default(systemd_group_name) }}\"\n  tags:\n    - systemd-service\n\n- name: Create service.d overrides dir\n  ansible.builtin.file:\n    path: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service.d\"\n    state: directory\n    owner: \"{{ item.systemd_user_name | default(systemd_user_name) }}\"\n    group: \"{{ item.systemd_group_name | default(systemd_group_name) }}\"\n    mode: \"02755\"\n  loop: \"{{ systemd_services | rejectattr('systemd_overrides', 'undefined') }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      path: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service.d\"\n      owner: \"{{ item.systemd_user_name | default(systemd_user_name) }}\"\n      group: \"{{ item.systemd_group_name | default(systemd_group_name) }}\"\n  tags:\n    - systemd-service\n\n- name: Create tmpfiles.d entry\n  ansible.builtin.template:\n    src: \"systemd-tmpfiles.j2\"\n    dest: \"/etc/tmpfiles.d/{{ item.systemd_tempd_prefix | default(systemd_tempd_prefix) }}-{{ item.service_name | replace(' ', '_') }}.conf\"\n  loop: \"{{ systemd_services }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      src: \"systemd-tmpfiles.j2\"\n      dest: \"/etc/tmpfiles.d/{{ item.systemd_tempd_prefix | default(systemd_tempd_prefix) }}-{{ item.service_name | replace(' ', '_') }}.conf\"\n  tags:\n    - systemd-service\n\n- name: Place the systemd service\n  openstack.config_template.config_template:\n    src: \"systemd-service.j2\"\n    dest: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service\"\n    config_overrides: \"{{ item.config_overrides | default(systemd_service_config_overrides) }}\"\n    config_type: \"ini\"\n  loop: \"{{ systemd_services | rejectattr('systemd_overrides_only', 'true') }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      src: \"systemd-service.j2\"\n      dest: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service\"\n      config_overrides: \"{{ item.config_overrides | default(systemd_service_config_overrides) }}\"\n      config_type: \"ini\"\n  notify:\n    - systemd service changed\n  register: systemd_services_result\n  tags:\n    - systemd-service\n\n- name: Place the systemd override\n  ansible.builtin.template:\n    src: \"systemd-service-overrides.j2\"\n    dest: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service.d/override.conf\"\n  loop: \"{{ systemd_services | rejectattr('systemd_overrides', 'undefined') }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      src: \"systemd-service-overrides.j2\"\n      dest: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.service.d/override.conf\"\n  notify:\n    - systemd service changed\n  register: systemd_override_result\n  tags:\n    - systemd-service\n\n- name: Place the systemd timer\n  ansible.builtin.template:\n    src: \"systemd-timer.j2\"\n    dest: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.timer\"\n    mode: \"0644\"\n    owner: \"root\"\n    group: \"root\"\n  loop: \"{{ systemd_services | selectattr('timer', 'defined') }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      src: \"systemd-timer.j2\"\n      dest: \"/etc/systemd/system/{{ item.service_name | replace(' ', '_') }}.timer\"\n  notify:\n    - systemd service changed\n  register: systemd_timer_result\n  tags:\n    - systemd-service\n\n- name: Place the systemd socket\n  ansible.builtin.template:\n    src: \"systemd-socket.j2\"\n    dest: \"/etc/systemd/system/{{ item.1.socket_name | replace(' ', '_') }}.socket\"\n    mode: \"0644\"\n    owner: \"root\"\n    group: \"root\"\n  loop: \"{{ systemd_services | subelements('sockets', skip_missing=True) }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      src: \"systemd-socket.j2\"\n      dest: \"/etc/systemd/system/{{ item.1.socket_name | replace(' ', '_') }}.socket\"\n  notify:\n    - systemd socket changed\n    - systemd service changed\n  register: systemd_socket\n  tags:\n    - systemd-service\n\n- name: Reload systemd on unit change\n  ansible.builtin.systemd:\n    daemon_reload: true\n  when:\n    - (systemd_services_result is changed) or\n      (systemd_timer_result is changed) or\n      (systemd_override_result is changed ) or\n      (systemd_socket.results | selectattr('changed', 'true') | length > 0)\n\n- name: Including systemd_load tasks\n  ansible.builtin.include_tasks: systemd_load.yml\n  vars:\n    _systemd_service_name: \"{{ service.service_name | replace(' ', '_') }}\"\n    loop_label:\n      service_name: \"{{ _systemd_service_name }}\"\n  loop: \"{{ systemd_services }}\"\n  loop_control:\n    loop_var: service\n    label: \"{{ loop_label | to_json }}\"\n  args:\n    apply:\n      tags:\n        - systemd-service\n  tags:\n    - systemd-service\n\n- name: Load socket\n  ansible.builtin.systemd:\n    name: \"{{ item.socket_name | replace(' ', '_') }}.socket\"\n    enabled: \"{{ item.enabled | default(systemd_service_enabled) }}\"\n    state: \"{{ item.state | default(omit) }}\"\n  loop: \"{{ systemd_services | selectattr('sockets', 'defined') | map(attribute='sockets') | flatten(1) }}\"\n  loop_control:\n    label: \"{{ loop_label | to_json }}\"\n  vars:\n    loop_label:\n      name: \"{{ item.socket_name | replace(' ', '_') }}.socket\"\n      enabled: \"{{ item.enabled | default(systemd_service_enabled) }}\"\n      state: \"{{ item.state | default(omit) }}\"\n  tags:\n    - systemd-service\n","created":"2025-12-08T13:30:43.674094Z","updated":"2025-12-08T13:30:43.674136Z","path":"/home/zuul/src/opendev.org/openstack/ansible-role-systemd_service/tasks/main.yml"}