roles/openwrt-image: Natively support UCI configuration
[noc.git] / ansible / roles / openwrt-image / tasks / prepare.yml
1 ---
2 - name: Create temporary build directory
3   command: mktemp --tmpdir -d openwrt-{{ inventory_hostname }}.XXXXXX
4   register: tmpdir
5
6 - set_fact:
7     openwrt_imgbuilder_dir:   "{{ tmpdir.stdout }}"
8     openwrt_imgbuilder_files: "{{ tmpdir.stdout }}/files"
9
10 - name: Create the directories for mixins
11   file:
12     path: "{{ item }}"
13     state: directory
14   with_items:
15     - "{{ openwrt_imgbuilder_files }}/etc/config"
16     - "{{ openwrt_mixin | map('dirname') | map('regex_replace', '^', openwrt_imgbuilder_files) | unique | list }}"
17
18
19 - name: Copy mixins in place [1/2]
20   copy:
21     src: "{{ item.file }}"
22     dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}"
23     mode: "{{ item.mode | default(0644) }}"
24   with_dict: "{{ openwrt_mixin }}"
25   when: '"file" in item'
26   loop_control:
27     label: "{{ item.key }}"
28
29 - name: Copy mixins in place [2/2]
30   copy:
31     content: "{{ item.value }}"
32     dest: "{{ openwrt_imgbuilder_files }}/{{ item.key }}"
33     mode: "{{ item.mode | default(0644) }}"
34   with_dict: "{{ openwrt_mixin }}"
35   when: '"content" in item'
36   loop_control:
37     label: "{{ item.key }}"
38
39 - name: Create UCI configuration files
40   template:
41     src: uci.j2
42     dest: "{{ openwrt_imgbuilder_files }}/etc/config/{{ item.key }}"
43     mode: 0644
44     trim_blocks: yes
45 #   force: no  ## TODO: fail when overwriting a file
46   with_dict: "{{ openwrt_uci }}"
47   loop_control:
48     label: "{{ item.key }}"
49
50
51 ### TODO: this just hangs?
52 # - unarchive:
53 #     copy: False
54 #     src:  "{{ openwrt_download_dir }}/{{ openwrt_tarball_name }}"
55 #     dest: "{{ openwrt_imgbuilder_dir }}"
56
57 - name: Decompress the OpenWrt image builder
58   command: >-
59     tar -xf  "{{ openwrt_download_dir }}/{{ openwrt_tarball_name }}"
60     -C   "{{ openwrt_imgbuilder_dir     }}"