openstack-ansible-lxc_hosts/tasks/lxc_cache_create.yml
Jonathan Rosser 7fc5e9950e 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
2021-02-18 09:19:47 +00:00

103 lines
3.2 KiB
YAML

---
# 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.
# Ansible will print a warning since this task calls 'tar' directly and we
# suppress this warning with 'warn: no'.
- 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 }}/"
warn: no
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 cache expiry
shell: "date -d @{{ (cache_time | int) + 31536000 }}"
changed_when: false
register: _cache_expiry
tags:
- skip_ansible_lint
- name: Set expiry
copy:
content: "{{ _cache_expiry.stdout }}"
dest: "{{ cache_path_fact }}/expiry"
- name: Set build ID
copy:
content: "{{ cache_time }}"
dest: "{{ cache_path_fact }}/build_id"
- 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.