[SOLVED] Help with cloud-init on arm64

I’m wondering if anyone can help port the below cloud-init, specifically the apt sources section, to arm and arm64. Is the change as simple as deb [arch=arm] and deb [arch=arm64] respectively?

#cloud-config

apt_reboot_if_required: false
package_update: false
package_upgrade: false

apt:
  sources:
    docker.list:
      source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
      keyid: 0EBFCD88

packages:
  - docker-ce

write_files:
  - path: /etc/systemd/system/docker.service.d/override.conf
    content: |
      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd
  - path: /etc/default/docker
    content: |
      DOCKER_OPTS=""
  - path: /etc/docker/daemon.json
    content: |
      {
        "dns": [ "8.8.8.8", "8.8.4.4" ],
        "hosts": [ "0.0.0.0:2376", "unix:///var/run/docker.sock" ],
        "tls": true,
        "tlsverify": true,
        "tlscacert": "/etc/docker/ca.pem",
        "tlscert": "/etc/docker/server-cert.pem",
        "tlskey": "/etc/docker/server-key.pem"
      }
  - path: /etc/docker/ca.pem
    encoding: b64
    content: {{ .CACert | base64 }}
  - path: /etc/docker/server-cert.pem
    encoding: b64
    content: {{ .TLSCert | base64 }}
  - path: /etc/docker/server-key.pem
    encoding: b64
    content: {{ .TLSKey | base64 }}

runcmd:
  - [ systemctl, daemon-reload ]
  - [ systemctl, restart, docker ]

I’m happy to report that the user-data is ported to arm with a simple, 1-line configuration change. I am using this user-data file with the autoscaler, with success, to provision c1.large.arm servers on packet.net :slight_smile:

apt:
  sources:
    docker.list:
-     source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
+     source: deb [arch=arm64] https://download.docker.com/linux/ubuntu $RELEASE stable
      keyid: 0EBFCD88
1 Like