- ---
- - name: 'check if container dir exists'
- stat:
- path: '/var/lib/lxc/{{ vm_name }}'
- register: container_dir
-
- - name: 'check if container exists'
- container_exists:
- name: '{{ vm_name }}'
- register: container_exists
-
- - name: 'check if release is supported'
- assert:
- that: distro in [ 'bullseye', 'sid', 'buster' ]
- msg: 'release {{ distro }} not supported by debian template'
-
- - when: not (container_exists.exists and container_dir.stat.isdir)
- block:
- - name: 'create the lxc container'
- lxc_container:
- name: '{{ vm_name }}'
- backing_store: 'lvm'
- fs_size: '{{ vm_size }}'
- vg_name: '{{ vg_name }}'
- lv_name: 'vm_{{ vm_name }}'
- fs_type: 'xfs'
- container_log: true
- template: 'debian'
- template_options: '--release {{ distro }} --packages=ssh,python3'
- state: 'stopped'
- # suppress messages related to file descriptors
- # leaking when lvm is invoked
- environment:
- LVM_SUPPRESS_FD_WARNINGS: 1
-
- - name: 'deploy container config'
- template:
- src: 'config.j2'
- dest: '/var/lib/lxc/{{ vm_name }}/config'
-
- - name: 'start container'
- lxc_container:
- name: '{{ vm_name }}'
- state: 'started'
- when: auto_start|bool
-
- - name: 'update container config'
- template:
- src: 'config.j2'
- dest: '/var/lib/lxc/{{ vm_name }}/config'
- register: container_config
- notify: 'restart container'
-
- - name: 'set container running state'
- lxc_container:
- name: '{{ vm_name }}'
- state: '{{ container_state }}'
- register: container_running_state
-
- - name: 'update container resolv.conf'
- template:
- src: 'resolv.conf.j2'
- dest: '/etc/resolv.conf'
- delegate_to: '{{ vm_name }}'
- connection: 'ssh_lxc'
-
- - name: 'update container net config'
- copy:
- src: 'interfaces'
- dest: '/etc/network/interfaces'
- delegate_to: '{{ vm_name }}'
- connection: 'ssh_lxc'
- notify: 'restart container'
-
- - meta: 'flush_handlers'
-
- - name: 'add monitoring facts'
- set_fact:
- monitoring_host: '{{ monitoring_host | default([]) }} + [ "{{ vm_name }}" ]'
- delegate_facts: true
- delegate_to: 'status'
|