--- # Copyright 2014, Rackspace US, Inc. # # 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: "Copy the swift_rings.py file" ansible.builtin.template: src: swift_rings.py.j2 dest: "/etc/swift/scripts/swift_rings.py" owner: "{{ swift_system_user_name }}" group: "{{ swift_system_group_name }}" mode: "0700" tags: - swift-install - name: "Build ring-contents files" ansible.builtin.template: src: ring.contents.j2 dest: "/etc/swift/scripts/{{ item.type }}.contents" owner: "{{ swift_system_user_name }}" group: "{{ swift_system_group_name }}" mode: "0640" with_items: - { item: "{{ swift.account | default({}) }}", port: "{{ swift_account_port }}", type: "account" } - { item: "{{ swift.container | default({}) }}", port: "{{ swift_container_port }}", type: "container" } - name: "Build ring-contents files for storage policies" ansible.builtin.template: src: ring.contents.j2 dest: "/etc/swift/scripts/object-{{ item[0].policy.index }}.contents" owner: "{{ swift_system_user_name }}" group: "{{ swift_system_group_name }}" mode: "0640" with_nested: - "{{ swift.storage_policies }}" - [{ type: "object", port: "{{ swift_object_port }}" }] - name: Ensure swift config directory permissions ansible.builtin.file: path: /etc/swift/ state: directory owner: "{{ swift_system_user_name }}" group: "{{ swift_system_group_name }}" recurse: true when: swift_install_method == 'distro' - name: "Build rings for account/container from contents files" ansible.builtin.command: >- /etc/swift/scripts/swift_rings.py -f /etc/swift/scripts/{{ item[0] }}.contents{% if item[1] %} -r {{ item[1] }}{% endif %}{{ (swift_pretend_min_part_hours_passed | bool) | ternary(' -p', '') }} with_nested: - ["account", "container"] - "{{ swift_managed_regions | default([None]) }}" register: swift_rings_create become: true become_user: "{{ swift_system_user_name }}" changed_when: "swift_rings_create.rc not in [1, 2, 3]" failed_when: "swift_rings_create.rc in [1, 2]" args: chdir: /etc/swift/ring_build_files/ - name: "Build rings for storage policies from contents files" ansible.builtin.command: >- /etc/swift/scripts/swift_rings.py -f /etc/swift/scripts/object-{{ item[0].policy.index }}.contents{% if item[1] %} -r {{ item[1] }}{% endif %}{{ (swift_pretend_min_part_hours_passed | bool) | ternary(' -p', '') }} with_nested: - "{{ swift.storage_policies }}" - "{{ swift_managed_regions | default([None]) }}" register: swift_object_rings_create become: true become_user: "{{ swift_system_user_name }}" changed_when: "swift_object_rings_create.rc not in [1, 2, 3]" failed_when: "swift_object_rings_create.rc in [1, 2]" args: chdir: /etc/swift/ring_build_files/