--- # 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 LXC cache dir file: path: "{{ cache_path_fact }}" state: "directory" recurse: true - name: Remove existing cache archive file: path: "{{ cache_path_fact }}/rootfs.tar.xz" state: "absent" # This is using a shell command because the ansible archive module does not # provide for the options needed to properly create an LXC image archive. - name: Create lxc image shell: | tar -Opc -C {{ lxc_image_cache_path }} . | {{ lxc_xz_bin }} -T 0 -{{ lxc_image_compression_ratio }} -c - > rootfs.tar.xz args: chdir: "{{ cache_path_fact }}/" tags: - skip_ansible_lint - name: Drop container meta-data template: src: "meta-data/{{ item }}" dest: "{{ cache_path_fact }}/{{ item }}" owner: "root" group: "root" mode: "0644" with_items: - config - config.5 - create-message - expiry - templates - name: Set expiry copy: content: "{{ cache_time | int + lxc_image_cache_expiration | community.general.to_seconds | int }}" dest: "{{ cache_path_fact }}/expiry" mode: "0644" - name: Set build ID copy: content: "{{ cache_time | int }}" dest: "{{ cache_path_fact }}/build_id" mode: "0644" - name: Create base container to use for containers with {{ lxc_container_backing_store }} 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.