--- - 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 | default(inventory_hostname+"vg") }}' 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' #- name: 'install packages' # apt: # pkg: # - 'python3' # - 'ssh' # state: 'present' # update_cache: yes # cache_valid_time: 3600 # delegate_to: '{{ vm_name }}' # connection: 'ssh_lxc' # notify: restart container # Restart container when one in # - container_dns_configuration # - network conf has changed # - install_packages # - container_network # is changed by executing handlers now - meta: flush_handlers - name: 'add monitoring facts' set_fact: monitoring_host: '{{ monitoring_host | default([]) }} + [ "{{ vm_name }}" ]' delegate_facts: true delegate_to: 'status'