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 https://discovery.etcd.io/new

  11. Configure your cloud-config script
    $ cat <<EOF > ./cloud-config 
    #cloud-config        
    hostname: coreos1
    ssh_authorized_keys:
      - ssh-rsa <insert your key here>
    users:
      - name: andy
        groups:
          - sudo
          - docker
        coreos-ssh-import-github: sublimino
    coreos:
      etcd:
        name: node001
        discovery: https://discovery.etcd.io/<your-new-etcd-key>
        addr: $public_ipv4:4001
        peer-addr: $public_ipv4:7001
      fleet:
        public-ip: $public_ipv4
        metadata: region=rbx
    units:
      - name: etcd.service
        command: start
      - name: fleet.service
        command: start
      - name: settimezone.service
        command: start
        content: |
          [Unit]
          Description=Set the timezone
          [Service]
          ExecStart=/usr/bin/timedatectl set-timezone UTC
          RemainAfterExit=yes
          Type=oneshot
    write_files:
      - path: /etc/resolv.conf
        permissions: 0644
        owner: root
        content: |
          nameserver 8.8.8.8
      - path: /etc/ntp.conf
        content: |
          # Common pool
          server 0.pool.ntp.org
          server 1.pool.ntp.org
          # - Allow limited rate time queries only
          # - Allow all local queries (IPv4, IPv6)
          restrict default nomodify nopeer noquery limited kod
          restrict 127.0.0.1
          restrict [::1]
    EOF
    
  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 https://raw.github.com/coreos/init/master/bin/coreos-install && \
      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 [email protected]<server-IP>
    

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

Finally, check out the docs: