Basic CoreOS Setup

Monday, January 15, 2018

Recently I have begun to play with Immutable Hosts, that is host operating systems that are built using a very minimal set of tools, and many times using a containerized method to do so. These hosts include the much loved CoreOS, Project Atomic from RedHat, and RacherOS. CoreOS comes up a lot in the Kubernetes world, so I decided to give it a try.

I’m installing CoreOS on my local hypervisor, so I needed to generate a yaml that would be converted into the ignition.json that is used to do the basic setup of the host. After a little bit of trial and error I came up with a working ignition.json that did a few very basic things. First, it set up my user with an SSH key, password, and sudo rights. Second, it set the hostname of the provisioned machine.

passwd:
  users:
    - name: ronin
      password_hash: "" 
      groups:
        - wheel
      ssh_authorized_keys:
        - <ssh pub key> 
storage:
  files:
    - path: /etc/hostname
      filesystem: root
      mode: 420
      contents:
        inline: hostname

During installation I simply wget this file from a temporary webserver to the installation machine and use it for the installation.

Pretty simple, but important so you can monitor and run reboots on the host machine (unless you let them auto-reboot for updates).

Oh, and Happy New Year!

devopscoreosignition

Migrating to Lambda from Cron Jobs

Google is still good for some things