Skip to content

Latest commit

 

History

History
123 lines (100 loc) · 3.57 KB

1.0_CHANGES.md

File metadata and controls

123 lines (100 loc) · 3.57 KB

1.0 Breaking Changes

This document will outline the breaking changes that are being introduced into the Docker Cookbook as they are merged into master.

It is a work in progress. Edit me!

Current Interface

Recipes

docker::default

Yields a running Docker service.

  • sets sysctls
  • creates graph dir
  • compile time case logic around install_type includes recipes for storage drivers, prerequisite packages, and cgroupfs.
  • includes install_type recipe
  • includes group recipe
  • includes init_type recipe

Recipes for storage drivers exist, creating dependencies, are not used by default, and have deprecation warnings all over the code. README explains that they are optional prerequisites for docker::default.

Attributes

Attribute are set in the key space node['docker'].

  • arch - computed from automatic (ohai) attributes
  • group_members - []
  • init_type - value_for_platform
  • install_type - value_for_platform
  • install_dir - computed from install_type
  • ipv4_forward - bool
  • ipv6_forward - bool
  • logfile - nil
  • version - use by?
  • alert_on_error_action - interesting
  • dependency_packages - value_for_platform_family
  • binary - subkeys calculate version, store binary checksums and urls.
  • package - subkeys action, distribution? name->value_for_platform, and apt repository information
  • source - source install info
  • many more that correspond to docker CLI options. Much deprecation. wow.
  • host - DEPRECATED for bind_socket/bind_uri
  • storage_type - DEPRECATED
  • tls - various

These are apparently for internal consumption by cookbook resources.. I'm not currently sure what they do.

  • docker_daemon_timeout
  • container_cmd_timeout
  • container_init_type - computed from init_type... does what now?
  • image_cmd_timeout
  • registry_cmd_timeout

Resources

docker_image

TODO: blah blah blah

docker_container

TODO: blah blah blah

docker_registry

TODO: blah blah blah

Dependencies

  • 'apt' - # marked deprecation
  • 'aufs', '>= 0.1.1' # marked deprecation
  • 'device-mapper', '>= 0.1.0' # marked deprecation
  • 'git' - for source installation
  • 'golang' - for source installation
  • 'homebrew' - ?
  • 'iptables' - # marked deprecation
  • 'lxc', '>= 1.1.6' # marked deprecation
  • 'modules' - # marked deprecation
  • 'runit' - # runit init_type
  • 'sysctl' - various
  • 'yum-epel' - package install_type

Future interface

Attributes

  • Remove mandatory use of node attributes as input. Databags are very popular, and it should be easy to use things like Zookeeper, Consul, Etcd, or SQL databases to drive settings.

  • Attributes can still be utilized by recipes by passing them into docker_whatever resources as properties.

  • YTBD - what attributes be in 1.0?

Resources

docker_service

  • A docker_service resource (docker_daemon?) will formalize the interface and provide input sanitation. Service management will be sub classed by init_type ala mysql/httpd.

  • Sysctl settings should be set by init providers. Ideally this should be handled in scripts / unit files, so that docker can come back up on a reboot without a chef-client run.

  • Decouple storage driver prerequisites from docker_service.

  • Decouple iptables. It should be included by default in the distros.

  • Remove LXC support

  • install_type support - YTBD. Start with binary, sort package/source/homebrew out later.

docker_image

YTBD - docker-api?

docker_container

YTBD - docker-api?

docker_registry

Recipes

  • WORDS GO HERE

Upgrade Path

  • Upgrading from 0.x to 1.0 - Supported at all?