Introduction
Introduction#
The following are examples of how somebody can utilise pygmy to customise their environment using a ~/.pygmy.yml file. This file will have a schema which can be imported and the services match the Docker API.
Standard schema for ~/.pygmy.yml
# Defaults is a boolean which indicates all default settings should be inherited.
defaults: true
# Resolvers is the Resolv configuration, you can disable this by setting it to [].
resolvers:
  - Data:   "Contents of the resolvr file/section"
    File:   "filename.conf"
    Folder: "/folderpath"
    Name:   "Human-readable name"
# Services is a hashmap of 
services:
  # The hashmap entry denotes the service name - such as "amazeeio-dnsmasq".
  mycontainer:
    # Config is derrived from the Docker API, intended for container configuration.
    # See https://godoc.org/github.com/docker/docker/api/types/container#Config for the full spec.
    Config:
      # This field is MANDATORY as the value will by default be empty.
      Image: imagename
      # Labels is a key/value pair of labels which will evaluate to string
      # equivelants. For example, Booleans can evaluate to 0/1 or true/false
      # string values depending on the Docker runtime you're using.
      Labels:
        # To enable Pygmy to the configuration, you will need this label.
        # This field is MANDATORY as the value will by default be false.
        pygmy.enable: true
        # You need to give this container a name
        # This field is MANDATORY as the value will by default be empty.
        pygmy.name: mycontainer
        # If you are customising an existing service, you can optionally
        # inherit the defaults if the global defaults are disabled.
        # Setting this value on a non-standard service will do nothing.
        pygmy.defaults: true
        # To display the output when the container starts:
        pygmy.output: true
        # To hide the container from the status messages:
        pygmy.discrete: true
        # To test an endpoint:
        pygmy.url: http://mycontainer.docker.amazee.io
        # To identify the purpose of a container - this is rather specialised so please ignore.
        pygmy.purpose: sshagent
        # To set a weight between 10 and 99 to control the order containers are started:
        pygmy.weight: 50
    # HostConfig is derived from the Docker API, intended for host configuration.
    # See https://godoc.org/github.com/docker/docker/api/types/container#HostConfig for the full spec.
    HostConfig: []
    # NetworkConfig is derived from the Docker API, intended for network configuration.
    # See https://godoc.org/github.com/docker/docker/api/types/network#NetworkingConfig for the full spec.
    NetworkConfig:
      # Hashmap value ideally should be the network name - but could be anything.
      # Results may vary, so try what works.
      amazeeio-network:
        # Every network needs a name.
        Name: amazeeio-network
        # An array of Containers.
        Containers:
          # Container name will tell Pygmy to integrate the container of the specified name should be connected to the docker network.
          Name: amazeeio-haproxy
        Labels:
          # Mandatory for network creation/usage via Pygmy.
          pygmy.network: true
# networks is a hashmap of the API for a NetworkResource.
# See https://godoc.org/github.com/docker/docker/api/types#NetworkResource for the full spec.
networks: []
# volumes is a hashmap of the API for Volumes
# See https://godoc.org/github.com/docker/docker/api/types#Volume for the full spec.
volumes: []
# keys is all of the SSH key paths which you're utilising.
keys:
  - /home/user1/.ssh/id_rsa
  - /home/user2/.ssh/id_rsa
Applied examples#
A suite of examples with a specific purpose are on the way.