a781c64319
Adds support to seperate Swift access and replication traffic from other storage traffic. In a deployment where both Ceph and Swift have been deployed, this changes adds functionalality to support optional seperation of storage network traffic. This adds two new network interfaces 'swift_storage_interface' and 'swift_replication_interface' which maintain backwards compatibility. The Swift access network interface is configured via 'swift_storage_interface', which defaults to 'storage_interface'. The Swift replication network interface is configured via 'swift_replication_interface', which defaults to 'swift_storage_interface'. If a separate replication network is used, Kolla Ansible now deploys separate replication servers for the accounts, containers and objects, that listen on this network. In this case, these services handle only replication traffic, and the original account-, container- and object- servers only handle storage user requests. Change-Id: Ib39e081574e030126f2d08f51de89641ddb0d42e
117 lines
3.9 KiB
YAML
117 lines
3.9 KiB
YAML
---
|
|
- name: Get container facts
|
|
kolla_container_facts:
|
|
name:
|
|
- swift_account_server
|
|
- swift_container_server
|
|
- swift_object_server
|
|
- swift_proxy_server
|
|
register: container_facts
|
|
|
|
- name: Checking free port for Swift Account Server
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_storage_interface]['ipv4']['address'] }}"
|
|
port: "{{ swift_account_server_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_account_server'] is not defined
|
|
- inventory_hostname in groups['swift-account-server']
|
|
|
|
- name: Checking free port for Swift Container Server
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_storage_interface]['ipv4']['address'] }}"
|
|
port: "{{ swift_container_server_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_container_server'] is not defined
|
|
- inventory_hostname in groups['swift-container-server']
|
|
|
|
- name: Checking free port for Swift Object Server
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_storage_interface]['ipv4']['address'] }}"
|
|
port: "{{ swift_object_server_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_object_server'] is not defined
|
|
- inventory_hostname in groups['swift-object-server']
|
|
|
|
- name: Checking free port for Swift Account Replication Server
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_replication_interface]['ipv4']['address'] }}"
|
|
port: "{{ swift_account_server_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_account_server'] is not defined
|
|
- inventory_hostname in groups['swift-account-server']
|
|
|
|
- name: Checking free port for Swift Container Replication Server
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_replication_interface]['ipv4']['address'] }}"
|
|
port: "{{ swift_container_server_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_container_server'] is not defined
|
|
- inventory_hostname in groups['swift-container-server']
|
|
|
|
- name: Checking free port for Swift Object Replication Server
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_replication_interface]['ipv4']['address'] }}"
|
|
port: "{{ swift_object_server_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_object_server'] is not defined
|
|
- inventory_hostname in groups['swift-object-server']
|
|
|
|
- name: Checking free port for Rsync
|
|
wait_for:
|
|
host: "{{ hostvars[inventory_hostname]['ansible_' + swift_replication_interface]['ipv4']['address'] }}"
|
|
port: "873"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_object_server'] is not defined
|
|
- inventory_hostname in groups['swift-object-server']
|
|
|
|
- name: Checking free port for Swift Proxy Server
|
|
wait_for:
|
|
host: "{{ api_interface_address }}"
|
|
port: "{{ swift_proxy_server_listen_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['swift_proxy_server'] is not defined
|
|
- inventory_hostname in groups['swift-proxy-server']
|
|
|
|
- name: Checking Swift ring files
|
|
run_once: True
|
|
local_action: stat path="{{ node_custom_config }}/swift/{{ item }}"
|
|
register: swift_ring_files
|
|
with_items:
|
|
- "account.builder"
|
|
- "account.ring.gz"
|
|
- "container.builder"
|
|
- "container.ring.gz"
|
|
- "object.builder"
|
|
- "object.ring.gz"
|
|
|
|
- name: Fail if ring files don't exist
|
|
run_once: True
|
|
local_action: fail msg="Swift ring files do not exist. Ensure .builder and .gz are available for each of account/container/object under {{ node_custom_config }}/swift before deploying Swift."
|
|
with_items: '{{ swift_ring_files.results }}'
|
|
when:
|
|
- item.stat.exists == false
|