ansible: copy resulting openwrt image to correct location
[noc.git] / ansible / tuer.yml
index dcfacab..f7c7bf4 100644 (file)
@@ -1,11 +1,51 @@
+---
 - hosts: torwaechter
   connection: local
+  pre_tasks:
+    - name: Create go directories
+      file:
+        path: .cache/openwrt/tuer/{{ item }}
+        state: directory
+      with_items: [ gopath, gocache ]
+
+    - name: Clone necessary git repositories
+      git:
+        repo: https://github.com/realraum/{{ item }}.git
+        dest: .cache/openwrt/tuer/{{ item }}
+        update: True
+      with_items: [ door_and_sensors ]
+
+    - name: Download dependencies
+      command: go get -d ./...
+      args:
+        chdir: .cache/openwrt/tuer/door_and_sensors/{{ item }}
+      environment:
+        GOCACHE: "{{ playbook_dir }}/.cache/openwrt/tuer/gocache"
+        GOPATH:  "{{ playbook_dir }}/.cache/openwrt/tuer/gopath"
+      with_items: [ door_client, door_daemon, update-keys ]
+
+    - name: Cross-compile Go binaries
+      command: go build -ldflags "-s"
+      args:
+        chdir: .cache/openwrt/tuer/door_and_sensors/{{ item }}
+      environment:
+        GOCACHE: "{{ playbook_dir }}/.cache/openwrt/tuer/gocache"
+        GOPATH:  "{{ playbook_dir }}/.cache/openwrt/tuer/gopath"
+        GO386: 387
+        CGO_ENABLED: 0
+        GOOS: linux
+        GOARCH: 386
+      with_items: [ door_client, door_daemon, update-keys ]
+
   roles:
     - role: openwrt-image
       delegate_to: localhost
       vars:
         openwrt_arch: x86
         openwrt_target: geode
+        openwrt_output_image_suffixes:
+          - combined-ext4.img.gz
+          - combined-squashfs.img
         openwrt_packages_remove:
           - ppp
           - ppp-mod-pppoe
           - tcpdump
         openwrt_packages_extra:
           - git
+
+        openwrt_mixin:
+          files:
+            # Go binaries
+            /usr/local/bin/door_client: "{{ playbook_dir }}/.cache/openwrt/tuer/door_and_sensors/door_client/door_client"
+            /usr/local/bin/door_daemon: "{{ playbook_dir }}/.cache/openwrt/tuer/door_and_sensors/door_daemon/door_daemon"
+            /usr/local/bin/update-keys: "{{ playbook_dir }}/.cache/openwrt/tuer/door_and_sensors/update-keys/update-keys"
+
+          content:
+            /etc/config/network: |
+              config interface 'loopback'
+               option ifname 'lo'
+               option proto 'static'
+               option ipaddr '127.0.0.1'
+               option netmask '255.0.0.0'
+
+              config globals 'globals'
+               option ula_prefix 'fdc9:e01f:83db::/48'
+
+              config interface 'lan'
+               option ifname 'eth0'
+               option accept_ra '0'
+               option proto 'static'
+               option ipaddr  '192.168.33.7'
+               option netmask '255.255.255.0'
+               option gateway '192.168.33.1'
+               option dns     '192.168.33.1'
+               option dns_search 'realraum.at'
+
+            /etc/config/dropbear: |
+              config dropbear
+               option PasswordAuth 'on'
+               option RootPasswordAuth 'off'
+               option Port '22000'
+
+            /etc/dropbear/authorized_keys: |-
+              {% for key in noc_ssh_keys %}
+              {{ key }}
+              {% endfor %}