aboutsummaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorJames Slagle <jslagle@redhat.com>2017-08-15 15:59:08 -0400
committerEmilien Macchi <emilien@redhat.com>2017-09-02 15:55:27 +0000
commite371ec664638fc104990c5e4cdfacac932468090 (patch)
treea7a056153b3a9361959d5dd0fb142fa0e447575e /docker
parent79bd4a5c576829470ee0605551cee89233732021 (diff)
Separate config_volume for ringbuilder
Use a separate config_volume for swift_ringbuilder puppet_config tasks. This is necessary so that the swift_ringbuilder and swift-storage services don't both rsync files to the same bind mounted directory. The rsync command from docker-puppet.py uses --delete-after, so when they both use the same config_volume, they can end up deleting the files generated by the other (depending on the order of execution). Even though a separate config_volume is used, the rings must still end up in /etc/swift for the swift services containers. An additional container init task is used to copy the ring files into /var/lib/config-data/puppet-generated/swift/etc/swift so that they will be present when the actual swift services containers are started. Change-Id: I05821e76191f64212704ca8e3b7428cda6b3a4b7 Closes-Bug: #1710952 (cherry picked from commit cba00abb7517efa6a8d9b8fb954563204323ffed)
Diffstat (limited to 'docker')
-rw-r--r--docker/services/swift-ringbuilder.yaml23
1 files changed, 20 insertions, 3 deletions
diff --git a/docker/services/swift-ringbuilder.yaml b/docker/services/swift-ringbuilder.yaml
index e4e2c7d2..2a44f703 100644
--- a/docker/services/swift-ringbuilder.yaml
+++ b/docker/services/swift-ringbuilder.yaml
@@ -7,6 +7,10 @@ parameters:
DockerSwiftConfigImage:
description: The container image to use for the swift config_volume
type: string
+ DockerSwiftRingbuilderConfigImage:
+ description: Fake parameter to bypass config_volume yaml validation
+ type: string
+ default: ''
ServiceData:
default: {}
description: Dictionary packing service data
@@ -92,9 +96,22 @@ outputs:
service_config_settings: {get_attr: [SwiftRingbuilderBase, role_data, service_config_settings]}
# BEGIN DOCKER SETTINGS
puppet_config:
- config_volume: 'swift'
+ config_volume: 'swift_ringbuilder'
puppet_tags: exec,fetch_swift_ring_tarball,extract_swift_ring_tarball,ring_object_device,swift::ringbuilder::create,tripleo::profile::base::swift::add_devices,swift::ringbuilder::rebalance,create_swift_ring_tarball,upload_swift_ring_tarball
step_config: *step_config
- config_image: {get_param: DockerSwiftConfigImage}
+ config_image: &swift_ringbuilder_image {get_param: DockerSwiftConfigImage}
kolla_config: {}
- docker_config: {}
+ docker_config:
+ step_3:
+ swift_copy_rings:
+ image: *swift_ringbuilder_image
+ user: root
+ detach: false
+ command:
+ # Use bash to run the cp command so that wildcards can be used
+ - '/bin/bash'
+ - '-c'
+ - 'cp -v -a -t /etc/swift /swift_ringbuilder/etc/swift/*.gz /swift_ringbuilder/etc/swift/*.builder /swift_ringbuilder/etc/swift/backups'
+ volumes:
+ - /var/lib/config-data/puppet-generated/swift/etc/swift:/etc/swift:rw
+ - /var/lib/config-data/swift_ringbuilder:/swift_ringbuilder:ro