通过systemd在CoreOS中启用etcd服务自动启动

我已经部署了一个带有VMware映像的CoreOS standealone服务器,请按照本指南来体验CoreOS。

部署成功后,我发现我的CoreOS只启用Docker服务,没有etcd和舰队服务运行。 虽然我知道如何使用systemd手动运行etcd和车队服务。 而且我也知道使用适当的cloud-config可以安装CoreOS,其中etcd和fleet service自动启动。

但是我想知道:

  1. 是否可以在/etc/systemd/system放置一个单元文件来使systemd自动启动etcd服务?
  2. 如果可以的话,单元文件的内容是什么?
  3. 如果不能,那么另一种方式是什么?

谢谢

  1. 是。 你必须有一个安装部分的etcd.service和fleet.service。 我已经在我的网站添加了WantedBy = default.target。

  2. 它们已经放置在/ usr / lib64 / systemd / system /目录下的coreos系统上。 您可以将它们复制到/ etc / systemd / system /中:

 $ cp /usr/lib64/systemd/system/etcd.service / etc / systemd / system /
 $ cp /usr/lib64/systemd/system/fleet.service / etc / systemd / system /
 $ echo -e'[Install] \ nWantedBy = default.target >> /etc/systemd/system/fleet.service
 $ echo -e'[Install] \ nWantedBy = default.target >> /etc/systemd/system/etcd.service
 $ systemctl enable etcd.service
 $ systemctl启用fleet.service

在这里,我还会给你一个总体的警告,就是说在CoreOS升级系统的情况下,我不知道/ etc / systemd /做了哪些修改。 升级可能会消除/ etc / systemd /使您处于困惑状态,以至于您的自定义systemd脚本不由cloud-initpipe理。

正确的方法是使用cloud-config 。 特别是对于VMware,您需要通过configuration文件来configuration云configuration。

这是一种痛苦,但它会起作用。