Fix Swift for multinode P+ACO deployment

Current Swift playbook is based on the preassumption of AIO setup.
However, if one goes with default multinode setup
(ansible/inventory/multinode), it follows the P + ACO deployment model,
which proxy-server runs on controller nodes where ACO
(account/container/object services) run on storage nodes.

It will break because swift proxy-server no longer has access (it
shouldn't have) to /srv/node path. This change ensure disk mounting part
only happens on storage node. It also moves chown from proxy-server
Dockerfile to rsyncd because no matter with PACO, P+ACO or P+A+C+O
model, rsyncd is always running on each storage node.

Change-Id: I3aa20454902caa9c84d3901bb91e4e4c93ac5f34
Partially-Implements: blueprint swift-physical-disk
Closes-Bug: #1537544
This commit is contained in:
Qiu Yu 2016-01-29 12:06:31 -07:00
parent 1057dcd50a
commit b209da1306
6 changed files with 12 additions and 8 deletions

View File

@ -8,10 +8,16 @@
changed_when: "{{ swift_disk_lookup.stdout.find('localhost | SUCCESS => ') != -1 and
(swift_disk_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
failed_when: swift_disk_lookup.stdout.split()[2] != 'SUCCESS'
when: inventory_hostname in groups['swift-account-server'] or
inventory_hostname in groups['swift-container-server'] or
inventory_hostname in groups['swift-object-server']
- name: Reading data from variable
set_fact:
swift_disks: "{{ (swift_disk_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).disks|from_json }}"
when: inventory_hostname in groups['swift-account-server'] or
inventory_hostname in groups['swift-container-server'] or
inventory_hostname in groups['swift-object-server']
- name: Mounting Swift disks
mount:
@ -21,6 +27,9 @@
state: mounted
name: "{{ swift_devices_mount_point }}/{{ item['fs_label'] }}"
with_items: swift_disks
when: inventory_hostname in groups['swift-account-server'] or
inventory_hostname in groups['swift-container-server'] or
inventory_hostname in groups['swift-object-server']
- name: Starting swift-rsyncd container
kolla_docker:
@ -43,7 +52,6 @@
volumes:
- "{{ node_config_directory }}/swift/:/var/lib/kolla/swift/:ro"
- "{{ node_config_directory }}/swift-proxy-server/:{{ container_config_directory }}/:ro"
- "{{ swift_devices_mount_point }}:{{ swift_devices_mount_point }}"
- "/var/lib/kolla/dev/log:/dev/log"
when: inventory_hostname in groups['swift-proxy-server']

View File

@ -33,6 +33,5 @@ RUN ln -s swift-base-source/* swift \
{% endif %}
COPY config-swift.sh /usr/local/bin/kolla_config_swift
COPY build-swift-ring.py /usr/local/bin/kolla_build_swift_ring
RUN mkdir /opt/swift

View File

@ -10,7 +10,4 @@ RUN yum -y install openstack-swift-proxy \
{% endif %}
{% endif %}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
RUN chmod 755 /usr/local/bin/kolla_extend_start
{{ include_footer }}

View File

@ -1,3 +0,0 @@
#!/bin/bash
source /usr/local/bin/kolla_config_swift

View File

@ -13,4 +13,7 @@ RUN apt-get install -y --no-install-recommends rsync \
{% endif %}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
RUN chmod 755 /usr/local/bin/kolla_extend_start
{{ include_footer }}