arizvisa / lolfuzz3

navs: lol.
1 stars 0 forks source link

Enable bootstrapping of an etcd cluster by contacting the bootstrapped master #1

Closed arizvisa closed 5 years ago

arizvisa commented 5 years ago

This PR modifies the ignition directory for master.project to enable bootstrapping an etcd-cluster automatically. Prior to this PR, the etcd cluster had to be manually enabled which required a lot of craziness because the etcd developers apparently chose to store the cluster configuration in the data directory which makes it a real pita to deal with members leaving/returning.

This is done by checking whether the master template matches the bootstrap machine-id. When it does, the etcd.service unit will fail resulting in starting the etcd-master.service unit. If the machine-id doesn't correspond to the bootstrap machine-id, then the etcd-member.service unit will be started.

To deal with the stupidity of membership being stored in the etcd data directory, the etcd-member.service unit simply removes it prior to starting. These units will also manually adjust the runtime membership configuration of the bootstrapped master when stopping/starting services.