summaryrefslogtreecommitdiff
path: root/roles/openwrt/image/tasks/prepare.yml
blob: 3414371f594289846256f38c4938aa131edb510a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
- name: Create temporary build directory
  tempfile:
    state: directory
  register: tmpdir

- set_fact:
    openwrt_imgbuilder_dir:   "{{ tmpdir.path }}"
    openwrt_imgbuilder_files: "{{ tmpdir.path }}/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"