/ liw.yml
liw.yml
  1  - hosts: image
  2    tasks:
  3  
  4      - name: "ensure /etc/resolv.conf exists"
  5        copy:
  6          content: |
  7            nameserver 8.8.8.8
  8          dest: /etc/resolv.conf
  9  
 10      - name: "set up eth0 as a network"
 11        copy:
 12          content: |
 13            [Match]
 14            Name=eth0
 15  
 16            [Network]
 17            DHCP=yes
 18          dest: /etc/systemd/network/external.network
 19  
 20      - name: "enable systemd-networkd"
 21        systemd:
 22          name: systemd-networkd
 23          enabled: yes
 24  
 25      - name: "install apt.liw.fi signing key"
 26        copy:
 27          content: |
 28            {{ apt_liw_fi_signing_key }}
 29          dest: /etc/apt/trusted.gpg.d/apt.liw.fi.asc
 30  
 31      - name: "add the apt.liw.fi APT repository"
 32        apt_repository:
 33          repo: "deb http://apt.liw.fi/debian unstable main"
 34          update_cache: no
 35  
 36      - name: "update apt cache"
 37        shell: |
 38          apt-get update
 39  
 40      - name: "remove ping so it can be re-installed"
 41        apt:
 42          name: iputils-ping
 43          state: absent
 44  
 45      - name: "install tools and build-dependencies"
 46        apt:
 47          name:
 48            - asciidoctor
 49            - bind9-dnsutils
 50            - bind9-host
 51            - build-essential
 52            - cmake
 53            - curl
 54            - daemonize
 55            - debhelper
 56            - devscripts
 57            - dh-python
 58            - genisoimage
 59            - git
 60            - graphviz
 61            - ikiwiki
 62            - iproute2
 63            - iputils-ping
 64            - jq
 65            - libimage-magick-perl
 66            - librsvg2-bin
 67            - libsqlite3-dev
 68            - libssl-dev
 69            - libvirt-dev
 70            - moreutils
 71            - musl-dev
 72            - musl-tools
 73            - netcat-openbsd
 74            - openssh-client
 75            - openssh-server
 76            - pandoc
 77            - perlmagick
 78            - pkg-config
 79            - plantuml
 80            - procps
 81            - python3-cliapp
 82            - python3-coverage-test-runner
 83            - python3-jinja2
 84            - python3-requests
 85            - rsync
 86            - shellcheck
 87            - sq
 88            - sqop
 89            - sqlite3
 90            - subplot
 91            - systemd-resolved
 92            - summain
 93            - tidy
 94            - xorriso
 95  
 96      - name: "configure root to be able to access localhost over SSH"
 97        shell: |
 98          cd /root
 99          install -d .ssh
100          ssh-keygen -t ed25519 -N '' -f .ssh/id_ed25519
101          cp .ssh/id_ed25519.pub .ssh/authorized_keys
102  
103      - name: "ensure /etc/resolv.conf exists"
104        copy:
105          content: |
106            nameserver 8.8.8.8
107          dest: /etc/resolv.conf
108  
109      - name: "install rustup"
110        shell: |
111          set -eu
112  
113          cat /etc/resolv.conf
114          curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh
115          sh /tmp/rustup.sh -y --no-modify-path
116          export PATH="$HOME/.cargo/bin:$PATH"
117  
118          args="--component rust-src --target x86_64-unknown-linux-gnu,x86_64-unknown-linux-musl"
119          rustup set profile default
120  
121          # rustup toolchain install $args 1.80-x86_64-unknown-linux-gnu 
122          # rustup toolchain install $args 1.81-x86_64-unknown-linux-gnu 
123          # rustup toolchain install $args 1.82-x86_64-unknown-linux-gnu 
124          # rustup toolchain install $args 1.83-x86_64-unknown-linux-gnu 
125          # rustup toolchain install $args 1.84-x86_64-unknown-linux-gnu 
126          # rustup toolchain install $args 1.85-x86_64-unknown-linux-gnu 
127          # rustup toolchain install $args 1.86-x86_64-unknown-linux-gnu 
128          # rustup toolchain install $args 1.87-x86_64-unknown-linux-gnu 
129          # rustup toolchain install $args 1.88-x86_64-unknown-linux-gnu 
130          # rustup toolchain install $args 1.89-x86_64-unknown-linux-gnu 
131          rustup toolchain install $args 1.90-x86_64-unknown-linux-gnu 
132          # rustup toolchain install $args 1.91-x86_64-unknown-linux-gnu 
133          rustup toolchain install $args 1.92-x86_64-unknown-linux-gnu 
134          rustup toolchain install $args 1.93-x86_64-unknown-linux-gnu 
135          rustup toolchain install $args 1.94-x86_64-unknown-linux-gnu 
136          rustup toolchain install $args stable-x86_64-unknown-linux-gnu
137  
138          rustup toolchain install $args stable-unknown-linux-gnu
139  
140          rustup default stable
141          rustup show
142          set -eu
143          [ "$HOME/.rustup/toolchains/1.80-x86_64-unknown-linux-gnu" ] || exit 42
144  
145          cargo install rsop
146          cargo install cargo-deny
147          cargo install cargo-mutants
148          cargo install cargo-semver-checks
149  
150      - name: "install Radicle"
151        shell: |
152          curl -sSf https://radicle.xyz/install | sh
153  
154      - name: "clone ikiwiki plugin for Pandoc"
155        git:
156          repo: https://github.com/dubiousjim/pandoc-iki
157          dest: /root/pandoc-iki
158  
159      - name: "create ikiwiki plugin directory"
160        file:
161          state: directory
162          path: /root/.ikiwiki/IkiWiki/Plugin
163  
164      - name: "install Pandoc plugin for ikiwiki"
165        shell: |
166          cp /root/pandoc-iki/pandoc.pm /root/.ikiwiki/IkiWiki/Plugin/pandoc.pm
167  
168    vars:
169      ansible_python_interpreter: /usr/bin/python3
170  
171      apt_liw_fi_signing_key: |
172        -----BEGIN PGP PUBLIC KEY BLOCK-----
173  
174        xjMEZ3UIFRYJKwYBBAHaRw8BAQdA34oqdsK27ZNLmPXUqHoXX3tm9dK5oh8fToCd
175        qdiE4RvCwBEEHxYKAIMFgmd1CBUFiQPDCmgDCwkHCRCHbMaEHWOFpUcUAAAAAAAe
176        ACBzYWx0QG5vdGF0aW9ucy5zZXF1b2lhLXBncC5vcmc76NUR51YnVp7W4bRsQx9R
177        J2yi3A9mwLaVn2zYUGAJewMVCggCmwECHgEWIQR0g82c7caXQJHMI8SHbMaEHWOF
178        pQAACDMA/1BxP7F57KmezrCd78wlPII50FYCcAY6Oy6ktt1ylc+fAP9GywXoAUfE
179        7TMlHN4iI8Pzzsxajg56AnmfMz0veqxdC80rYXB0Lmxpdy5maSBhcmNoaXZlIHNp
180        Z25pbmcga2V5IDxsaXdAbGl3LmZpPsLAFAQTFgoAhgWCZ3UIFQWJA8MKaAMLCQcJ
181        EIdsxoQdY4WlRxQAAAAAAB4AIHNhbHRAbm90YXRpb25zLnNlcXVvaWEtcGdwLm9y
182        Zwkppuyk5O7STFqvYzi8hnzLQ0mti7I4OYg+kRTphghUAxUKCAKZAQKbAQIeARYh
183        BHSDzZztxpdAkcwjxIdsxoQdY4WlAAC0mwD/Q7ABnxn2Jy37CHP9EyFPdVaO5ENU
184        aqPLUVSF1NmlEkEA/1ZmETsa+KXfnSB/GpvetKhl1VCyG/rsSLdEzfvMCRALzjME
185        Z3UIFRYJKwYBBAHaRw8BAQdARSOzKWPyK5rFht5mXWe2DjK15ComDDaSDXdnq4bS
186        C+zCwMUEGBYKATcFgmd1CBUFiQPDCmgJEIdsxoQdY4WlRxQAAAAAAB4AIHNhbHRA
187        bm90YXRpb25zLnNlcXVvaWEtcGdwLm9yZ2W+k0jwxxhPAgUcxHh/2aOuitRgwCi4
188        TiHPJmmS7eCpApsCvqAEGRYKAG8Fgmd1CBUJECC2GYwMFDhHRxQAAAAAAB4AIHNh
189        bHRAbm90YXRpb25zLnNlcXVvaWEtcGdwLm9yZzAZr3RGjXFF1oTW06+FQF0iWuw0
190        ANCOGMzF6rzN9nQBFiEEUbdouiNHX9kqE3VAILYZjAwUOEcAAPUqAP9LSG4ofP10
191        QknSy+Im5ThT+sAjZqjYR1JPASM7db67NAD/aFZttFGxfX6OIK6G2C5pMBEfqDVw
192        qp9RGrAyKlrfiwYWIQR0g82c7caXQJHMI8SHbMaEHWOFpQAAWYQBAPdhxkEY9U2T
193        HdyS9vNunXdEMY9CT7tzrU77Jw9hYZdeAQCdHM2E1hLxMv8urUQQxYrU5Qlz9YMk
194        mULKMX/pX/boDQ==
195        =H+pg
196        -----END PGP PUBLIC KEY BLOCK-----