我应该在哪里保留CoreOS集群的服务文件,以及如何加载它们?

时间:2015-06-21 04:04:30

标签: deployment docker coreos fleet

我想在负载均衡器后面部署一组CouchDB服务器,并让服务执行神奇的etcd发现。在完成CoreOS quickstart之后,我对如何实际使用我在自己的项目中学到的东西感到茫然,我无法分辨哪些更深入的教程会让我走。

在演示中,我在正在运行的实例中编写了一个服务文件,然后使用fleetctl启动它。我想做的是,在我的项目中将该服务文件置于版本控制之下,比如Dockerfile。如何使用外部服务文件初始化CoreOS集群?

我使用Vagrant在本地开发,但我将尽快部署到AWS。

1 个答案:

答案 0 :(得分:1)

我在aws上快速搜索了coreos,第一个链接是亚马逊产品。他们有很好的文档说明如何做到这一点。从高层次来看,您需要使用cloud-config文件。当你启动你的coreos(即实例化ec2图像)时,你可以在user_data中传递一个文本文件。该文本文件允许您执行一些操作,主要是写文件然后定义单位。单位是您的服务。当您启动ec2实例时,cloud-config文件中的任何内容都将自动启动。

或者,您可以使用cloud_config中的'write_files'指令来创建每个服务。例如,我的云配置包含:

write_files:
  - path: /etc/systemd/system/skydns.service
    permissions: 0644
    owner: core:core
    content: |
      [Unit]
      Description=SkyDNS service discovery
      After=flanneld.service docker.service etcd.service
      Requires=flanneld.service docker.service etcd.service

      [Service]
      Restart=always
      ExecStartPre=-/usr/bin/env docker kill skydns
      ExecStartPre=-/usr/bin/env docker rm skydns
      ExecStartPre=/usr/bin/env docker pull tacodata/skydns-coreos
      ExecStart=/usr/bin/env bash -c '/usr/bin/docker run --name skydns -p 53:53/udp test/skydns-nameservers 8.8.8.8:53 -domain local
      ExecStop=-/usr/bin/docker stop skydns
  [Install]
  WantedBy = multi-user.target

systemd init的东西有一点学习曲线。我不知道cloud-config文件如何与流浪者环境一起玩。许多平台都使用cloud-config,因此,这是一个很好的思考。

-g