Playbooks to a new Lilik
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

108 lines
2.7 KiB

---
- name: check for lxc container dir
stat:
path: '/var/lib/lxc/{{ vm_name }}'
register: lxc_existance
- name: check for lxc container existance
container_exists:
name: "{{ vm_name }}"
register: container_exists
- name: Check debian release
assert:
that: distro in [ 'bullseye', 'sid', 'buster' ]
msg: "release {{ distro }} not supported by debian template"
- 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
when: not (container_exists.exists and lxc_existance.stat.isdir)
- 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: Read container DNS configuration
slurp:
src: /etc/resolv.conf
delegate_to: "{{ vm_name }}"
connection: ssh_lxc
register: vm_resolv_conf
- debug:
msg: "{{ vm_resolv_conf['content'] | b64decode }}"
verbosity: 2
- name: update container DNS configuration
template:
src: resolv.conf.j2
dest: /etc/resolv.conf
delegate_to: "{{ vm_name }}"
connection: ssh_lxc
- name: update container network configuration
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
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