OVH offer powerful servers at quite reasonable cost (last season's servers come at a terrifically low price compared to cloud offerings), but it should be remembered that they don't come with any of the high availability disk or network guarantees EC2 or other cloud providers offer. CoreOS cannot currently install to software RAID (as found on the 2013 server I tested this on) so a regimented backup strategy is essential.

These caveats aside, an OVH server is a good test bed for a CoreOS system. Installing CoreOS is relatively easy.

  1. Navigate to the OVH control panel (Dedicated -> Infrastructure)

  2. Under General information click Reinstall and choose an OVH template

  3. Provision any OS (it's not going be used so something small like Arch Linux (autoinstaller, latest version) is a good choice)

  4. Tick the checkbox Customise the partition configuration

  5. Select 1 from the Disks used for this installation dropdown (to avoid software RAID)

  6. Leave the default partitions, proceed to the final step and click Confirm

  7. After provisioning, click Modify (next to Boot) and set the machine to boot into rescue mode

  8. Restart the machine using the button in the top right corner

  9. ssh into the machine from the password emailed too you

  10. Get an etcd discovery token from

  11. Configure your cloud-config script
    $ cat <<EOF > ./cloud-config 
    hostname: coreos1
      - ssh-rsa <insert your key here>
      - name: andy
          - sudo
          - docker
        coreos-ssh-import-github: sublimino
        name: node001
        addr: $public_ipv4:4001
        peer-addr: $public_ipv4:7001
        public-ip: $public_ipv4
        metadata: region=rbx
      - name: etcd.service
        command: start
      - name: fleet.service
        command: start
      - name: settimezone.service
        command: start
        content: |
          Description=Set the timezone
          ExecStart=/usr/bin/timedatectl set-timezone UTC
      - path: /etc/resolv.conf
        permissions: 0644
        owner: root
        content: |
      - path: /etc/ntp.conf
        content: |
          # Common pool
          # - Allow limited rate time queries only
          # - Allow all local queries (IPv4, IPv6)
          restrict default nomodify nopeer noquery limited kod
          restrict [::1]
  12. Don't forget to edit the hostname, ssh_authorized_keys, name, coreos-ssh-import-github and <your-new-etcd-key> keys above or you won't be able to access the system after its installed

  13. Grab and run the CoreOS installation script

    $ wget && \
      chmod +x coreos-install && \
      ./coreos-install -d /dev/sda -C stable -c ./cloud-config
  14. You can now mount the installation disk to ensure everything has been configured correctly

    $ mount -o subvol=root /dev/sda9 /mnt
    $ cat /mnt/var/lib/coreos-install/user_data
  15. If your config is stored there then the cloud-config file has worked and the installation is complete, so go back to the admin console, click Modify (next to Boot) and set the machine to boot from hard disk

  16. Restart the machine using the button in the top right corner

  17. Once the machine is rebooted, you can ssh in

    $ ssh andy@<server-IP>

(CoreOS also provides a core user to access the machine with, but I prefer individual user accounts)

Finally, check out the docs: