From 7fc5e9950ea9e8b379295837fede70f864502439 Mon Sep 17 00:00:00 2001 From: Jonathan Rosser Date: Wed, 17 Feb 2021 16:58:25 +0000 Subject: [PATCH] Remove per-backend container creation tasks files The same can be achieved with two ternary operators. Much less code and duplication. Default lxc_container_backing_store to 'dir' to match the lxc_container_create role and further simplify the code. Change-Id: I59bbbcd8a66970a4fb30339aed457b50fb4dad50 --- defaults/main.yml | 2 +- tasks/lxc_cache_create.yml | 41 +++++++++++++++++++++------- tasks/lxc_container_btrfs.yml | 44 ------------------------------- tasks/lxc_container_lvm.yml | 29 -------------------- tasks/lxc_container_overlayfs.yml | 26 ------------------ tasks/lxc_container_zfs.yml | 27 ------------------- 6 files changed, 33 insertions(+), 136 deletions(-) delete mode 100644 tasks/lxc_container_btrfs.yml delete mode 100644 tasks/lxc_container_lvm.yml delete mode 100644 tasks/lxc_container_overlayfs.yml delete mode 100644 tasks/lxc_container_zfs.yml diff --git a/defaults/main.yml b/defaults/main.yml index 652a942d..1aed7426 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -74,7 +74,7 @@ lxc_container_cache_path: "/var/cache/lxc/download" # The container backing store can be set to 'overlayfs' to use overlayfs # This should only be done for production use with a linux kernel > 3.14 # which is when overlayfs was merged into the mainline kernel -# lxc_container_backing_store: overlayfs +lxc_container_backing_store: dir # The container backing method can be set to 'copy-on-write' to use LVM # snapshot-backed containers when the container backing store is set to diff --git a/tasks/lxc_cache_create.yml b/tasks/lxc_cache_create.yml index a089f4f5..8598740d 100644 --- a/tasks/lxc_cache_create.yml +++ b/tasks/lxc_cache_create.yml @@ -13,10 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -- name: Set backingstore fact - set_fact: - container_backing_store: "{{ lxc_container_backing_store | default('None') }}" - - name: Create LXC cache dir file: path: "{{ cache_path_fact }}" @@ -72,8 +68,35 @@ content: "{{ cache_time }}" dest: "{{ cache_path_fact }}/build_id" -- include_tasks: "{{ item }}" - with_first_found: - - files: - - "lxc_container_{{ container_backing_store }}.yml" - skip: true +- name: Create base container to use for {{ lxc_container_backing_store }}-backed containers + lxc_container: + name: "{{ lxc_container_base_name }}" + template: "download" + state: stopped + backing_store: "{{ (lxc_container_backing_store == 'overlayfs') | ternary('dir', lxc_container_backing_store) }}" + zfs_root: "{{ (lxc_container_backing_store == 'zfs') | ternary(lxc_container_zfs_root_name, omit) }}" + template_options: "{{ lxc_cache_download_template_options }}" + register: cache_download + retries: 3 + delay: 10 + until: cache_download is success + +- name: Set the qgroup limits for btrfs + when: + - lxc_container_backing_store == 'btrfs' + block: + - name: Set the qgroup size|compression limits on machines + command: "btrfs qgroup limit {{ item }} /var/lib/lxc/{{ lxc_container_base_name }}" + changed_when: false + with_items: + - "-e {{ lxc_host_machine_qgroup_space_limit }}" + - "-c {{ lxc_host_machine_qgroup_compression_limit }}" + when: + - not lxc_host_machine_quota_disabled + rescue: + - name: Notice regarding quota system + debug: + msg: >- + There was an error processing the setup of qgroups. Check the system + to ensure they're available otherwise disable the quota system by + setting `lxc_host_machine_quota_disabled` to true. diff --git a/tasks/lxc_container_btrfs.yml b/tasks/lxc_container_btrfs.yml deleted file mode 100644 index 1533cbbd..00000000 --- a/tasks/lxc_container_btrfs.yml +++ /dev/null @@ -1,44 +0,0 @@ ---- -# Copyright 2016, 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: Create base container to use for BTRFS-backed containers - lxc_container: - name: "{{ lxc_container_base_name }}" - template: "download" - state: stopped - backing_store: "btrfs" - template_options: "{{ lxc_cache_download_template_options }}" - register: cache_download - retries: 3 - delay: 10 - until: cache_download is success - -- name: Set the qgroup limits - block: - - name: Set the qgroup size|compression limits on machines - command: "btrfs qgroup limit {{ item }} /var/lib/lxc/{{ lxc_container_base_name }}" - changed_when: false - with_items: - - "-e {{ lxc_host_machine_qgroup_space_limit }}" - - "-c {{ lxc_host_machine_qgroup_compression_limit }}" - when: - - not lxc_host_machine_quota_disabled - rescue: - - name: Notice regarding quota system - debug: - msg: >- - There was an error processing the setup of qgroups. Check the system - to ensure they're available otherwise disable the quota system by - setting `lxc_host_machine_quota_disabled` to true. diff --git a/tasks/lxc_container_lvm.yml b/tasks/lxc_container_lvm.yml deleted file mode 100644 index 25b4cc4b..00000000 --- a/tasks/lxc_container_lvm.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -# Copyright 2016, 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: Create base container to use for LVM-backed copy-on-write containers - lxc_container: - name: "{{ lxc_container_base_name }}" - template: "download" - state: stopped - backing_store: "lvm" - template_options: "{{ lxc_cache_download_template_options }}" - register: cache_download - retries: 3 - delay: 10 - until: cache_download is success - when: - - lxc_container_backing_method is defined - - lxc_container_backing_method == 'copy-on-write' diff --git a/tasks/lxc_container_overlayfs.yml b/tasks/lxc_container_overlayfs.yml deleted file mode 100644 index e16cc4f1..00000000 --- a/tasks/lxc_container_overlayfs.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -# Copyright 2016, 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: Create base container to use for overlayfs containers - lxc_container: - name: "{{ lxc_container_base_name }}" - template: "download" - state: stopped - backing_store: "dir" - template_options: "{{ lxc_cache_download_template_options }}" - register: cache_download - retries: 3 - delay: 10 - until: cache_download is success diff --git a/tasks/lxc_container_zfs.yml b/tasks/lxc_container_zfs.yml deleted file mode 100644 index 24010dec..00000000 --- a/tasks/lxc_container_zfs.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -# Copyright 2016, 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: Create base container to use for ZFS-backed containers - lxc_container: - name: "{{ lxc_container_base_name }}" - template: "download" - state: stopped - backing_store: "zfs" - zfs_root: "{{ lxc_container_zfs_root_name }}" - template_options: "{{ lxc_cache_download_template_options }}" - register: cache_download - retries: 3 - delay: 10 - until: cache_download is success