Skip to main content

A library for managing Docker Swarm.

Project description

Docker Swarm Management

PyPI version Build Status MIT license

Swarm Management is a python application, installed with pip. The application makes it easy to manage a Docker Swarm by configuring a single *.yml file describing which stacks to deploy, and which networks, configs or secrets to create.

Install Or Upgrade

  • pip install --upgrade SwarmManagement

Verify Installation

  • swm -help

Example

  1. Create a swarm.management.yml file describing all properties of the swarm.

    • The swarm.management.yml file contains following properties:
    stacks:
        <stack_name>: <compose_file>
    networks:
        <network_name>: 
            encrypted: false
            driver: overlay
            attachable: true
            options:
              - --ipv6
    configs:
        <config_name>: <config_file>
    secrets:
        <secret_name>: <secret_file>
    volumes:
        <volume_name>:
            driver: local
            driverOptions:
              - type=tmpfs
              - device=tmpfs
              - o=size=100m,uid=1000
    env_files:
        - <environment_file>
    
  2. Manage Swarm:

    • Start Swarm with:
      • -> swm -start
    • Stop Swarm with:
      • -> swm -stop
    • Restart Swarm with:
      • -> swm -restart
    • Wait for all services to start in Swarm with:
      • -> swm -wait
    • Deploy/Update or Remove a single stack:
      • -> swm -stack -deploy <stack_name>
      • -> swm -stack -remove <stack_name>
      • Or deploy/remove all stacks with the all attribute:
        • -> swm -stack -deploy all
        • -> swm -stack -remove all
    • Create or Remove a single network:
      • -> swm -network -create <network_name>
      • -> swm -network -remove <network_name>
      • Or create/remove all networks with the all attribute:
        • -> swm -network -create all
        • -> swm -network -remove all
    • Create or Remove a single config:
      • -> swm -config -create <config_name>
      • -> swm -config -remove <config_name>
      • Or create/remove all configs with the all attribute:
        • -> swm -stack -create all
        • -> swm -stack -remove all
    • Create or Remove a single secret:
      • -> swm -secret -create <secret_name>
      • -> swm -secret -remove <secret_name>
      • Or create/remove all secrets with the all attribute:
        • -> swm -secret -create all
        • -> swm -secret -remove all
    • Create or Remove a single volume:
      • -> swm -volume -create <volume_name>
      • -> swm -volume -remove <volume_name>
      • Or create/remove all volumes with the all attribute:
        • -> swm -volume -create all
        • -> swm -volume -remove all
    • SwarmManagement uses the swarm.management.yml file by default to configure the swarm.
      • Specify a single or multiple *.yml files to use for configuring the swarm using the -f attribute:
        • -> swm -start -f swarm-stacks.yml -f swarm-networks.yml
    • Additional info is found by asking SwarmManagement:
      • -> swm -help
      • -> swm -stack -help
      • -> swm -network -help
      • -> swm -config -help
      • -> swm -secret -help
      • -> swm -volume -help

Please have a look at an example of use here:

Section Features

Start/Stop or Restart Swarm

Deploy the swarm with swm -start, and stop the swarm with swm -stop. Restart the swarm with swm -restart <restart_delay_in_seconds>. The <restart_delay_in_seconds> argument is optional, and defaults to 10 seconds if not given. Wait for all services in the swarm to start with swm -wait <timeout_in_seconds> <service_to_target>. The <timeout_in_seconds> argument is optional, and defaults to 120 seconds if not given. The <service_to_target> argument is optional, and is a list of specific service names to target.

Stacks

The stacks section lists all stacks to be deployed as: <stack_name>: <compose_file>

Networks

The networks section lists all networks to be created as, and each network is created with the following default properties:

  • encrypted: false
  • driver: overlay
  • attachable: true
  • options:
    • <list_of_network_options>

Configs

The configs section lists all configs to be created as: <config_name>: <config_file>

Secrets

The secrets section lists all secrets to be created as: <secret_name>: <secret_file>

Volumes

The volumes section lists all volumes to be created as, and each volumes is created with the following default properties:

  • driver: local
  • driverOptions:
    • <list_of_driver_options>

Environment variables

The env_files section lists all environmnet (.env) files with environment variables to expose. By convention, a present .env file will automatically be loaded.

Prerequisites

Additional Info

Publish New Version.

  1. Configure setup.py with new version.
  2. Install build tools: pip install twine wheel
  3. Build: python setup.py bdist_wheel
  4. Check: twine check dist/*
  5. Publish: twine upload dist/*

Run Unit Tests

  • python -m unittest discover -p Test.py

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

SwarmManagement-1.1.78-py2.py3-none-any.whl (12.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file SwarmManagement-1.1.78-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for SwarmManagement-1.1.78-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 59fbfb964f63a8007e6b9c131320c02f7c64c703315f6d60b595a92dcf53393e
MD5 489f32908b08c2dd2aa8be8e942d6fd0
BLAKE2b-256 5ef9272269ed882e833aa9b9928786694f2c32e9caf5c10292a4c9e6e5600737

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page