openstack-ansible-memcached.../tasks/memcached_config.yml
Jean-Philippe Evrard f43f9d2370 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
2017-12-06 10:32:25 +00:00

97 lines
2.9 KiB
YAML

---
# Copyright 2014, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Test for log directory or link
shell: |
if [ -h "{{ memcached_log | dirname }}" ]; then
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 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
owner: root
group: root
when: log_dir.rc == 1
- name: Apply memcached config
template:
src: "{{ memcached_conf_template }}"
dest: "{{ memcached_conf_dest }}"
owner: "root"
group: "root"
mode: "0644"
notify: Restart memcached
- name: Override systemd service file
copy:
src: "{{ memcached_systemd_service }}"
dest: "/etc/systemd/system/memcached.service"
owner: "root"
group: "root"
mode: "0644"
when: memcached_systemd_service is defined
notify: Restart memcached
- name: Create memcached systemd service config dir
file:
path: "/etc/systemd/system/memcached.service.d"
state: "directory"
group: "root"
owner: "root"
mode: "0755"
- name: Apply systemd options
template:
src: "{{ item.src }}"
dest: "/etc/systemd/system/memcached.service.d/{{ item.dest }}"
mode: "0644"
with_items:
- { src: "systemd.limits.conf.j2", dest: "limits.conf" }
- { src: "systemd.restart.conf.j2", dest: "restart.conf" }
- { src: "systemd.slice.conf.j2", dest: "slice.conf" }
- { src: "systemd.without-privatedevices.conf.j2", dest: "without-privatedevices.conf" }
notify:
- Restart memcached
- name: Configure soft file limits
lineinfile:
dest: "/etc/security/limits.conf"
regexp: "^{{ memcached_user }}.*soft.*nofile.*"
state: "present"
line: "{{ memcached_user }}\tsoft\tnofile\t\t{{ memcached_file_limits }}"
insertbefore: "^# End of file"
- name: Configure hard file limits
lineinfile:
dest: "/etc/security/limits.conf"
regexp: "^{{ memcached_user }}.*hard.*nofile.*"
state: "present"
line: "{{ memcached_user }}\thard\tnofile\t\t{{ memcached_file_limits }}"
insertbefore: "^# End of file"