]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
roles: introduce `ceph-container-engine` role
authorGuillaume Abrioux <gabrioux@redhat.com>
Mon, 20 May 2019 07:46:10 +0000 (09:46 +0200)
committerDimitri Savineau <savineau.dimitri@gmail.com>
Wed, 22 May 2019 19:24:11 +0000 (15:24 -0400)
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 <gabrioux@redhat.com>
(cherry picked from commit 55420d6253bc6605738fe3f4745e2ba08a6ea5b8)

24 files changed:
infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
roles/ceph-container-common/README.md
roles/ceph-container-common/tasks/main.yml
roles/ceph-container-common/tasks/pre_requisites/debian_prerequisites.yml [deleted file]
roles/ceph-container-common/tasks/pre_requisites/prerequisites.yml [deleted file]
roles/ceph-container-common/tasks/pre_requisites/remove_ceph_udev_rules.yml [deleted file]
roles/ceph-container-common/tasks/prerequisites.yml [new file with mode: 0644]
roles/ceph-container-common/vars/Debian.yml [deleted file]
roles/ceph-container-common/vars/RedHat-8.yml [deleted file]
roles/ceph-container-common/vars/RedHat.yml [deleted file]
roles/ceph-container-common/vars/Ubuntu-16.yml [deleted file]
roles/ceph-container-common/vars/Ubuntu-18.yml [deleted file]
roles/ceph-container-engine/README.md [new file with mode: 0644]
roles/ceph-container-engine/meta/main.yml [new file with mode: 0644]
roles/ceph-container-engine/tasks/main.yml [new file with mode: 0644]
roles/ceph-container-engine/tasks/pre_requisites/debian_prerequisites.yml [new file with mode: 0644]
roles/ceph-container-engine/tasks/pre_requisites/prerequisites.yml [new file with mode: 0644]
roles/ceph-container-engine/vars/Debian.yml [new file with mode: 0644]
roles/ceph-container-engine/vars/RedHat-8.yml [new file with mode: 0644]
roles/ceph-container-engine/vars/RedHat.yml [new file with mode: 0644]
roles/ceph-container-engine/vars/Ubuntu-16.yml [new file with mode: 0644]
roles/ceph-container-engine/vars/Ubuntu-18.yml [new file with mode: 0644]
site-container.yml.sample
site.yml.sample

index 5e4692b7202b539301d97afbb1ccfabafcf5e9fd..efffa8d2f72731798fb19de0d5f7768785c5f992 100644 (file)
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
     - import_role:
         name: ceph-handler
 
+    - import_role:
+        name: ceph-container-engine
+
     - import_role:
         name: ceph-container-common
 
index ca230cdf036bd57cdbcc7d987ef679581fb2f481..0fff59a1ac59c54dca162810b2ac8f83355555f0 100644 (file)
@@ -1,3 +1,3 @@
-# Ansible role: ceph-docker
+# Ansible role: ceph-container-common
 
 Documentation is available at http://docs.ceph.com/ceph-ansible/.
index f6d1334e854703d21c266001ca4299e18cd64f3f..21e1414b64d507909e4e623c2998cb2b4beafe68 100644 (file)
@@ -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: >
   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/debian_prerequisites.yml b/roles/ceph-container-common/tasks/pre_requisites/debian_prerequisites.yml
deleted file mode 100644 (file)
index 726c016..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
----
-- name: uninstall old docker versions
-  package:
-    name: ['docker', 'docker-engine', 'docker.io', 'containerd', 'runc']
-    state: absent
-
-- name: allow apt to use a repository over https (debian)
-  package:
-    name: ['apt-transport-https', 'ca-certificates', 'gnupg', 'software-properties-common']
-    update_cache: yes
-  register: result
-  until: result is succeeded
-
-- name: add docker's gpg key
-  apt_key:
-    url: 'https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg'
-  register: result
-  until: result is succeeded
-
-- name: add docker repository
-  apt_repository:
-    repo: "deb https://download.docker.com/linux/{{ ansible_distribution | lower}} {{ ansible_distribution_release }} stable"
diff --git a/roles/ceph-container-common/tasks/pre_requisites/prerequisites.yml b/roles/ceph-container-common/tasks/pre_requisites/prerequisites.yml
deleted file mode 100644 (file)
index b865175..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
----
-- name: include specific variables
-  include_vars: "{{ item }}"
-  with_first_found:
-    - "{{ 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:
-    - ansible_os_family == 'Debian'
-    - container_package_name == 'docker-ce'
-  tags: with_pkg
-
-# ensure extras enabled for docker
-- name: enable extras on centos
-  yum_repository:
-    name: extras
-    state: present
-    enabled: yes
-  when:
-    - ansible_distribution == 'CentOS'
-    - ceph_docker_enable_centos_extra_repo
-  tags:
-    with_pkg
-
-- name: install container package
-  package:
-    name: ['{{ container_package_name }}', '{{ container_binding_name }}']
-    update_cache: true
-  tags: with_pkg
-
-- name: start container service
-  service:
-    name: '{{ container_service_name }}'
-    state: started
-    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
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 (file)
index 3e4ed3c..0000000
+++ /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 (file)
index 0000000..c7761c3
--- /dev/null
@@ -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-common/vars/Debian.yml b/roles/ceph-container-common/vars/Debian.yml
deleted file mode 100644 (file)
index 3df0671..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-container_package_name: docker-ce
-container_service_name: docker
-container_binding_name: python-docker
diff --git a/roles/ceph-container-common/vars/RedHat-8.yml b/roles/ceph-container-common/vars/RedHat-8.yml
deleted file mode 100644 (file)
index 3a93dbd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-container_package_name: podman
-container_service_name: podman
-container_binding_name: podman
diff --git a/roles/ceph-container-common/vars/RedHat.yml b/roles/ceph-container-common/vars/RedHat.yml
deleted file mode 100644 (file)
index 4a14707..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-container_package_name: docker
-container_service_name: docker
-container_binding_name: python-docker-py
diff --git a/roles/ceph-container-common/vars/Ubuntu-16.yml b/roles/ceph-container-common/vars/Ubuntu-16.yml
deleted file mode 100644 (file)
index b5b7c35..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-container_package_name: docker.io
-container_service_name: docker
-container_binding_name: python-docker
diff --git a/roles/ceph-container-common/vars/Ubuntu-18.yml b/roles/ceph-container-common/vars/Ubuntu-18.yml
deleted file mode 100644 (file)
index f457ca0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-container_package_name: docker.io
-container_service_name: docker
-container_binding_name: python3-docker
diff --git a/roles/ceph-container-engine/README.md b/roles/ceph-container-engine/README.md
new file mode 100644 (file)
index 0000000..6d00c02
--- /dev/null
@@ -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 (file)
index 0000000..f560ac2
--- /dev/null
@@ -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 (file)
index 0000000..42be162
--- /dev/null
@@ -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-engine/tasks/pre_requisites/debian_prerequisites.yml b/roles/ceph-container-engine/tasks/pre_requisites/debian_prerequisites.yml
new file mode 100644 (file)
index 0000000..726c016
--- /dev/null
@@ -0,0 +1,22 @@
+---
+- name: uninstall old docker versions
+  package:
+    name: ['docker', 'docker-engine', 'docker.io', 'containerd', 'runc']
+    state: absent
+
+- name: allow apt to use a repository over https (debian)
+  package:
+    name: ['apt-transport-https', 'ca-certificates', 'gnupg', 'software-properties-common']
+    update_cache: yes
+  register: result
+  until: result is succeeded
+
+- name: add docker's gpg key
+  apt_key:
+    url: 'https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg'
+  register: result
+  until: result is succeeded
+
+- name: add docker repository
+  apt_repository:
+    repo: "deb https://download.docker.com/linux/{{ ansible_distribution | lower}} {{ ansible_distribution_release }} stable"
diff --git a/roles/ceph-container-engine/tasks/pre_requisites/prerequisites.yml b/roles/ceph-container-engine/tasks/pre_requisites/prerequisites.yml
new file mode 100644 (file)
index 0000000..161238b
--- /dev/null
@@ -0,0 +1,40 @@
+---
+- name: include specific variables
+  include_vars: "{{ item }}"
+  with_first_found:
+    - "{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
+    - "{{ ansible_os_family }}.yml"
+
+- name: debian based systems tasks
+  include_tasks: debian_prerequisites.yml
+  when:
+    - ansible_os_family == 'Debian'
+    - container_package_name == 'docker-ce'
+  tags: with_pkg
+
+# ensure extras enabled for docker
+- name: enable extras on centos
+  yum_repository:
+    name: extras
+    state: present
+    enabled: yes
+  when:
+    - ansible_distribution == 'CentOS'
+    - ceph_docker_enable_centos_extra_repo
+  tags:
+    with_pkg
+
+- name: install container package
+  package:
+    name: ['{{ container_package_name }}', '{{ container_binding_name }}']
+    update_cache: true
+  tags: with_pkg
+
+- name: start container service
+  service:
+    name: '{{ container_service_name }}'
+    state: started
+    enabled: yes
+  tags:
+    with_pkg
+  when: container_service_name == 'docker'
\ No newline at end of file
diff --git a/roles/ceph-container-engine/vars/Debian.yml b/roles/ceph-container-engine/vars/Debian.yml
new file mode 100644 (file)
index 0000000..3df0671
--- /dev/null
@@ -0,0 +1,4 @@
+---
+container_package_name: docker-ce
+container_service_name: docker
+container_binding_name: python-docker
diff --git a/roles/ceph-container-engine/vars/RedHat-8.yml b/roles/ceph-container-engine/vars/RedHat-8.yml
new file mode 100644 (file)
index 0000000..3a93dbd
--- /dev/null
@@ -0,0 +1,4 @@
+---
+container_package_name: podman
+container_service_name: podman
+container_binding_name: podman
diff --git a/roles/ceph-container-engine/vars/RedHat.yml b/roles/ceph-container-engine/vars/RedHat.yml
new file mode 100644 (file)
index 0000000..4a14707
--- /dev/null
@@ -0,0 +1,4 @@
+---
+container_package_name: docker
+container_service_name: docker
+container_binding_name: python-docker-py
diff --git a/roles/ceph-container-engine/vars/Ubuntu-16.yml b/roles/ceph-container-engine/vars/Ubuntu-16.yml
new file mode 100644 (file)
index 0000000..b5b7c35
--- /dev/null
@@ -0,0 +1,4 @@
+---
+container_package_name: docker.io
+container_service_name: docker
+container_binding_name: python-docker
diff --git a/roles/ceph-container-engine/vars/Ubuntu-18.yml b/roles/ceph-container-engine/vars/Ubuntu-18.yml
new file mode 100644 (file)
index 0000000..f457ca0
--- /dev/null
@@ -0,0 +1,4 @@
+---
+container_package_name: docker.io
+container_service_name: docker
+container_binding_name: python3-docker
index a5375e6884b9a465f8f30f06a1f2728ae10e2d46..42cc6f86ce6750ec219396fe114e18c4533d430f 100644 (file)
@@ -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]
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
       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
       tags: ['ceph_update_config']
     - import_role:
         name: ceph-handler
+    - import_role:
+        name: ceph-container-engine
     - import_role:
         name: ceph-container-common
     - import_role:
         tags: ['ceph_update_config']
       - import_role:
           name: ceph-handler
+      - import_role:
+          name: ceph-container-engine
       - import_role:
           name: ceph-container-common
       - import_role:
index 6d8fe23cdd2e94dce3b2d9b3378e40f20aa81ee1..17f4c010f7d6b716a777cef24585f61b7cb92662 100644 (file)
         - import_role:
             name: ceph-handler
         - import_role:
-            name: ceph-container-common
+            name: ceph-container-engine
         - import_role:
             name: ceph-node-exporter
       when: dashboard_enabled