Set proper ownership command performance improvement

By changing the set ownership command from using the file module in combination with a with_items loop to a raw chown command, we can achieve a 98% performance increase here.

On a ceph cluster with a significant amount of directories and files in /var/lib/ceph, the file module has to run checks on ownership of all those directories and files to determine whether a change is needed.

In this case, we just want to explicitly set the ownership of all these directories and files to the ceph_uid

Added context note to all set proper ownership tasks

Signed-off-by: Kevin Jones <kevinjones@redhat.com>
(cherry picked from commit 47bf47c9d8)
pull/4520/head
Kevin Jones 2019-08-10 15:44:32 -04:00 committed by Dimitri Savineau
parent 1821efb3a2
commit b3abe23493
1 changed files with 35 additions and 49 deletions

View File

@ -92,14 +92,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image is search("rhceph") when: ceph_docker_image is search("rhceph")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
- name: check for existing old leveldb file extension (ldb) - name: check for existing old leveldb file extension (ldb)
shell: stat /var/lib/ceph/mon/*/store.db/*.ldb shell: stat /var/lib/ceph/mon/*/store.db/*.ldb
@ -170,14 +168,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
roles: roles:
- ceph-defaults - ceph-defaults
@ -242,14 +238,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image is search("rhceph") when: ceph_docker_image is search("rhceph")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown --verbose -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
- name: check for existing old leveldb file extension (ldb) - name: check for existing old leveldb file extension (ldb)
shell: stat /var/lib/ceph/osd/*/current/omap/*.ldb shell: stat /var/lib/ceph/osd/*/current/omap/*.ldb
@ -341,14 +335,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
roles: roles:
- ceph-defaults - ceph-defaults
@ -385,14 +377,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
roles: roles:
- ceph-defaults - ceph-defaults
@ -429,14 +419,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
roles: roles:
- ceph-defaults - ceph-defaults
@ -477,14 +465,12 @@
ceph_uid: 167 ceph_uid: 167
when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora") when: ceph_docker_image_tag | string is search("centos") or ceph_docker_image is search("rhceph") or ceph_docker_image_tag | string is search("fedora")
# NOTE: changed from file module to raw chown command for performance reasons
# The file module has to run checks on current ownership of all directories and files. This is unnecessary
# as in this case we know we want all owned by ceph user
- name: set proper ownership on ceph directories - name: set proper ownership on ceph directories
file: command: "chown -R {{ ceph_uid }} /var/lib/ceph /etc/ceph"
path: "{{ item }}" changed_when: false
owner: "{{ ceph_uid }}"
recurse: yes
with_items:
- /var/lib/ceph
- /etc/ceph
roles: roles:
- ceph-defaults - ceph-defaults