docker_swarm – Ansible dynamic inventory plugin for Docker swarm nodes

From Get docs
< Inventory PluginsAnsible/docs/2.8/plugins/inventory/docker swarm


docker_swarm – Ansible dynamic inventory plugin for Docker swarm nodes

New in version 2.8.


Synopsis

  • Reads inventories from the Docker swarm API.
  • Uses a YAML configuration file docker_swarm.[yml|yaml].
  • The plugin returns following groups of swarm nodes: all - all hosts; workers - all worker nodes; managers - all manager nodes; leader - the swarm leader node; nonleaders - all nodes except the swarm leader.

Requirements

The below requirements are needed on the local master node that executes this inventory.

Parameters

Parameter Choices/Defaults Configuration Comments

api_version

string

The version of the Docker API running on the Docker Host.

Defaults to the latest version of the API supported by docker-py.


aliases: docker_api_version

ca_cert

path

Use a CA certificate when performing server verification by providing the path to a CA certificate file.


aliases: tls_ca_cert, cacert_path

client_cert

path

Path to the client's TLS certificate file.


aliases: tls_client_cert, cert_path

client_key

path

Path to the client's TLS key file.


aliases: tls_client_key, key_path

compose

dictionary

Default:

{}

Create vars from jinja2 expressions.

docker_host

string / required

Socket of a Docker swarm manager node (tcp, unix).

Use unix://var/run/docker.sock to connect via local socket.


aliases: docker_url

groups

dictionary

Default:

{}

Add hosts to group based on Jinja2 conditionals.

include_host_uri

boolean

  • no

  • yes

Toggle to return the additional attribute ansible_host_uri which contains the URI of the swarm leader in format of tcp://172.16.0.1:2376. This value may be used without additional modification as value of option docker_host in Docker Swarm modules when connecting via API. The port always defaults to 2376.

include_host_uri_port

integer

Override the detected port number included in ansible_host_uri

keyed_groups

list

Default:

[]

Add hosts to group based on the values of a variable.

plugin

string / required

  • d
  • o
  • c
  • k
  • e
  • r
  • _
  • s
  • w
  • a
  • r
  • m

The name of this plugin, it should always be set to docker_swarm for this plugin to recognize it as it's own.

ssl_version

string

Provide a valid SSL version number. Default value determined by ssl.py module.

strict

boolean

  • no

  • yes

If yes make invalid entries a fatal error, otherwise skip and continue.

Since it is possible to use facts in the expressions they might not always be available and we ignore those errors by default.

timeout

integer

Default:

60

The maximum amount of time in seconds to wait on a response from the API.

If the value is not specified in the task, the value of environment variable DOCKER_TIMEOUT will be used instead. If the environment variable is not set, the default value will be used.


aliases: time_out

tls

boolean

  • no

  • yes

Connect using TLS without verifying the authenticity of the Docker host server.

tls_hostname

string

When verifying the authenticity of the Docker host server, provide the expected name of the server.

validate_certs

boolean

  • no

  • yes

Toggle if connecting using TLS with or without verifying the authenticity of the Docker host server.


aliases: tls_verify

verbose_output

boolean

  • no
  • yes

Toggle to (not) include all available nodes metadata (e.g. Platform, Architecture, OS, EngineVersion)



Examples

# Minimal example using local docker
plugin: docker_swarm
docker_host: unix://var/run/docker.sock

# Minimal example using remote docker
plugin: docker_swarm
docker_host: tcp://my-docker-host:2375

# Example using remote docker with unverified TLS
plugin: docker_swarm
docker_host: tcp://my-docker-host:2376
tls: yes

# Example using remote docker with verified TLS and client certificate verification
plugin: docker_swarm
docker_host: tcp://my-docker-host:2376
validate_certs: yes
ca_cert: /somewhere/ca.pem
client_key: /somewhere/key.pem
client_cert: /somewhere/cert.pem

# Example using constructed features to create groups and set ansible_host
plugin: docker_swarm
docker_host: tcp://my-docker-host:2375
strict: False
keyed_groups:
  # add e.g. x86_64 hosts to an arch_x86_64 group
  - prefix: arch
    key: 'Description.Platform.Architecture'
  # add e.g. linux hosts to an os_linux group
  - prefix: os
    key: 'Description.Platform.OS'
  # create a group per node label
  # e.g. a node labeled w/ "production" ends up in group "label_production"
  # hint: labels containing special characters will be converted to safe names
  - key: 'Spec.Labels'
    prefix: label

Status

Authors

Hint

If you notice any issues in this documentation, you can edit this document to improve it.


Hint

Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up.


© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/plugins/inventory/docker_swarm.html