From 16c6d530c686a0bd0a99cbe150be900e984a3b98 Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Mon, 20 May 2019 09:46:10 +0200 Subject: [PATCH] roles: introduce `ceph-container-engine` role This commit splits the current `ceph-container-common` role. This introduces a new role `ceph-container-engine` which handles the tasks specific to the installation of containers tools (docker/podman). This is needed for the ceph-dashboard implementation for 2 main reasons: 1/ Since the ceph-dashboard stack is only containerized, we must install everything needed to run containers even in non containerized deployments. Splitting this role allows us to not have to call the full `ceph-container-common` role which would run a bunch of unneeded tasks that would have been skipped anyway. 2/ The current implementation would have required to run `ceph-container-common` on all ceph-clients nodes which would have been conflicting with 9d3517c670ea2e944565e1a3e150a966b2d399de (we don't want to run ceph-container-common on all client nodes, see mentioned commit for more details) Signed-off-by: Guillaume Abrioux (cherry picked from commit 55420d6253bc6605738fe3f4745e2ba08a6ea5b8) --- ...inerized-to-containerized-ceph-daemons.yml | 21 ++++++++++++++++ roles/ceph-container-common/README.md | 2 +- roles/ceph-container-common/tasks/main.yml | 25 ++++++++----------- .../pre_requisites/remove_ceph_udev_rules.yml | 8 ------ .../tasks/prerequisites.yml | 18 +++++++++++++ roles/ceph-container-engine/README.md | 3 +++ roles/ceph-container-engine/meta/main.yml | 17 +++++++++++++ roles/ceph-container-engine/tasks/main.yml | 4 +++ .../pre_requisites/debian_prerequisites.yml | 0 .../tasks/pre_requisites/prerequisites.yml | 15 +---------- .../vars/Debian.yml | 0 .../vars/RedHat-8.yml | 0 .../vars/RedHat.yml | 0 .../vars/Ubuntu-16.yml | 0 .../vars/Ubuntu-18.yml | 0 site-container.yml.sample | 23 +++++++++++++++++ site.yml.sample | 2 +- 17 files changed, 100 insertions(+), 38 deletions(-) delete mode 100644 roles/ceph-container-common/tasks/pre_requisites/remove_ceph_udev_rules.yml create mode 100644 roles/ceph-container-common/tasks/prerequisites.yml create mode 100644 roles/ceph-container-engine/README.md create mode 100644 roles/ceph-container-engine/meta/main.yml create mode 100644 roles/ceph-container-engine/tasks/main.yml rename roles/{ceph-container-common => ceph-container-engine}/tasks/pre_requisites/debian_prerequisites.yml (100%) rename roles/{ceph-container-common => ceph-container-engine}/tasks/pre_requisites/prerequisites.yml (72%) rename roles/{ceph-container-common => ceph-container-engine}/vars/Debian.yml (100%) rename roles/{ceph-container-common => ceph-container-engine}/vars/RedHat-8.yml (100%) rename roles/{ceph-container-common => ceph-container-engine}/vars/RedHat.yml (100%) rename roles/{ceph-container-common => ceph-container-engine}/vars/Ubuntu-16.yml (100%) rename roles/{ceph-container-common => ceph-container-engine}/vars/Ubuntu-18.yml (100%) diff --git a/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml b/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml index 5e4692b72..efffa8d2f 100644 --- a/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml +++ b/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml @@ -128,6 +128,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common @@ -199,6 +202,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common @@ -313,6 +319,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common @@ -393,6 +402,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common @@ -450,6 +462,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common @@ -509,6 +524,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common @@ -565,6 +583,9 @@ - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + - import_role: name: ceph-container-common diff --git a/roles/ceph-container-common/README.md b/roles/ceph-container-common/README.md index ca230cdf0..0fff59a1a 100644 --- a/roles/ceph-container-common/README.md +++ b/roles/ceph-container-common/README.md @@ -1,3 +1,3 @@ -# Ansible role: ceph-docker +# Ansible role: ceph-container-common Documentation is available at http://docs.ceph.com/ceph-ansible/. diff --git a/roles/ceph-container-common/tasks/main.yml b/roles/ceph-container-common/tasks/main.yml index f6d1334e8..21e1414b6 100644 --- a/roles/ceph-container-common/tasks/main.yml +++ b/roles/ceph-container-common/tasks/main.yml @@ -1,24 +1,24 @@ --- -- name: include pre_requisites/prerequisites.yml - include_tasks: pre_requisites/prerequisites.yml +- name: include prerequisites.yml + include_tasks: prerequisites.yml when: not is_atomic - name: get docker version - command: docker --version - changed_when: false - check_mode: no - register: ceph_docker_version - when: container_binary == 'docker' + block: + - name: get docker version + command: docker --version + changed_when: false + check_mode: no + register: ceph_docker_version -- name: set_fact ceph_docker_version ceph_docker_version.stdout.split - set_fact: - ceph_docker_version: "{{ ceph_docker_version.stdout.split(' ')[2] }}" + - name: set_fact ceph_docker_version ceph_docker_version.stdout.split + set_fact: + ceph_docker_version: "{{ ceph_docker_version.stdout.split(' ')[2] }}" when: container_binary == 'docker' - name: include fetch_image.yml include_tasks: fetch_image.yml tags: fetch_container_image - when: containerized_deployment - name: get ceph version command: > @@ -28,13 +28,10 @@ changed_when: false check_mode: no register: ceph_version - when: containerized_deployment - name: set_fact ceph_version ceph_version.stdout.split set_fact: ceph_version: "{{ ceph_version.stdout.split(' ')[2] }}" - when: containerized_deployment - name: include release.yml include_tasks: release.yml - when: containerized_deployment diff --git a/roles/ceph-container-common/tasks/pre_requisites/remove_ceph_udev_rules.yml b/roles/ceph-container-common/tasks/pre_requisites/remove_ceph_udev_rules.yml deleted file mode 100644 index 3e4ed3c6b..000000000 --- a/roles/ceph-container-common/tasks/pre_requisites/remove_ceph_udev_rules.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: remove ceph udev rules - file: - path: "{{ item }}" - state: absent - with_items: - - /usr/lib/udev/rules.d/95-ceph-osd.rules - - /usr/lib/udev/rules.d/60-ceph-by-parttypeuuid.rules diff --git a/roles/ceph-container-common/tasks/prerequisites.yml b/roles/ceph-container-common/tasks/prerequisites.yml new file mode 100644 index 000000000..c7761c311 --- /dev/null +++ b/roles/ceph-container-common/tasks/prerequisites.yml @@ -0,0 +1,18 @@ +--- +- name: remove ceph udev rules + file: + path: "{{ item }}" + state: absent + with_items: + - /usr/lib/udev/rules.d/95-ceph-osd.rules + - /usr/lib/udev/rules.d/60-ceph-by-parttypeuuid.rules + +- name: ensure tmpfiles.d is present + lineinfile: + path: /etc/tmpfiles.d/ceph-common.conf + line: "d /run/ceph 0770 root root -" + owner: root + group: root + mode: 0644 + state: present + create: yes diff --git a/roles/ceph-container-engine/README.md b/roles/ceph-container-engine/README.md new file mode 100644 index 000000000..6d00c0259 --- /dev/null +++ b/roles/ceph-container-engine/README.md @@ -0,0 +1,3 @@ +# Ansible role: ceph-container-engine + +Documentation is available at http://docs.ceph.com/ceph-ansible/. diff --git a/roles/ceph-container-engine/meta/main.yml b/roles/ceph-container-engine/meta/main.yml new file mode 100644 index 000000000..f560ac2b2 --- /dev/null +++ b/roles/ceph-container-engine/meta/main.yml @@ -0,0 +1,17 @@ +--- +galaxy_info: + company: Red Hat + author: Guillaume Abrioux + description: Handles container installation prerequisites + license: Apache + min_ansible_version: 2.7 + platforms: + - name: Ubuntu + versions: + - xenial + - name: EL + versions: + - 7 + galaxy_tags: + - system +dependencies: [] diff --git a/roles/ceph-container-engine/tasks/main.yml b/roles/ceph-container-engine/tasks/main.yml new file mode 100644 index 000000000..42be16284 --- /dev/null +++ b/roles/ceph-container-engine/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- name: include pre_requisites/prerequisites.yml + include_tasks: pre_requisites/prerequisites.yml + when: not is_atomic \ No newline at end of file diff --git a/roles/ceph-container-common/tasks/pre_requisites/debian_prerequisites.yml b/roles/ceph-container-engine/tasks/pre_requisites/debian_prerequisites.yml similarity index 100% rename from roles/ceph-container-common/tasks/pre_requisites/debian_prerequisites.yml rename to roles/ceph-container-engine/tasks/pre_requisites/debian_prerequisites.yml diff --git a/roles/ceph-container-common/tasks/pre_requisites/prerequisites.yml b/roles/ceph-container-engine/tasks/pre_requisites/prerequisites.yml similarity index 72% rename from roles/ceph-container-common/tasks/pre_requisites/prerequisites.yml rename to roles/ceph-container-engine/tasks/pre_requisites/prerequisites.yml index b865175a0..161238bcb 100644 --- a/roles/ceph-container-common/tasks/pre_requisites/prerequisites.yml +++ b/roles/ceph-container-engine/tasks/pre_requisites/prerequisites.yml @@ -5,9 +5,6 @@ - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml" - "{{ ansible_os_family }}.yml" -- name: include remove_ceph_udev_rules.yml - include_tasks: remove_ceph_udev_rules.yml - - name: debian based systems tasks include_tasks: debian_prerequisites.yml when: @@ -40,14 +37,4 @@ enabled: yes tags: with_pkg - when: container_service_name == 'docker' - -- name: ensure tmpfiles.d is present - lineinfile: - path: /etc/tmpfiles.d/ceph-common.conf - line: "d /run/ceph 0770 root root -" - owner: root - group: root - mode: 0644 - state: present - create: yes + when: container_service_name == 'docker' \ No newline at end of file diff --git a/roles/ceph-container-common/vars/Debian.yml b/roles/ceph-container-engine/vars/Debian.yml similarity index 100% rename from roles/ceph-container-common/vars/Debian.yml rename to roles/ceph-container-engine/vars/Debian.yml diff --git a/roles/ceph-container-common/vars/RedHat-8.yml b/roles/ceph-container-engine/vars/RedHat-8.yml similarity index 100% rename from roles/ceph-container-common/vars/RedHat-8.yml rename to roles/ceph-container-engine/vars/RedHat-8.yml diff --git a/roles/ceph-container-common/vars/RedHat.yml b/roles/ceph-container-engine/vars/RedHat.yml similarity index 100% rename from roles/ceph-container-common/vars/RedHat.yml rename to roles/ceph-container-engine/vars/RedHat.yml diff --git a/roles/ceph-container-common/vars/Ubuntu-16.yml b/roles/ceph-container-engine/vars/Ubuntu-16.yml similarity index 100% rename from roles/ceph-container-common/vars/Ubuntu-16.yml rename to roles/ceph-container-engine/vars/Ubuntu-16.yml diff --git a/roles/ceph-container-common/vars/Ubuntu-18.yml b/roles/ceph-container-engine/vars/Ubuntu-18.yml similarity index 100% rename from roles/ceph-container-common/vars/Ubuntu-18.yml rename to roles/ceph-container-engine/vars/Ubuntu-18.yml diff --git a/site-container.yml.sample b/site-container.yml.sample index a5375e688..42cc6f86c 100644 --- a/site-container.yml.sample +++ b/site-container.yml.sample @@ -70,6 +70,8 @@ name: ceph-infra - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common tags: [with_pkg, fetch_container_image] @@ -114,6 +116,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -161,6 +165,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -203,6 +209,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -245,6 +253,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -287,6 +297,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -329,6 +341,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -371,6 +385,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -413,6 +429,9 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine + when: inventory_hostname == groups.get('clients', ['']) | first or dashboard_enabled - import_role: name: ceph-container-common when: inventory_hostname == groups.get('clients', ['']) | first @@ -458,6 +477,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: @@ -523,6 +544,8 @@ tags: ['ceph_update_config'] - import_role: name: ceph-handler + - import_role: + name: ceph-container-engine - import_role: name: ceph-container-common - import_role: diff --git a/site.yml.sample b/site.yml.sample index 6d8fe23cd..17f4c010f 100644 --- a/site.yml.sample +++ b/site.yml.sample @@ -498,7 +498,7 @@ - import_role: name: ceph-handler - import_role: - name: ceph-container-common + name: ceph-container-engine - import_role: name: ceph-node-exporter when: dashboard_enabled -- 2.39.5