openstack-ansible-lxc_hosts/tasks/lxc_cache_create.yml

88 lines
2.5 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: Set backingstore fact
set_fact:
container_backing_store: "{{ lxc_container_backing_store | default('None') }}"
- 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"
when:
- container_backing_store != 'machinectl'
# 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'. This task is not run when the backend
# is set to "machinectl" because the "machinectl" backend directly clones the
# base image instead of unpacking a container tarball.
- 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
when:
- container_backing_store != 'machinectl'
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"
when:
- container_backing_store != 'machinectl'
- include_tasks: "{{ item }}"
with_first_found:
- files:
- "lxc_container_{{ container_backing_store }}.yml"
skip: true