--- - name: Create temporary build directory command: mktemp --tmpdir -d openwrt-{{ inventory_hostname }}.XXXXXX register: tmpdir - set_fact: openwrt_imgbuilder_dir: "{{ tmpdir.stdout }}" openwrt_imgbuilder_files: "{{ tmpdir.stdout }}/files" - name: Create the directories for mixins file: path: "{{ item }}" state: directory mode: '0755' with_items: - "{{ openwrt_download_dir }}/dl/{{ openwrt_arch }}" - "{{ openwrt_imgbuilder_files }}/etc/config" - "{{ openwrt_mixin | map('dirname') | map('regex_replace', '^', openwrt_imgbuilder_files) | unique | list }}" - name: Copy mixins in place [1/2] copy: src: "{{ item.value.file }}" dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}" mode: "{{ item.value.mode | default('0644') }}" with_dict: "{{ openwrt_mixin }}" when: '"file" in item.value' loop_control: label: "{{ item.key }}" - name: Copy mixins in place [2/2] copy: content: "{{ item.value.content }}" dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}" mode: "{{ item.value.mode | default('0644') }}" with_dict: "{{ openwrt_mixin }}" when: '"content" in item.value' loop_control: label: "{{ item.key }}" - name: Generate /etc/fstab mount: fstab: "{{ openwrt_imgbuilder_files }}/etc/fstab" state: present src: "{{ item.src | default(omit) }}" path: "{{ item.path | default(omit) }}" fstype: "{{ item.fstype | default(omit) }}" opts: "{{ item.opts | default(omit) }}" boot: "{{ item.boot | default(omit) }}" dump: "{{ item.dump | default(omit) }}" passno: "{{ item.passno | default(omit) }}" when: openwrt_mounts is defined with_items: "{{ openwrt_mounts }}" loop_control: label: "{{ item.path }}" - name: Create UCI configuration files template: src: uci.j2 dest: "{{ openwrt_imgbuilder_files }}/etc/config/{{ item.key }}" mode: 0644 trim_blocks: yes # force: no ## TODO: fail when overwriting a file with_dict: "{{ openwrt_uci }}" loop_control: label: "{{ item.key }}" - name: Create /etc/passwd template: src: passwd.j2 dest: "{{ openwrt_imgbuilder_files }}/etc/passwd" mode: 0644 trim_blocks: yes when: openwrt_users is defined - name: Create /etc/group template: src: group.j2 dest: "{{ openwrt_imgbuilder_files }}/etc/group" mode: 0644 trim_blocks: yes when: openwrt_groups is defined or openwrt_users is defined - unarchive: copy: False src: "{{ openwrt_download_dir }}/{{ openwrt_tarball_name }}" dest: "{{ openwrt_imgbuilder_dir }}" - name: Symlink the cache repository file: state: link src: "{{ openwrt_download_dir }}/dl/{{ openwrt_arch }}" path: "{{ openwrt_imgbuilder_dir }}/{{ openwrt_tarball_basename }}/dl"