emil dff665ba36 i-8 Implements image creation and publishing in playbook (#22)
# Issue

This PR implements the-liberated-edge/test_linux_containers#8

# Acceptance criteria

- [x] The existing playbook has been amended, so that it creates and publishes container images to an incus server running locally.
- [x] Container image name has been parameterised and provided as an Ansible variable.

Co-authored-by: Emil <emil@theliberatededge.org>
Reviewed-on: #22
2024-03-07 01:41:39 +00:00

38 lines
1.3 KiB
YAML

---
- name: find current container state
ansible.builtin.command: incus ls {{ lte_container_name }}
register: container_state
changed_when: false
- name: Stop running container
ansible.builtin.command: incus stop {{ lte_container_name }}
when: >
lte_container_state in ['absent', 'stopped'] and
'results' in container_state and
container_state.results[0].rc == 0 and
'RUNNING' in container_state.results[0].stdout
- name: Remove stopped container
ansible.builtin.command: incus rm {{ lte_container_name }}
when: >
lte_container_state == 'absent' and
'results' in container_state and
container_state.results[0].rc == 0 and
'RUNNING' in container_state.results[0].stdout
- name: launch debian bookworm linux container
ansible.builtin.shell:
cmd: |
incus launch \
images:debian/{{ lte_debian_version }}/cloud \
{{ lte_container_name }}
when: >
lte_container_state == 'present' and
container_state.rc == 1 or
'RUNNING' not in container_state.stdout
- name: update apt cache and upgrade system packages
ansible.builtin.shell:
cmd: |
incus exec {{ lte_container_name }} -- \
bash -c \
'/usr/bin/apt update && /usr/bin/apt upgrade -y'
when: lte_container_state == 'present'
changed_when: false