diff options
Diffstat (limited to 'roles/installer/openwrt/image/tasks/prepare.yml')
-rw-r--r-- | roles/installer/openwrt/image/tasks/prepare.yml | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/roles/installer/openwrt/image/tasks/prepare.yml b/roles/installer/openwrt/image/tasks/prepare.yml new file mode 100644 index 00000000..f685540c --- /dev/null +++ b/roles/installer/openwrt/image/tasks/prepare.yml @@ -0,0 +1,110 @@ +--- +- name: Create temporary build directory + tempfile: + state: directory + register: tmpdir + +- name: set variables needed to build images + set_fact: + openwrt_imgbuilder_dir: "{{ tmpdir.path }}" + openwrt_imgbuilder_files: "{{ tmpdir.path }}/files" + +- name: Create the directories for mixins + loop: "{{ mixin_directories | flatten }}" + vars: + mixin_directories: + - "{{ openwrt_download_dir }}/dl/{{ openwrt_arch }}" + - "{{ openwrt_imgbuilder_files }}/etc/config" + - "{{ openwrt_mixin | map('dirname') | map('regex_replace', '^', openwrt_imgbuilder_files) | unique | list }}" + file: + path: "{{ item }}" + state: directory + mode: '0755' + + +- name: Copy mixins in place [1/3] + loop: "{{ openwrt_mixin | dict2items | selectattr('value.link', 'defined') | list }}" + loop_control: + label: "{{ item.key }}" + file: + dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}" + src: "{{ item.value.link }}" + force: yes + follow: no + state: link + +- name: Copy mixins in place [2/3] + loop: "{{ openwrt_mixin | dict2items | selectattr('value.file', 'defined') | list }}" + loop_control: + label: "{{ item.key }}" + copy: + src: "{{ item.value.file }}" + dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}" + mode: "{{ item.value.mode | default('0644') }}" + +- name: Copy mixins in place [3/3] + loop: "{{ openwrt_mixin | dict2items | selectattr('value.content', 'defined') | list }}" + loop_control: + label: "{{ item.key }}" + copy: + content: "{{ item.value.content }}" + dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}" + mode: "{{ item.value.mode | default('0644') }}" + +- name: Generate /etc/fstab + when: openwrt_mounts is defined + loop: "{{ openwrt_mounts }}" + loop_control: + label: "{{ item.path }}" + 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) }}" + + +- name: Create UCI configuration files + loop: "{{ openwrt_uci | dict2items }}" + loop_control: + label: "{{ item.key }}" + 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 + +- name: Create /etc/passwd + when: openwrt_users is defined + template: + src: passwd.j2 + dest: "{{ openwrt_imgbuilder_files }}/etc/passwd" + mode: 0644 + trim_blocks: yes + +- name: Create /etc/group + when: openwrt_groups is defined or openwrt_users is defined + template: + src: group.j2 + dest: "{{ openwrt_imgbuilder_files }}/etc/group" + mode: 0644 + trim_blocks: yes + +- name: extract image builder tarball + environment: ### TODO: remove once this lands in ansible: https://github.com/ansible/ansible/pull/76542 + LANGUAGE: en_US.utf8 + unarchive: + src: "{{ openwrt_download_dir }}/{{ openwrt_tarball_name }}" + remote_src: yes + 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" |