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
This commit is contained in:
Jean-Philippe Evrard 2017-12-06 10:24:18 +00:00
parent f23482d536
commit f43f9d2370

View File

@ -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: