From f43f9d2370d85fa987e517393ef02e76644abe17 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Evrard Date: Wed, 6 Dec 2017 10:24:18 +0000 Subject: [PATCH] Fix regression for bare metal nodes When running on bare metal, the log folders are created in advance to /openstack/log/aio1-memcached in a /var/log/memcached link. The task ``Create memcached log dir`` would then fail with: ``/var/log/memcached already exists as a link``, because the folder exists, and the exit 1 after the chown would trigger. This replaces the code with a more idempotent code: If a change would be detected by chown -c, it would be listed in the stdout, while the rc would still be 0. An error in chown would still be rc != 0. So we can use this different state to mark the task as changed or not, and handle the create folder case when no folder exists. Change-Id: I904f13d2ae02cd410edc4aaeb83bedd1e14d69fb --- tasks/memcached_config.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tasks/memcached_config.yml b/tasks/memcached_config.yml index eda16aa..d6c630d 100644 --- a/tasks/memcached_config.yml +++ b/tasks/memcached_config.yml @@ -16,19 +16,28 @@ - name: Test for log directory or link shell: | if [ -h "{{ memcached_log | dirname }}" ]; then - chown -h root:root "{{ memcached_log | dirname }}" - chown -R root:root "$(readlink {{ memcached_log | dirname }})" + chown -c -h root:root "{{ memcached_log | dirname }}" + chown -c -R root:root "$(readlink {{ memcached_log | dirname }})" + else exit 1 fi register: log_dir failed_when: false - changed_when: log_dir.rc == 1 + changed_when: log_dir.rc == 1 or "changed" in log_dir.stdout + +- name: Show the changes if verbose + debug: + var: log_dir.stdout_lines + verbosity: 1 + when: "'changed' in log_dir.stdout" - name: Create memcached log dir file: path: "{{ memcached_log | dirname }}" state: directory - when: log_dir.rc != 0 + owner: root + group: root + when: log_dir.rc == 1 - name: Apply memcached config template: