ansible-roles/lxc/tasks/main.yml

69 lines
1.8 KiB
YAML

---
- name: Install lxc tools
ansible.builtin.apt:
name:
- lxc
- debootstrap
- xz-utils
- name: python-lxc is installed (Debian <= 10)
ansible.builtin.apt:
name: python-lxc
state: present
when: ansible_python_version is version('3', '<')
- name: python3-lxc is installed (Debian >= 10)
ansible.builtin.apt:
name: python3-lxc
state: present
when: ansible_python_version is version('3', '>=')
- name: Install additional packages (Debian >= 10)
ansible.builtin.apt:
name:
- apparmor
- lxc-templates
when: ansible_distribution_major_version is version('10', '>=')
- name: Copy LXC default containers configuration
ansible.builtin.template:
src: default.conf
dest: /etc/lxc/
- name: Check if root has subuids
ansible.builtin.command:
cmd: grep '^root:100000:10000$' /etc/subuid
failed_when: False
changed_when: False
register: root_subuids
when: lxc_unprivilegied_containers | bool
- name: Add subuid and subgid ranges to root
ansible.builtin.command:
cmd: usermod -v 100000-199999 -w 100000-109999 root
when:
- lxc_unprivilegied_containers | bool
- root_subuids.rc != 0
- name: Get filesystem options
ansible.builtin.command:
cmd: findmnt --noheadings --target /var/lib/lxc --output OPTIONS
changed_when: False
check_mode: no
register: check_fs_options
- name: Check if options are correct
ansible.builtin.assert:
that:
- "'nodev' not in check_fs_options.stdout"
- "'noexec' not in check_fs_options.stdout"
- "'nosuid' not in check_fs_options.stdout"
msg: "LXC directory is in a filesystem with incompatible options"
- name: Create containers
ansible.builtin.include: create-container.yml
vars:
name: "{{ item.name }}"
release: "{{ item.release }}"
loop: "{{ lxc_containers }}"