From 2ba929f1729021afa18143b2fdd5771b5c4876fa Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Fri, 1 Jul 2016 10:40:42 -0500 Subject: [PATCH] Fix swift ring distribute The swift ring distribute task was using the Synchronize module which is broken in ansible 2.1 when using become and delegate_to. The become and delegate_to methods are required to make the module pull from a remote source to another remote source using a specific user. To resolve the issue these tasks have been changed to use the command module. Related-Issue: https://github.com/ansible/ansible/issues/15405 Change-Id: I1f0a14759408e3efd066a8adf4510db688d01437 Closes-bug: #1597475 Signed-off-by: Kevin Carter --- tasks/swift_rings_distribute.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tasks/swift_rings_distribute.yml b/tasks/swift_rings_distribute.yml index c1ae6eac..b906ba51 100644 --- a/tasks/swift_rings_distribute.yml +++ b/tasks/swift_rings_distribute.yml @@ -13,26 +13,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +# NOTE(cloudnull): These methods have been changed to use the rsync command +# instead of the Synchronize module. The change was required due to an upstream +# issue with the module when running with delegate_to and become. Sadly the fix +# does not seem to be trivial. "https://github.com/ansible/ansible/issues/15405" - name: "Get swift rings" - synchronize: - src: "/etc/swift/ring_build_files/" - mode: push - dest: "/etc/swift/" - set_remote_user: False - delegate_to: "{{ groups['swift_hosts'][0] }}" + command: | + rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \ + -avz {{ swift_system_user_name }}@{{ hostvars[groups['swift_hosts'][0]]['ansible_ssh_host'] }}:/etc/swift/ring_build_files/ \ + /etc/swift/ become: yes become_user: "{{ swift_system_user_name }}" tags: - swift-get-rings + - skip_ansible_lint - name: "Get swift rings for backup in ring_build_files directory" - synchronize: - src: "/etc/swift/ring_build_files/" - mode: push - dest: "/etc/swift/ring_build_files/" - set_remote_user: False - delegate_to: "{{ groups['swift_hosts'][0] }}" + command: | + rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \ + -avz {{ swift_system_user_name }}@{{ hostvars[groups['swift_hosts'][0]]['ansible_ssh_host'] }}:/etc/swift/ring_build_files/ \ + /etc/swift/ring_build_files/ become: yes become_user: "{{ swift_system_user_name }}" tags: - swift-get-rings + - skip_ansible_lint