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

问题描述:

我已经部署了一个带有VMware映像的CoreOS standealone服务器,请参阅此guide以体验CoreOS。通过systemd在CoreOS中启用etcd服务自动启动

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

但我想知道:

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

感谢

正确的方式做,这是cloud-config。特别是对于VMware,您需要通过文档config-drive来提供云配置。

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

+0

谢谢。那么cloud-config是唯一能够自动启动服务的方式吗? – 2014-11-06 04:16:46

+0

具体而言,单元文件是自动启动事物的唯一方式,但您如何创建它们取决于您。您可以在units参数下的cloud-config中提供它们。你也可以把它们放在/ etc/systemd/system的磁盘上。 – Rob 2014-11-07 18:39:40

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

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

 
$ 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 enable fleet.service 

我还会在这里给你的一般警告,我不知道有什么变化到/ etc/systemd /做中长运行,给出了CoreOS的升级系统。升级可能会消除/ etc/systemd /使您处于困惑状态,以至于您的自定义systemd脚本不由cloud-init管理。

+0

虽然这会起作用,但遵循最佳实践并使用云配置要好得多,特别是对于CoreOS。如果你在生产中使用它,那么使用云配置来复制这些是非常有益的。 – 2015-06-02 14:25:43