Files
linuxkit/projects/swarmd
Ian Campbell 497b07e57b Add a simple qemu guest agent package
We don't actually build it here, we just use the alpine package, which is
already included in the linuxkit/alpine base.

Can be instantiated with a service stanza such as:
  - name: qemu-ga
    image: "linuxkit/qemu-ga:e5fbcf55926f6e1a96b3e49a392e547e8be1022c"
    binds:
      - /dev/vport0p1:/dev/vport0p1

The only functionality I've tested is to report IP addresses to the host (e.g.
via `virsh domifaddr`).

The image is configured to use `/dev/vport0p1` by default. If your VM image is
using a different port number then you can either incorporate the rename into
the bind ("/dev/vport1p1:/dev/vport0p1") or override the command with:
    command: ["/usr/bin/qemu-ga", "-p", "/dev/vport1p1"]

The mdev tool appears to not create the symlinks which udev would provide
`/dev/virtio-ports/org.qemu.guest_agent.0` hence the need to hardcode the
potentially unstable `/dev/vportNp1`, `N` seems to depend on the number and
order of virtio devices in use. I don't know if it is possible to get mdev to
create these links. For reference the udev rule is:

    SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"

See https://wiki.libvirt.org/page/Qemu_guest_agent for more info on the guest
agent.

A suitable stanza is added to `projects/swarmd/swarmd.yml` since that is where
I am using it.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-05-30 13:59:35 +01:00
..
2017-05-12 19:48:52 +01:00
2017-04-04 16:00:03 +01:00

swarmd package

This adds a swarmd package for Moby which contains the standalone swarmkit orchestration daemon (swarmd) and CLI tool (swarmctl).

The package tracks [docker/swarmkit#1965][PR1965] which is a WIP PR adding a containerd executor to swarmkit.

With a suitable moby image (such as swarmd.yml from this directory) something like this should work:

runc exec swarmd swarmctl service create --image docker.io/library/nginx:alpine --name nginx
runc exec swarmd swarmctl service ls

TODO

Currently the swarm state directory needs to be at a path which is identical from the PoV of both the containerd and swarmd processes. For now this means that the swarmkit state is put in /var/lib/containerd/swarmd.

Bootstrapping a cluster needs more invesigation. Tokens and join addresses can currently only be passed on the swarmd command line which is inconvenient for automated image deployment.

Swarmkit [PR 1965][PR1965] also contains a number of TODOs which are not separately listed here.