- name: lxd apt packages are not present apt: name: - lxd - lxd-client state: absent purge: true become: true - name: snapd is installed apt: name: snapd become: true - name: nftables is installed apt: name: nftables become: true when: ansible_distribution_release in ('jammy', 'noble') - name: lxd snap is installed snap: name: lxd channel: latest/stable become: true - name: lxd is initialised command: lxd init --auto become: true - name: allow packets from lxd bridge command: nft insert rule filter openstack-INPUT iif lxdbr0 accept become: true when: ansible_distribution_release in ('jammy', 'noble') - name: current user is in lxd group user: name: "{{ ansible_user }}" groups: lxd append: true become: true - name: reset ssh connection to apply permissions from new group meta: reset_connection - name: charmcraft is installed snap: name: charmcraft channel: "{{ charmcraft_channel | default('latest/stable') }}" classic: true become: true - name: charm is packed command: cmd: "{{ tox_executable }} -e build -- {{ charm_build_name }}" chdir: "{{ zuul.project.src_dir }}" register: res retries: 3 delay: 30 until: > "Charm packed ok" in res.stdout failed_when: '"Failed instance creation" in res.stdout' - name: built charm is available in the zuul log root for auto artifact upload fetch: src: "{{ zuul.project.src_dir }}/charms/{{ charm_build_name }}/{{ charm_build_name }}.charm" dest: "{{ zuul.executor.log_root }}/" flat: true become: true - name: Upload artifacts zuul_return: data: zuul: artifacts: - name: charm url: "{{ charm_build_name }}.charm" metadata: type: charm name: "{{ charm_build_name }}"